Skip to content
This repository has been archived by the owner on Jul 1, 2024. It is now read-only.

Commit

Permalink
initial import
Browse files Browse the repository at this point in the history
  • Loading branch information
sdangelo committed Nov 15, 2022
0 parents commit 61d0c69
Show file tree
Hide file tree
Showing 79 changed files with 9,223 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
build
node_modules
package-lock.json
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Brickworks

Brickworks is a music DSP toolkit that supplies you with the fundamental building blocks for creating and enhancing audio engines on any platform.

You can find information and documentation [on the official web page](https://www.orastron.com/brickworks).

## Subfolders

* examples: a synth and an effect example in VST3 and Web Audio formats;
* include: header files;
* src: source files.

## Legal

Copyright (C) 2021, 2022 Orastron srl unipersonale.

Authors: Stefano D'Angelo, Paolo Marrone.

All the code in the repo is released under GPLv3. See the LICENSE file. Alternatively, we offer a commercial license that doesn't restrict usage with respect to time, projects, or developers involved. More details [on the official web page](https://www.orastron.com/brickworks#license-pricing).

The file examples/common/vst3/plugin.cpp contains code from sse2neon (https://github.com/DLTcollab/sse2neon/), which is released under the MIT license. Details in said file.

VST is a registered trademark of Steinberg Media Technologies GmbH.

All trademarks and registered marks are properties of their respective owners. All company, product, and service names used are for identification purposes only. Use of these names, trademarks, and brands does not imply endorsement.
18 changes: 18 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
code:
* blep etc in a module?
* osc post filter init val? osc post filter and one pole init val from input?
* audio rate optional pulse width/slope inputs?
* one pole process const input? (return also if const out)
* optimize triangle generation for constant pulse width
* naming type suffixes math.h vs random.h
* API for buffer fill, scale, offset, zero, copy...?
* web examples construction/destruction
* web effect multichannel in?

build system:
* make makefiles handle paths with spaces etc
* can run su on windows? (system-wide install)
* make autodependencies (.d?)
* make from... directories
* order-only prerequisites to avoid multiple make updates? (https://interrupt.memfault.com/blog/gnu-make-guidelines#order-only-prerequisites)
* clang + Ofast & bulk memory (maybe using old binaryen)
63 changes: 63 additions & 0 deletions examples/common/vst3/controller.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Brickworks
*
* Copyright (C) 2022 Orastron Srl unipersonale
*
* Brickworks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* Brickworks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
*
* File author: Stefano D'Angelo
*/

#include "controller.h"

#include "pluginterfaces/base/conststringtable.h"
#include "base/source/fstreamer.h"

tresult PLUGIN_API Controller::initialize(FUnknown *context) {
tresult r = EditController::initialize(context);
if (r != kResultTrue)
return r;

// add parameters
for (int i = 0; i < NUM_PARAMETERS; i++)
parameters.addParameter(
ConstStringTable::instance()->getString(config_parameters[i].name),
config_parameters[i].units ? ConstStringTable::instance()->getString(config_parameters[i].units) : nullptr,
config_parameters[i].steps,
config_parameters[i].defaultValueUnmapped,
(config_parameters[i].out ? ParameterInfo::kIsReadOnly | ParameterInfo::kIsHidden : ParameterInfo::kCanAutomate)
| (config_parameters[i].bypass ? ParameterInfo::kIsBypass : 0),
i,
0,
config_parameters[i].shortName ? ConstStringTable::instance()->getString(config_parameters[i].shortName) : nullptr
);

return kResultTrue;
}

tresult PLUGIN_API Controller::setComponentState(IBStream *state) {
if (!state)
return kResultFalse;

IBStreamer streamer(state, kLittleEndian);

float f;
for (int i = 0; i < NUM_PARAMETERS; i++) {
if (config_parameters[i].out)
continue;
if (streamer.readFloat(f) == false)
return kResultFalse;
setParamNormalized(i, f);
}

return kResultTrue;
}
44 changes: 44 additions & 0 deletions examples/common/vst3/controller.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Brickworks
*
* Copyright (C) 2022 Orastron Srl unipersonale
*
* Brickworks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* Brickworks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
*
* File author: Stefano D'Angelo
*/

#ifndef _VST3_CONTROLLER_H
#define _VST3_CONTROLLER_H

#include "config.h"
#include "config_vst3.h"

#include "public.sdk/source/vst/vsteditcontroller.h"

using namespace Steinberg;
using namespace Steinberg::Vst;

class Controller : EditController {
public:
static FUnknown *createInstance(void *context) {
return (IEditController *) new Controller();
}

tresult PLUGIN_API initialize(FUnknown *context) SMTG_OVERRIDE;
tresult PLUGIN_API setComponentState(IBStream *state) SMTG_OVERRIDE;

private:

};

#endif
52 changes: 52 additions & 0 deletions examples/common/vst3/entry.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Brickworks
*
* Copyright (C) 2022 Orastron Srl unipersonale
*
* Brickworks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* Brickworks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
*
* File author: Stefano D'Angelo
*/

#include "plugin.h"
#include "controller.h"

#include "pluginterfaces/vst/ivstaudioprocessor.h"
#include "pluginterfaces/vst/ivsteditcontroller.h"
#include "public.sdk/source/main/pluginfactory.h"

BEGIN_FACTORY_DEF(COMPANY_NAME, COMPANY_WEBSITE, COMPANY_MAILTO)
DEF_CLASS2(
INLINE_UID(PLUGIN_GUID_1, PLUGIN_GUID_2, PLUGIN_GUID_3, PLUGIN_GUID_4), // GUID
PClassInfo::kManyInstances, // cardinality
kVstAudioEffectClass, // VST component class
PLUGIN_NAME, // plugin name
Vst::kDistributable, // plugin and controller can work on different computers
PLUGIN_SUBCATEGORY, // VST subcategory
PLUGIN_VERSION, // plugin version
kVstVersionString, // VST version
Plugin::createInstance // instatiation function pointer
)

DEF_CLASS2(
INLINE_UID(CTRL_GUID_1, CTRL_GUID_2, CTRL_GUID_3, CTRL_GUID_4), // GUID
PClassInfo::kManyInstances, // cardinality
kVstComponentControllerClass, // VST component class
PLUGIN_NAME "Controller", // controller name
0, // unused
"", // unused
PLUGIN_VERSION, // plugin version
kVstVersionString, // VST version
Controller::createInstance // instatiation function pointer
)

END_FACTORY
Loading

0 comments on commit 61d0c69

Please sign in to comment.