├── example
├── bin
│ └── data
│ │ ├── .gitkeep
│ │ └── AudioUnitPresets
│ │ ├── chain1
│ │ ├── wiggly
│ │ │ ├── My_Filter.aupreset
│ │ │ ├── My_Reverb.aupreset
│ │ │ └── My_Synth.aupreset
│ │ └── rhythmic
│ │ │ ├── My_Filter.aupreset
│ │ │ ├── My_Reverb.aupreset
│ │ │ └── My_Synth.aupreset
│ │ ├── chain2
│ │ └── broken
│ │ │ ├── Filter_2.aupreset
│ │ │ ├── Filter_3.aupreset
│ │ │ ├── Reverb_2.aupreset
│ │ │ └── Noise_2.aupreset
│ │ ├── Main_Compressor.aupreset
│ │ └── Mixer.aupreset
├── addons.make
├── example.xcodeproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── example Debug.xcscheme
│ │ └── example Release.xcscheme
├── src
│ ├── main.cpp
│ ├── ofApp.h
│ └── ofApp.cpp
├── Makefile
├── Project.xcconfig
├── openFrameworks-Info.plist
└── config.make
├── images
├── finder.png
└── ofxAudioUnitManager.png
├── ofxaddons_thumbnail.png
├── src
├── AudioUnitManagement
│ ├── aumManagedAudioUnitMixer.cpp
│ ├── aumManagedAudioUnitMixer.h
│ ├── aumMonitorableAudioUnit.h
│ ├── aumMonitorableAudioUnit.cpp
│ ├── aumManagedAudioUnit.h
│ ├── aumAudioUnitChain.h
│ ├── aumManagedAudioUnit.cpp
│ └── aumAudioUnitChain.cpp
├── aumUtils.h
├── Handlers
│ ├── aumMidi.cpp
│ ├── aumMidi.h
│ ├── aumUserInterface.h
│ ├── aumPresets.h
│ ├── aumUserInterface.cpp
│ └── aumPresets.cpp
├── Params
│ ├── aumParams.h
│ ├── aum_TALNoiseMaker_Params.h
│ └── aum_Massive_Params.h
├── aumUtils.cpp
├── ofxAudioUnitManager.h
├── AudioUnits
│ ├── aumUnit_AULowPassFilter.h
│ ├── aumUnit_AUMatrixReverb.h
│ ├── aumUnit_Generic.h
│ ├── aumUnit_TALNoiseMaker.h
│ └── aumUnit_Massive.h
└── ofxAudioUnitManager.cpp
├── .gitignore
└── README.md
/example/bin/data/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/example/addons.make:
--------------------------------------------------------------------------------
1 | ofxAudioUnit
2 | ofxAudioUnitManager
3 | ofxBpm
4 | ofxMidi
5 |
--------------------------------------------------------------------------------
/images/finder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microcosm/ofxAudioUnitManager/HEAD/images/finder.png
--------------------------------------------------------------------------------
/ofxaddons_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microcosm/ofxAudioUnitManager/HEAD/ofxaddons_thumbnail.png
--------------------------------------------------------------------------------
/images/ofxAudioUnitManager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microcosm/ofxAudioUnitManager/HEAD/images/ofxAudioUnitManager.png
--------------------------------------------------------------------------------
/example/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumManagedAudioUnitMixer.cpp:
--------------------------------------------------------------------------------
1 | #include "aumManagedAudioUnitMixer.h"
2 |
3 | void aumManagedAudioUnitMixer::setup(string _name){
4 | name = _name;
5 | }
6 |
7 | string aumManagedAudioUnitMixer::getName(){
8 | return name;
9 | }
10 |
11 | ofxAudioUnitMixer* aumManagedAudioUnitMixer::getUnit(){
12 | return &unit;
13 | }
14 |
--------------------------------------------------------------------------------
/src/aumUtils.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumMidi.h"
4 |
5 | class aumUtils {
6 |
7 | public:
8 | void setup();
9 | string executeMidiCommand(string command, ofxMidiOut *midi);
10 | int midiNote(string arg);
11 | protected:
12 | void loadNotesMap();
13 | int octave, note;
14 | map notes;
15 | };
16 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumManagedAudioUnitMixer.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 |
4 | #ifdef __APPLE__
5 | #include "ofxAudioUnit.h"
6 | #endif
7 |
8 | class aumManagedAudioUnitMixer {
9 |
10 | public:
11 | void setup(string _name);
12 | string getName();
13 | ofxAudioUnitMixer* getUnit();
14 | protected:
15 | ofxAudioUnitMixer unit;
16 | string name;
17 | };
18 |
--------------------------------------------------------------------------------
/src/Handlers/aumMidi.cpp:
--------------------------------------------------------------------------------
1 | #include "aumMidi.h"
2 |
3 | void aumMidi::setup(ofxAudioUnit* synth, ofxMidiOut* midiOut, string midiPortId){
4 | this->synth = synth;
5 |
6 | midiReceiver.createMidiDestination(midiPortId);
7 | midiReceiver.routeMidiTo(*this->synth);
8 | midiOut->openPort(midiPortId);
9 | }
10 |
11 | void aumMidi::exit(){
12 | //midiOut->closePort();
13 | }
14 |
--------------------------------------------------------------------------------
/example/src/main.cpp:
--------------------------------------------------------------------------------
1 | #include "ofMain.h"
2 | #include "ofApp.h"
3 |
4 | //========================================================================
5 | int main( ){
6 | ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context
7 |
8 | // this kicks off the running of my app
9 | // can be OF_WINDOW or OF_FULLSCREEN
10 | // pass in width and height too:
11 | ofRunApp(new ofApp());
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/example/Makefile:
--------------------------------------------------------------------------------
1 | # Attempt to load a config.make file.
2 | # If none is found, project defaults in config.project.make will be used.
3 | ifneq ($(wildcard config.make),)
4 | include config.make
5 | endif
6 |
7 | # make sure the the OF_ROOT location is defined
8 | ifndef OF_ROOT
9 | OF_ROOT=$(realpath ../../..)
10 | endif
11 |
12 | # call the project makefile!
13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk
14 |
--------------------------------------------------------------------------------
/src/Handlers/aumMidi.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "ofxAudioUnitMidi.h"
4 | #include "ofxMidi.h"
5 |
6 | #ifdef __APPLE__
7 | #include "ofxAudioUnit.h"
8 | #endif
9 |
10 | class aumMidi{
11 |
12 | public:
13 | void setup(ofxAudioUnit* synth, ofxMidiOut* midiOut, string midiPortId);
14 | ofxMidiOut* midi();
15 | void exit();
16 | protected:
17 | ofxAudioUnit* synth;
18 | ofxAudioUnitMidiReceiver midiReceiver;
19 | ofxMidiOut* midiOut;
20 | };
21 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumMonitorableAudioUnit.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumManagedAudioUnit.h"
4 |
5 | class aumMonitorableAudioUnit : public aumManagedAudioUnit {
6 |
7 | public:
8 | void update();
9 | void printParamChanges();
10 | void startPrintingParamChanges();
11 | void stopPrintingParamChanges();
12 |
13 | protected:
14 | bool isMonitoringParams = false;
15 |
16 | virtual void doPrintChanges() = 0;
17 | virtual void doRecordParams() = 0;
18 | void compareAndPrint(string paramName, AudioUnitParameterValue previousValue, AudioUnitParameterValue currentValue);
19 | };
20 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain1/wiggly/My_Filter.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAACAAAAAEXXoAAAAAABQaAAAA==
8 |
9 | manufacturer
10 | 1634758764
11 | name
12 | Untitled
13 | subtype
14 | 1819304307
15 | type
16 | 1635083896
17 | version
18 | 0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain2/broken/Filter_2.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAACAAAAAEXXoAAAAAABAAAAAA==
8 |
9 | manufacturer
10 | 1634758764
11 | name
12 | Untitled
13 | subtype
14 | 1819304307
15 | type
16 | 1635083896
17 | version
18 | 0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain2/broken/Filter_3.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAACAAAAAEXXoAAAAAABAAAAAA==
8 |
9 | manufacturer
10 | 1634758764
11 | name
12 | Untitled
13 | subtype
14 | 1819304307
15 | type
16 | 1635083896
17 | version
18 | 0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain1/rhythmic/My_Filter.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAACAAAAAEXXoAAAAAABQaAAAA==
8 |
9 | manufacturer
10 | 1634758764
11 | name
12 | Untitled
13 | subtype
14 | 1819304307
15 | type
16 | 1635083896
17 | version
18 | 0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/Project.xcconfig:
--------------------------------------------------------------------------------
1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT.
2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED
3 | OF_PATH = ../../..
4 |
5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE
6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig"
7 |
8 | //ICONS - NEW IN 0072
9 | ICON_NAME_DEBUG = icon-debug.icns
10 | ICON_NAME_RELEASE = icon.icns
11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/
12 |
13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to:
14 | //ICON_FILE_PATH = bin/data/
15 |
16 | OTHER_CFLAGS = $(OF_CORE_CFLAGS)
17 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS)
18 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS)
19 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/Main_Compressor.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ThresholdOK
6 | 1
7 | data
8 |
9 | AAAAAAAAAAAAAAAKAAAAAMIMAAAAAAABQfAAAAAAAAI/gAAAAAAAA8LIAAAAAAAEPPXC
10 | jwAAAAU89cKPAAAABgAAAAAAAAPoAAAAAAAAB9DC8AAAAAALuMLwAAA=
11 |
12 | manufacturer
13 | 1634758764
14 | name
15 | Fast and Smooth
16 | subtype
17 | 1684237680
18 | type
19 | 1635083896
20 | version
21 | 0
22 |
23 |
24 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain1/wiggly/My_Reverb.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAARAAAAAELIAAAAAAABQgwAAAAAAAI8cZUDAAAAAz17fpEAAAAEPHSH
8 | /QAAAAU6gxJvAAAABj8nrhQAAAAHPy4UewAAAAg/FcKPAAAACT9AAAAAAAAKPyP3zwAA
9 | AAs+yoy9AAAADD+dfJoAAAANPszMzQAAAA5ESAAAAAAAD0BAAAAAAAAQAAAAAA==
10 |
11 | manufacturer
12 | 1634758764
13 | name
14 | Medium Hall 3
15 | render-quality
16 | 127
17 | subtype
18 | 1836213622
19 | type
20 | 1635083896
21 | version
22 | 0
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain2/broken/Reverb_2.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAARAAAAAELIAAAAAAABQgwAAAAAAAI8cZUDAAAAAz17fpEAAAAEPHSH
8 | /QAAAAU6gxJvAAAABj8nrhQAAAAHPy4UewAAAAg/FcKPAAAACT9AAAAAAAAKPyP3zwAA
9 | AAs+yoy9AAAADD+dfJoAAAANPszMzQAAAA5ESAAAAAAAD0BAAAAAAAAQAAAAAA==
10 |
11 | manufacturer
12 | 1634758764
13 | name
14 | Medium Hall 3
15 | render-quality
16 | 127
17 | subtype
18 | 1836213622
19 | type
20 | 1635083896
21 | version
22 | 0
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain1/rhythmic/My_Reverb.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAAARAAAAAELIAAAAAAABQgwAAAAAAAI8cZUDAAAAAz17fpEAAAAEPHSH
8 | /QAAAAU6gxJvAAAABj8nrhQAAAAHPy4UewAAAAg/FcKPAAAACT9AAAAAAAAKPyP3zwAA
9 | AAs+yoy9AAAADD+dfJoAAAANPszMzQAAAA5ESAAAAAAAD0BAAAAAAAAQAAAAAA==
10 |
11 | manufacturer
12 | 1634758764
13 | name
14 | Medium Hall 3
15 | render-quality
16 | 127
17 | subtype
18 | 1836213622
19 | type
20 | 1635083896
21 | version
22 | 0
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumMonitorableAudioUnit.cpp:
--------------------------------------------------------------------------------
1 | #include "aumMonitorableAudioUnit.h"
2 |
3 | void aumMonitorableAudioUnit::update() {
4 | if(isMonitoringParams) {
5 | if(ofGetFrameNum() > 0) {
6 | doPrintChanges();
7 | }
8 | doRecordParams();
9 | }
10 | }
11 |
12 | void aumMonitorableAudioUnit::printParamChanges() {
13 | startPrintingParamChanges();
14 | }
15 |
16 | void aumMonitorableAudioUnit::startPrintingParamChanges() {
17 | isMonitoringParams = true;
18 | }
19 |
20 | void aumMonitorableAudioUnit::stopPrintingParamChanges() {
21 | isMonitoringParams = false;
22 | }
23 |
24 | void aumMonitorableAudioUnit::compareAndPrint(string paramName, AudioUnitParameterValue previousValue, AudioUnitParameterValue currentValue) {
25 | if(previousValue != currentValue) {
26 | cout << paramName << " changed from " << previousValue << " to " << currentValue << endl;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/example/openFrameworks-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | cc.openFrameworks.ofapp
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | APPL
15 | CFBundleSignature
16 | ????
17 | CFBundleVersion
18 | 1.0
19 | CFBundleIconFile
20 | ${ICON}
21 | NSCameraUsageDescription
22 | This app needs to access the camera
23 | NSMicrophoneUsageDescription
24 | This app needs to access the microphone
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/Params/aumParams.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "aum_TALNoiseMaker_Params.h"
3 | #include "aum_Massive_Params.h"
4 |
5 | enum aumAudioUnitDevice {
6 | AUDIOUNIT_TALNOISEMAKER,
7 | AUDIOUNIT_MASSIVE
8 | };
9 |
10 | class aumParams {
11 |
12 | public:
13 | vector getAudioUnitOSTypes(aumAudioUnitDevice device) {
14 | vector osTypes;
15 | switch(device){
16 | case AUDIOUNIT_TALNOISEMAKER:
17 | osTypes.push_back('aumu');
18 | osTypes.push_back('ncut');
19 | osTypes.push_back('TOGU');
20 | break;
21 | case AUDIOUNIT_MASSIVE:
22 | osTypes.push_back('aumu');
23 | osTypes.push_back('NiMa');
24 | osTypes.push_back('-NI-');
25 | break;
26 | default:
27 | osTypes.push_back('aumu');
28 | osTypes.push_back('ncut');
29 | osTypes.push_back('TOGU');
30 | break;
31 | }
32 | return osTypes;
33 | }
34 | };
35 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/Mixer.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAQAAAAAAAAADAAAAAD+AAAAAAAABP4AAAAAAAAIAAAAAAAAAAQAAAAEAAAADAAAA
8 | AD+AAAAAAAABP4AAAAAAAAIAAAAAAAAAAQAAAAIAAAADAAAAAD+AAAAAAAABP4AAAAAA
9 | AAIAAAAAAAAAAQAAAAMAAAADAAAAAD+AAAAAAAABP4AAAAAAAAIAAAAAAAAAAQAAAAQA
10 | AAADAAAAAD+AAAAAAAABP4AAAAAAAAIAAAAAAAAAAQAAAAUAAAADAAAAAD+AAAAAAAAB
11 | P4AAAAAAAAIAAAAAAAAAAQAAAAYAAAADAAAAAD+AAAAAAAABP4AAAAAAAAIAAAAAAAAA
12 | AQAAAAcAAAADAAAAAD+AAAAAAAABP4AAAAAAAAIAAAAAAAAAAgAAAAAAAAADAAAAAD+A
13 | AAAAAAACAAAAAAAAAGQAAAAA
14 |
15 | manufacturer
16 | 1634758764
17 | name
18 | Untitled
19 | render-quality
20 | 64
21 | subtype
22 | 1835232632
23 | type
24 | 1635085688
25 | version
26 | 0
27 |
28 |
29 |
--------------------------------------------------------------------------------
/example/src/ofApp.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "ofMain.h"
4 | #include "ofxAudioUnit.h"
5 | #include "ofxAudioUnitManager.h"
6 | #include "aumUnit_TALNoiseMaker.h"
7 | #include "aumUnit_AULowPassFilter.h"
8 | #include "aumUnit_AUMatrixReverb.h"
9 | #include "aumUnit_Generic.h"
10 | #include "ofxBpm.h"
11 |
12 | class ofApp : public ofBaseApp{
13 |
14 | public:
15 | void setup();
16 | void update();
17 | void draw();
18 | void play();
19 | void togglePlaying();
20 |
21 | void keyPressed(int key);
22 | void keyReleased(int key);
23 | void mouseMoved(int x, int y );
24 | void mouseDragged(int x, int y, int button);
25 | void mousePressed(int x, int y, int button);
26 | void mouseReleased(int x, int y, int button);
27 | void windowResized(int w, int h);
28 | void dragEvent(ofDragInfo dragInfo);
29 | void gotMessage(ofMessage msg);
30 |
31 | ofxAudioUnitManager manager;
32 | aumAudioUnitChain myChain, chain2, chain3;
33 | aumUnit_TALNoiseMaker mySynth, noiseMaker2;
34 | aumUnit_AULowPassFilter myFilter, filter2, filter3;
35 | aumUnit_AUMatrixReverb myReverb, reverb2;
36 |
37 | bool playing, on;
38 | int note;
39 | };
40 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumManagedAudioUnit.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumParams.h"
4 |
5 | #ifdef __APPLE__
6 | #include "ofxAudioUnit.h"
7 | #endif
8 |
9 | enum AudioUnitType {
10 | AU_TYPE_SYNTH,
11 | AU_TYPE_UNIT
12 | };
13 |
14 | class aumManagedAudioUnit {
15 |
16 | public:
17 | void setup(string _unitName, aumAudioUnitDevice device, string _className="");
18 | void setup(string _unitName, OSType _osType, OSType _osSubType, OSType _osManufacturer=kAudioUnitManufacturer_Apple, string _className="");
19 | void update(ofEventArgs& args);
20 | virtual void update() = 0;
21 |
22 | void showUI(string chainName, int chainIndex, int numChains, int unitIndex, int numUnits);
23 | AudioUnitParameterValue get(int param);
24 | void set(int param, float value);
25 | void set(int param1, int param2, ofVec2f value);
26 | void set(int param1, int param2, int param3, ofVec3f value);
27 | ofxAudioUnit* getUnit();
28 | AudioUnitType getType();
29 | string getUnitName();
30 | string getUnitSlug();
31 | string getClassName();
32 | bool isSynth();
33 | protected:
34 | string stringify(OSType _osType, OSType _osSubType, OSType _osManufacturer);
35 | string stringify(OSType code);
36 | OSType osType, osSubType, osManufacturer;
37 | ofxAudioUnit unit;
38 | AudioUnitType type;
39 | aumParams audioUnitParams;
40 | string className, unitName, unitSlug;
41 | int x, y;
42 | };
43 |
--------------------------------------------------------------------------------
/src/aumUtils.cpp:
--------------------------------------------------------------------------------
1 | #include "aumUtils.h"
2 |
3 | void aumUtils::setup() {
4 | loadNotesMap();
5 | }
6 |
7 | /* Format can be either: "60 ON", "60 OFF" etc, or
8 | "C#5 ON", "C#5 OFF" etc */
9 | string aumUtils::executeMidiCommand(string command, ofxMidiOut *midi) {
10 | vector args = ofSplitString(command, " ");
11 | if(args.size() == 2) {
12 | int parsedNote = midiNote(args.at(0));
13 | if(args.at(1) == "ON") {
14 | cout << "Sending MIDI ON: " << parsedNote << endl;
15 | midi->sendNoteOn(1, parsedNote);
16 | } else {
17 | cout << "Sending MIDI OFF: " << parsedNote << endl;
18 | midi->sendNoteOff(1, parsedNote);
19 | }
20 | return args.at(1);
21 | }
22 | return NULL;
23 | }
24 |
25 | int aumUtils::midiNote(string arg) {
26 | if(arg.length() > 1 && ofToInt(arg) == 0) {
27 | octave = ofToInt(arg.substr(arg.length() - 1, arg.length()));
28 | note = notes[arg.substr(0, arg.length() - 1)];
29 | return note + 12 * octave;
30 | }
31 | return ofToInt(arg);
32 | }
33 |
34 | void aumUtils::loadNotesMap() {
35 | notes["C"] = 0;
36 | notes["C#"] = 1;
37 | notes["D"] = 2;
38 | notes["D#"] = 3;
39 | notes["E"] = 4;
40 | notes["F"] = 5;
41 | notes["F#"] = 6;
42 | notes["G"] = 7;
43 | notes["G#"] = 8;
44 | notes["A"] = 9;
45 | notes["A#"] = 10;
46 | notes["B"] = 11;
47 | }
48 |
--------------------------------------------------------------------------------
/src/Handlers/aumUserInterface.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumAudioUnitChain.h"
4 |
5 | class aumUserInterface{
6 |
7 | public:
8 | void setup();
9 | void setFocus(bool _isFocused);
10 | void addChain();
11 | void drawControls();
12 | void drawChains(vector chains);
13 | void drawWaveforms(aumAudioUnitChain* chain, float positionX);
14 | void drawChainReport(aumAudioUnitChain* chain, ofVec2f position, int chainNumber);
15 | void drawMidiReport(aumAudioUnitChain* chain, float positionX, int index);
16 | protected:
17 | void drawDebugBox(int x, int y, int width, int height, ofColor color=ofColor(255, 255, 255, 32));
18 | ofVec2f getControlsPositions();
19 | ofColor getBackgroundColor(aumAudioUnitChain* chain);
20 | ofColor getTextColor(aumAudioUnitChain* chain);
21 | string controlsReport();
22 | string chainReport(aumAudioUnitChain* chain, int number);
23 | string midiReport(aumAudioUnitChain* chain, int index);
24 |
25 | ofxAudioUnitTap* tap;
26 | bool isFocused;
27 | ofPolyline leftWaveform, rightWaveform;
28 | int padding, midiReceiptTimeout;
29 | string tempMidiReport;
30 | vector reports;
31 | vector lastMidiRecieved;
32 |
33 | ofVec2f midiInfoPositions, midiInfoDimensions;
34 | ofVec2f chainInfoPositions, chainInfoDimensions;
35 | ofVec2f controlsPositions, controlsDimensions;
36 | ofVec2f waveformsPositions, waveformsDimensions;
37 | };
38 |
--------------------------------------------------------------------------------
/src/Handlers/aumPresets.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumManagedAudioUnit.h"
4 |
5 | class aumPresets{
6 |
7 | public:
8 | void setup(string _chainName, ofxAudioUnitMixer* _mixer, aumManagedAudioUnit* _compressor);
9 | void load(int index);
10 | void add(aumManagedAudioUnit* unit);
11 | void saveNew();
12 | void saveOverwrite();
13 | void rename();
14 | void trash();
15 | void increment();
16 | void decrement();
17 | void select();
18 | void deselect();
19 | int currentIndex();
20 | string report();
21 |
22 | protected:
23 | int indexOf(string presetName);
24 | void ensureValidIndex();
25 | void readFromDisk();
26 | void loadPresetsInChainOrder(string presetName);
27 | vector dirContents(string path, string extensions);
28 | void clearPresets();
29 | string path(string presetName);
30 | string newTrashPath(string presetName);
31 | string filename(string unitSlug);
32 | string trim(string presetName);
33 | void ensureDirectories();
34 | bool validateName(string newPresetName, int alertDialogException=-1);
35 | void save(string presetName);
36 | void saveMasterUnits();
37 | void loadMasterUnits();
38 |
39 | vector presetNames;
40 | vector units;
41 | vector unitSlugs;
42 | vector< vector > presets;
43 | ofxAudioUnitMixer* mixer;
44 | aumManagedAudioUnit* compressor;
45 |
46 | string chainName, storageDir, storagePath, trashDir, mixerName;
47 | int currentPreset, lastSaved, lastSaveTimer, lastSaveTimeout;
48 | bool selected;
49 |
50 | ofDirectory dir;
51 | string anyExtension, presetExtension;
52 | };
53 |
--------------------------------------------------------------------------------
/src/ofxAudioUnitManager.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumAudioUnitChain.h"
4 | #include "aumUnit_Generic.h"
5 | #include "aumManagedAudioUnitMixer.h"
6 | #include "ofxBpm.h"
7 | #include "aumUserInterface.h"
8 | #include "aumParams.h"
9 |
10 | class ofxAudioUnitManager {
11 | public:
12 | void setup();
13 | void setupDark();
14 | void onlyFocusOnCommand();
15 | aumAudioUnitChain& createChain(aumAudioUnitChain *chain, string name="", aumManagedAudioUnitMixer* altMixer=NULL, ofColor color=ofColor::blue);
16 | void addUnmanagedUnit(ofxAudioUnit* unit);
17 | void loadPresets(aumAudioUnitChain* chain);
18 | void draw(ofEventArgs& args);
19 | void exit(ofEventArgs& args);
20 | void keyPressed(ofKeyEventArgs& args);
21 | void toggleDebugUI();
22 | void enableDebugUI(bool show);
23 | void incrementSelectedChain();
24 | void decrementSelectedChain();
25 | ofxAudioUnitMixer* getMixer();
26 | vector allChains();
27 | aumAudioUnitChain* getChain(int chainId);
28 | ofxBpm bpm;
29 |
30 | protected:
31 | void selectChain(int index);
32 | void selectChain(aumAudioUnitChain *chain);
33 | void showSelectedChainUI();
34 | void showAllSynthUIs();
35 | void showAllUIs();
36 | void showMixerUI();
37 | void showCompressorUI();
38 | int nextMixerBusIndex(ofxAudioUnitMixer* mixer);
39 |
40 | aumUserInterface userInterface;
41 | ofxAudioUnitMixer mixer;
42 | aumUnit_Generic compressor;
43 | ofxAudioUnitOutput output;
44 | vector chains;
45 | aumAudioUnitChain* selectedChain;
46 | bool showDebugUI, drawDarkOverlay, focusOnCommand, isFocused;
47 | int selectedChainIndex, numUnmanagedInputs;
48 | map mixersToBusCounts;
49 | };
50 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumAudioUnitChain.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ofMain.h"
3 | #include "aumPresets.h"
4 | #include "aumUtils.h"
5 | #include "aumMidi.h"
6 | #include "aumManagedAudioUnit.h"
7 |
8 | #ifdef __APPLE__
9 | #include "ofxAudioUnit.h"
10 | #endif
11 |
12 | class aumAudioUnitChain {
13 |
14 | public:
15 | virtual void setup(string _chainName, ofxAudioUnitMixer* _mixer, aumManagedAudioUnit* _compressor, int _mixerChannel, ofColor _waveColor);
16 | void loadPresets();
17 | void exit();
18 | aumAudioUnitChain& toMixer(ofxAudioUnit* chainEndpoint);
19 | aumAudioUnitChain& toMixer();
20 | aumAudioUnitChain& link(aumManagedAudioUnit* unit);
21 | aumAudioUnitChain& to(aumManagedAudioUnit* unit);
22 | void showUI(int chainIndex, int numChains);
23 | void showSynthUI(int chainIndex, int numChains);
24 | bool isSelected();
25 | void select();
26 | void deselect();
27 | void sendMidiOn(int midiNum);
28 | void sendMidiOff(int midiNum);
29 | void sendNoteOn(string note);
30 | void sendNoteOff(string note);
31 | ofxAudioUnitTap* tap();
32 | aumPresets* presets();
33 | string getUnitReport();
34 | string getMidiReport();
35 | string getClassName();
36 | string getName();
37 | ofColor getColor();
38 | ofxMidiOut midi;
39 |
40 | protected:
41 | void loadUnit(aumManagedAudioUnit* unit);
42 | void loadSynth(aumManagedAudioUnit* synth);
43 |
44 | ofxAudioUnitTap tapUnit;
45 | ofPolyline waveform1, waveform2;
46 | vector units;
47 | ofxAudioUnit* unitEndpoint;
48 | ofxAudioUnitMixer* mixer;
49 | aumManagedAudioUnit* compressor;
50 | int mixerChannel;
51 | vector midiEvents;
52 |
53 | aumPresets presetsHandler;
54 | aumUtils utils;
55 | aumMidi midiHandler;
56 | ofColor waveColor;
57 | bool selected;
58 | string chainName, className, report;
59 | };
60 |
--------------------------------------------------------------------------------
/src/AudioUnits/aumUnit_AULowPassFilter.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "aumMonitorableAudioUnit.h"
3 |
4 | /******************************************************************************/
5 | /* WARNING: THIS CLASS WAS GENERATED BY THE FOLLOWING FUNCTION: */
6 | /* */
7 | /* aumUnit_Generic::generateClassFileForAudioUnit(string deviceName); */
8 | /* */
9 | /* IF YOU EDIT THIS FILE, YOU RISK HAVING YOUR CHANGES OVERWRITTEN THE NEXT */
10 | /* TIME THE FILE IS RE-WRITTEN BY THIS FUNCTION. TO EDIT THIS FILE, PLEASE */
11 | /* COPY IT TO ANY OTHER FOLDER, RENAME THE CLASS, AND THEN MAKE EDITS. */
12 | /******************************************************************************/
13 |
14 | class aumUnit_AULowPassFilter : public aumMonitorableAudioUnit
15 | {
16 | public:
17 | //Cutoff Frequency
18 | //min: 10, max: 21829.5, default: 6900
19 | const static int cutoff_frequency = 0;
20 |
21 | //Resonance
22 | //min: -20, max: 40, default: 0
23 | const static int resonance = 1;
24 |
25 | //These variables store the most recenty recorded values
26 | //of each of the parameters, for recording and detection
27 | AudioUnitParameterValue previous_cutoff_frequency;
28 | AudioUnitParameterValue previous_resonance;
29 |
30 | void setup(string _unitName) {
31 | aumManagedAudioUnit::setup(_unitName, 'aufx', 'lpas', 'appl', "aumUnit_AULowPassFilter");
32 | }
33 |
34 | void doPrintChanges() {
35 | compareAndPrint("cutoff_frequency", previous_cutoff_frequency, get(cutoff_frequency));
36 | compareAndPrint("resonance", previous_resonance, get(resonance));
37 | }
38 |
39 | void doRecordParams() {
40 | previous_cutoff_frequency = get(cutoff_frequency);
41 | previous_resonance = get(resonance);
42 | }
43 | };
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .trash
2 | dump
3 |
4 | #########################
5 | # openFrameworks patterns
6 | #########################
7 |
8 | # build files
9 | openFrameworks.a
10 | openFrameworksDebug.a
11 | openFrameworksUniversal.a
12 | libs/openFrameworksCompiled/lib/*/*
13 | !libs/openFrameworksCompiled/lib/*/.gitkeep
14 |
15 | # apothecary
16 | scripts/apothecary/build
17 |
18 | # rule to avoid non-official addons going into git
19 | # see addons/.gitignore
20 | addons/*
21 |
22 | # rule to avoid non-official apps going into git
23 | # see apps/.gitignore
24 | apps/*
25 |
26 | # also, see examples/.gitignore
27 |
28 | #########################
29 | # general
30 | #########################
31 |
32 | [Bb]uild/
33 | [Oo]bj/
34 | *.o
35 | [Dd]ebug*/
36 | [Rr]elease*/
37 | *.mode*
38 | *.app/
39 | *.pyc
40 | .svn/
41 | *.log
42 | *.cpp.eep
43 | *.cpp.elf
44 | *.cpp.hex
45 |
46 | #########################
47 | # IDE
48 | #########################
49 |
50 | # XCode
51 | *.pbxuser
52 | *.perspective
53 | *.perspectivev3
54 | *.mode1v3
55 | *.mode2v3
56 | # XCode 4
57 | xcuserdata
58 | *.xcworkspace
59 |
60 | # Code::Blocks
61 | *.depend
62 | *.layout
63 |
64 | # Visual Studio
65 | *.sdf
66 | *.opensdf
67 | *.suo
68 | *.pdb
69 | *.ilk
70 | *.aps
71 | ipch/
72 |
73 | # Eclipse
74 | .metadata
75 | local.properties
76 | .externalToolBuilders
77 |
78 | #########################
79 | # operating system
80 | #########################
81 |
82 | # Linux
83 | *~
84 | # KDE
85 | .directory
86 | .AppleDouble
87 |
88 | # OSX
89 | .DS_Store
90 | *.swp
91 | *~.nib
92 | # Thumbnails
93 | ._*
94 |
95 | # Windows
96 | # Windows image file caches
97 | Thumbs.db
98 | # Folder config file
99 | Desktop.ini
100 |
101 | # Android
102 | .csettings
103 | /libs/openFrameworksCompiled/project/android/paths.make
104 |
105 | # Android Studio
106 | *.iml
107 |
108 | #########################
109 | # miscellaneous
110 | #########################
111 |
112 | .mailmap
113 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumManagedAudioUnit.cpp:
--------------------------------------------------------------------------------
1 | #include "aumManagedAudioUnit.h"
2 |
3 | void aumManagedAudioUnit::setup(string _unitName, aumAudioUnitDevice device, string _className) {
4 | vector osTypes = audioUnitParams.getAudioUnitOSTypes(device);
5 | setup(_unitName, osTypes.at(0), osTypes.at(1), osTypes.at(2), _className);
6 | }
7 |
8 | void aumManagedAudioUnit::setup(string _unitName, OSType _osType, OSType _osSubType, OSType _osManufacturer, string _className) {
9 | unitName = _unitName;
10 | unitSlug = _unitName;
11 | ofStringReplace(unitSlug, " ", "_");
12 |
13 | osType = _osType;
14 | osSubType = _osSubType;
15 | osManufacturer = _osManufacturer;
16 | unit = ofxAudioUnit(osType, osSubType, osManufacturer);
17 | this->type = stringify(osType) == "aumu" ? AU_TYPE_SYNTH : AU_TYPE_UNIT;
18 |
19 | className = _className;
20 | if(className == "") {
21 | className = stringify(_osType, _osSubType, _osManufacturer);
22 | }
23 |
24 | ofAddListener(ofEvents().update, this, &aumManagedAudioUnit::update);
25 | }
26 |
27 | void aumManagedAudioUnit::update(ofEventArgs& args){
28 | update();
29 | }
30 |
31 | void aumManagedAudioUnit::showUI(string chainName, int chainIndex, int numChains, int unitIndex, int numUnits) {
32 | x = ofMap(chainIndex, 0, numChains - 1, 0, ofGetScreenWidth() * 0.5);
33 | y = ofMap(unitIndex, 0, numUnits - 1, 0, ofGetScreenHeight() * 0.5);
34 | unit.showUI(chainName + ": " +
35 | unitName + (unitName.length() > 0 ? " " : "") +
36 | className, x, y);
37 | }
38 |
39 | AudioUnitParameterValue aumManagedAudioUnit::get(int param) {
40 | AudioUnitParameterValue value = 0;
41 | AudioUnitGetParameter(unit.getUnit(), param, kAudioUnitScope_Global, 0, &value);
42 | return value;
43 | }
44 |
45 | void aumManagedAudioUnit::set(int param, float value) {
46 | AudioUnitSetParameter(unit.getUnit(), param, kAudioUnitScope_Global, 0, value, 0);
47 | }
48 |
49 | void aumManagedAudioUnit::set(int param1, int param2, ofVec2f value) {
50 | set(param1, value.x);
51 | set(param2, value.y);
52 | }
53 |
54 | void aumManagedAudioUnit::set(int param1, int param2, int param3, ofVec3f value) {
55 | set(param1, value.x);
56 | set(param2, value.y);
57 | set(param3, value.z);
58 | }
59 |
60 | ofxAudioUnit* aumManagedAudioUnit::getUnit() {
61 | return &unit;
62 | }
63 |
64 | AudioUnitType aumManagedAudioUnit::getType() {
65 | return type;
66 | }
67 |
68 | string aumManagedAudioUnit::getUnitName() {
69 | return unitName;
70 | }
71 |
72 | string aumManagedAudioUnit::getUnitSlug() {
73 | return unitSlug;
74 | }
75 |
76 | string aumManagedAudioUnit::getClassName() {
77 | return className;
78 | }
79 |
80 | bool aumManagedAudioUnit::isSynth() {
81 | return type == AU_TYPE_SYNTH;
82 | }
83 |
84 | string aumManagedAudioUnit::stringify(OSType _osType, OSType _osSubType, OSType _osManufacturer) {
85 | return stringify(_osType) + "-" + stringify(_osSubType) + "-" + stringify(_osManufacturer);
86 | }
87 |
88 | string aumManagedAudioUnit::stringify(OSType code) {
89 | char char4 = code&0xFF;
90 | char char3 = (code>>8)&0xFF;
91 | char char2 = (code>>16)&0xFF;
92 | char char1 = (code>>24)&0xFF;
93 | return ofToString(char1) + ofToString(char2) + ofToString(char3) + ofToString(char4);
94 | }
95 |
--------------------------------------------------------------------------------
/example/example.xcodeproj/xcshareddata/xcschemes/example Debug.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
69 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/example/example.xcodeproj/xcshareddata/xcschemes/example Release.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
69 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/example/src/ofApp.cpp:
--------------------------------------------------------------------------------
1 | #include "ofApp.h"
2 |
3 | void ofApp::setup(){
4 | playing = false;
5 | on = true;
6 | note = 60;
7 |
8 | //Setup the manager, and since this is a demo, let's start
9 | //with the debug UI toggled on
10 | manager.setup();
11 | manager.toggleDebugUI();
12 |
13 | //For each chain:
14 | //--------------
15 | //1. Setup some units
16 | mySynth.setup("My Synth");
17 | myFilter.setup("My Filter");
18 | myReverb.setup("My Reverb");
19 | mySynth.printParamChanges();
20 | myFilter.printParamChanges();
21 | myReverb.printParamChanges();
22 |
23 | //myFilter.generateClassFileForAudioUnit("AULowPassFilter");
24 |
25 | //2. Have the manager init the chain with a name
26 | manager.createChain(&myChain)
27 | .link(&mySynth)
28 | .to(&myFilter)
29 | .to(&myReverb)
30 | .toMixer();
31 |
32 | //That's it!
33 |
34 | //Now repeat for every chain you want to create
35 | noiseMaker2.setup("Noise 2");
36 | filter2.setup("Filter 2");
37 | filter3.setup("Filter 3");
38 | reverb2.setup("Reverb 2");
39 |
40 | manager.createChain(&chain2)
41 | .link(&noiseMaker2)
42 | .to(&filter2) //Note you can have two units of
43 | .to(&filter3) //the same type in the same chain
44 | .to(&reverb2)
45 | .toMixer();
46 |
47 | //Use ofxBpm to regularly schedule MIDI events
48 | ofAddListener(manager.bpm.beatEvent, this, &ofApp::play);
49 | manager.bpm.start();
50 | }
51 |
52 | void ofApp::play(void){
53 | if(playing) {
54 | if(on) {
55 | myChain.sendMidiOn(note);
56 | on = false;
57 | } else {
58 | chain2.sendMidiOn(note);
59 | on = true;
60 | }
61 | }
62 | }
63 |
64 | void ofApp::togglePlaying() {
65 | playing = !playing;
66 | if(!playing) {
67 | myChain.sendMidiOff(note);
68 | chain2.sendMidiOff(note);
69 | }
70 | }
71 |
72 | void ofApp::update(){
73 |
74 | }
75 |
76 | void ofApp::draw(){
77 | //When you use this in your projects, you may be drawing
78 | //your own stuff, like this:
79 | /*ofBackground(ofColor::black);
80 | ofSetLineWidth(30);
81 | ofSetColor(ofColor::white, 40);
82 | int size = 4000;
83 |
84 | ofRotateZ(45);
85 | for(int i = -size; i < size; i+=50) {
86 | ofLine(i, -size, i, size);
87 | }
88 | ofRotateZ(-90);
89 | for(int i = -size; i < size; i+=50) {
90 | ofLine(i, -size, i, size);
91 | }
92 | ofRotateZ(45);*/
93 | }
94 |
95 | void ofApp::keyPressed(int key){
96 | if(key == ' ') {
97 | togglePlaying();
98 | } else if(key == '[') {
99 | togglePlaying();
100 | note--;
101 | togglePlaying();
102 | } else if(key == ']') {
103 | togglePlaying();
104 | note++;
105 | togglePlaying();
106 | }
107 | }
108 |
109 | void ofApp::keyReleased(int key){
110 |
111 | }
112 |
113 | void ofApp::mouseMoved(int x, int y ){
114 |
115 | }
116 |
117 | void ofApp::mouseDragged(int x, int y, int button){
118 |
119 | }
120 |
121 | void ofApp::mousePressed(int x, int y, int button){
122 |
123 | }
124 |
125 | void ofApp::mouseReleased(int x, int y, int button){
126 |
127 | }
128 |
129 | void ofApp::windowResized(int w, int h){
130 |
131 | }
132 |
133 | void ofApp::gotMessage(ofMessage msg){
134 |
135 | }
136 |
137 | void ofApp::dragEvent(ofDragInfo dragInfo){
138 |
139 | }
140 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain2/broken/Noise_2.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAABcAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAA
8 | AAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAA
9 | AAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEA
10 | AAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAA
11 | AAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAA
12 | HgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAA
13 | AAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAA
14 | AAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAx
15 | AAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAA
16 | AAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAA
17 | AD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQA
18 | AAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAA
19 | AAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAA
20 | UQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAA
21 | AAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAA==
22 |
23 | jucePluginState
24 |
25 | VkMyIUgGAAA8dGFsIGN1cnByb2dyYW09IjAiIHZlcnNpb249IjEuNyI+PHByb2dyYW1z
26 | Pjxwcm9ncmFtIHByb2dyYW1uYW1lPSIhIFN0YXJ0dXAgSnVubyBPc2MgVEFMIiB2b2x1
27 | bWU9IjAuMzUyMDAwMDI4IiBmaWx0ZXJ0eXBlPSIwIiBjdXRvZmY9IjEiIHJlc29uYW5j
28 | ZT0iMCIgb3NjMXZvbHVtZT0iMC44MDAwMDAwMTIiIG9zYzJ2b2x1bWU9IjEiIG9zYzN2
29 | b2x1bWU9IjAuODAwMDAwMDEyIiBvc2Mxd2F2ZWZvcm09IjEiIG9zYzJ3YXZlZm9ybT0i
30 | MC4yNSIgb3Njc3luYz0iMCIgb3NjbWFzdGVydHVuZT0iMC41IiBvc2MxdHVuZT0iMC44
31 | NTQwMDAwMzIiIG9zYzJ0dW5lPSIwLjMwNDAwMDAyIiBvc2MxZmluZXR1bmU9IjAuNSIg
32 | b3NjMmZpbmV0dW5lPSIwLjUiIHBvcnRhbWVudG89IjAiIGtleWZvbGxvdz0iMCIgZmls
33 | dGVyY29udG91cj0iMC41IiBmaWx0ZXJhdHRhY2s9IjAiIGZpbHRlcmRlY2F5PSIwIiBm
34 | aWx0ZXJzdXN0YWluPSIxIiBmaWx0ZXJyZWxlYXNlPSIwIiBhbXBhdHRhY2s9IjAiIGFt
35 | cGRlY2F5PSIwIiBhbXBzdXN0YWluPSIxIiBhbXByZWxlYXNlPSIwIiB2b2ljZXM9IjAi
36 | IHBvcnRhbWVudG9tb2RlPSIwIiBsZm8xd2F2ZWZvcm09IjAiIGxmbzJ3YXZlZm9ybT0i
37 | MCIgbGZvMXJhdGU9IjAiIGxmbzJyYXRlPSIwIiBsZm8xYW1vdW50PSIwLjUiIGxmbzJh
38 | bW91bnQ9IjAuNSIgbGZvMWRlc3RpbmF0aW9uPSIwIiBsZm8yZGVzdGluYXRpb249IjAi
39 | IGxmbzFwaGFzZT0iMCIgbGZvMnBoYXNlPSIwIiBvc2MxcHc9IjAuNSIgb3NjMmZtPSIw
40 | IiBvc2MxcGhhc2U9IjAuNSIgb3NjMnBoYXNlPSIwIiB0cmFuc3Bvc2U9IjAuNSIgZnJl
41 | ZWFkYXR0YWNrPSIwIiBmcmVlYWRkZWNheT0iMCIgZnJlZWFkYW1vdW50PSIwIiBmcmVl
42 | YWRkZXN0aW5hdGlvbj0iMCIgbGZvMXN5bmM9IjAiIGxmbzFrZXl0cmlnZ2VyPSIwIiBs
43 | Zm8yc3luYz0iMCIgbGZvMmtleXRyaWdnZXI9IjAiIHZlbG9jaXR5dm9sdW1lPSIwIiB2
44 | ZWxvY2l0eWNvbnRvdXI9IjAiIHZlbG9jaXR5Y3V0b2ZmPSIwIiBwaXRjaHdoZWVsY3V0
45 | b2ZmPSIwIiBwaXRjaHdoZWVscGl0Y2g9IjAiIGhpZ2hwYXNzPSIwIiBkZXR1bmU9IjAi
46 | IHZpbnRhZ2Vub2lzZT0iMCIgcmluZ21vZHVsYXRpb249IjAiIGNob3J1czFlbmFibGU9
47 | IjAiIGNob3J1czJlbmFibGU9IjAiIHJldmVyYndldD0iMCIgcmV2ZXJiZGVjYXk9IjAu
48 | NSIgcmV2ZXJicHJlZGVsYXk9IjAiIHJldmVyYmhpZ2hjdXQ9IjAiIHJldmVyYmxvd2N1
49 | dD0iMSIgb3NjYml0Y3J1c2hlcj0iMSIgZmlsdGVyZHJpdmU9IjAiIGRlbGF5d2V0PSIw
50 | IiBkZWxheXRpbWU9IjAuNSIgZGVsYXlzeW5jPSIwIiBkZWxheWZhY3Rvcmw9IjAiIGRl
51 | bGF5ZmFjdG9ycj0iMCIgZGVsYXloaWdoc2hlbGY9IjAiIGRlbGF5bG93c2hlbGY9IjAi
52 | IGRlbGF5ZmVlZGJhY2s9IjAuNSIgZW52ZWxvcGVlZGl0b3JkZXN0MT0iMCIgZW52ZWxv
53 | cGVlZGl0b3JzcGVlZD0iMCIgZW52ZWxvcGVlZGl0b3JhbW91bnQ9IjAiIGVudmVsb3Bl
54 | b25lc2hvdD0iMCIgZW52ZWxvcGVmaXh0ZW1wbz0iMCIgdGFiMW9wZW49IjEiIHRhYjJv
55 | cGVuPSIwIiB0YWIzb3Blbj0iMCIgdGFiNG9wZW49IjEiPjxzcGxpbmVQb2ludHMvPjwv
56 | cHJvZ3JhbT48L3Byb2dyYW1zPjxtaWRpbWFwLz48L3RhbD4Arg==
57 |
58 | manufacturer
59 | 1414481749
60 | name
61 | Untitled
62 | subtype
63 | 1852011892
64 | type
65 | 1635085685
66 | version
67 | 0
68 |
69 |
70 |
--------------------------------------------------------------------------------
/src/AudioUnitManagement/aumAudioUnitChain.cpp:
--------------------------------------------------------------------------------
1 | #include "aumAudioUnitChain.h"
2 |
3 | void aumAudioUnitChain::setup(string _chainName, ofxAudioUnitMixer* _mixer, aumManagedAudioUnit* _compressor, int _mixerChannel, ofColor _waveColor){
4 | chainName = _chainName;
5 | mixer = _mixer;
6 | compressor = _compressor;
7 | mixerChannel = _mixerChannel;
8 | waveColor = _waveColor;
9 | className = "aumAudioUnitChain";
10 | selected = false;
11 | utils.setup();
12 | }
13 |
14 | void aumAudioUnitChain::loadPresets(){
15 | presetsHandler.setup(chainName, mixer, compressor);
16 | }
17 |
18 | void aumAudioUnitChain::exit() {
19 | midiHandler.exit();
20 | }
21 |
22 | aumAudioUnitChain& aumAudioUnitChain::toMixer(ofxAudioUnit* chainEndpoint) {
23 | chainEndpoint->connectTo(tapUnit).connectTo(*mixer, mixerChannel);
24 | return *this;
25 | }
26 |
27 | aumAudioUnitChain& aumAudioUnitChain::toMixer() {
28 | ofxAudioUnit* unitEndpoint = units.at(0)->getUnit();
29 |
30 | for(int i = 1; i < units.size(); i++) {
31 | unitEndpoint->connectTo(*units.at(i)->getUnit());
32 | unitEndpoint = units.at(i)->getUnit();
33 | }
34 |
35 | toMixer(unitEndpoint);
36 | loadPresets();
37 | return *this;
38 | }
39 |
40 | aumAudioUnitChain& aumAudioUnitChain::link(aumManagedAudioUnit* unit) {
41 | unit->getType() == AU_TYPE_SYNTH ?
42 | loadSynth(unit) : loadUnit(unit);
43 | return *this;
44 | }
45 |
46 | aumAudioUnitChain& aumAudioUnitChain::to(aumManagedAudioUnit* unit) {
47 | return link(unit);
48 | }
49 |
50 | void aumAudioUnitChain::showUI(int chainIndex, int numChains){
51 | for(int i = 0; i < units.size(); i++) {
52 | units.at(i)->showUI(chainName, chainIndex, numChains, i, units.size());
53 | }
54 | }
55 |
56 | void aumAudioUnitChain::showSynthUI(int chainIndex, int numChains){
57 | for(int i = 0; i < units.size(); i++) {
58 | if(units.at(i)->isSynth()){
59 | units.at(i)->showUI(chainName, chainIndex, numChains, i, units.size());
60 | }
61 | }
62 | }
63 |
64 | bool aumAudioUnitChain::isSelected() {
65 | return selected;
66 | }
67 |
68 | void aumAudioUnitChain::select() {
69 | selected = true;
70 | presetsHandler.select();
71 | }
72 |
73 | void aumAudioUnitChain::deselect() {
74 | selected = false;
75 | presetsHandler.deselect();
76 | }
77 |
78 | void aumAudioUnitChain::sendMidiOn(int midiNum) {
79 | midi.sendNoteOn(1, midiNum);
80 | midiEvents.push_back("[ON: " + ofToString(midiNum) + "]");
81 | }
82 |
83 | void aumAudioUnitChain::sendMidiOff(int midiNum) {
84 | midi.sendNoteOff(1, midiNum);
85 | midiEvents.push_back("[OFF: " + ofToString(midiNum) + "]");
86 | }
87 |
88 | void aumAudioUnitChain::sendNoteOn(string note) {
89 | utils.executeMidiCommand(note + " ON", &midi);
90 | midiEvents.push_back("[ON: " + ofToString(note) + "]");
91 | }
92 |
93 | void aumAudioUnitChain::sendNoteOff(string note) {
94 | utils.executeMidiCommand(note + " OFF", &midi);
95 | midiEvents.push_back("[OFF: " + ofToString(note) + "]");
96 | }
97 |
98 | ofxAudioUnitTap* aumAudioUnitChain::tap() {
99 | return &tapUnit;
100 | }
101 |
102 | aumPresets* aumAudioUnitChain::presets() {
103 | return &presetsHandler;
104 | }
105 |
106 | string aumAudioUnitChain::getUnitReport() {
107 | report = "";
108 | for(int i = 0; i < units.size(); i++) {
109 | report += (i > 0 ? "" : "") + ("\"" + units.at(i)->getUnitName() + "\" ->\n");
110 | }
111 | return report + " Compressor/Mixer";
112 | }
113 |
114 | string aumAudioUnitChain::getMidiReport() {
115 | report = "";
116 | for(int i = 0; i < midiEvents.size(); i++) {
117 | report += midiEvents.at(i) + " ";
118 | }
119 | midiEvents.clear();
120 | return report;
121 | }
122 |
123 | string aumAudioUnitChain::getClassName() {
124 | return className;
125 | }
126 |
127 | string aumAudioUnitChain::getName() {
128 | return chainName;
129 | }
130 |
131 | ofColor aumAudioUnitChain::getColor() {
132 | return waveColor;
133 | }
134 |
135 | void aumAudioUnitChain::loadUnit(aumManagedAudioUnit* unit) {
136 | presetsHandler.add(unit);
137 | units.push_back(unit);
138 | }
139 |
140 | void aumAudioUnitChain::loadSynth(aumManagedAudioUnit* _synth) {
141 | loadUnit(_synth);
142 | midiHandler.setup(_synth->getUnit(), &midi, "openFrameworks: " + chainName);
143 | }
144 |
--------------------------------------------------------------------------------
/src/Handlers/aumUserInterface.cpp:
--------------------------------------------------------------------------------
1 | #include "aumUserInterface.h"
2 |
3 | void aumUserInterface::setup() {
4 | midiReceiptTimeout = 15;
5 | padding = 10;
6 | controlsDimensions = ofVec2f(300, 340);
7 | chainInfoDimensions = ofVec2f(220, 340);
8 | waveformsDimensions = ofVec2f(220, 80);
9 | midiInfoDimensions = ofVec2f(220, 32);
10 |
11 | controlsPositions = getControlsPositions();
12 | chainInfoPositions = ofVec2f(padding, padding);
13 | waveformsPositions = ofVec2f(padding, chainInfoPositions.y + chainInfoDimensions.y + 5);
14 | midiInfoPositions = ofVec2f(padding, waveformsPositions.y + waveformsDimensions.y + 5);
15 |
16 | isFocused = true;
17 | }
18 |
19 | void aumUserInterface::setFocus(bool _isFocused) {
20 | isFocused = _isFocused;
21 | }
22 |
23 | void aumUserInterface::addChain() {
24 | reports.push_back("");
25 | lastMidiRecieved.push_back(midiReceiptTimeout + 1);
26 | }
27 |
28 | void aumUserInterface::drawControls() {
29 | controlsPositions = getControlsPositions();
30 | drawDebugBox(controlsPositions.x, controlsPositions.y, controlsDimensions.x, controlsDimensions.y);
31 | ofSetColor(ofColor::white);
32 | ofDrawBitmapString(controlsReport(), controlsPositions.x + padding, controlsPositions.y + padding*2);
33 | }
34 |
35 | void aumUserInterface::drawChains(vector chains) {
36 | ofVec2f position;
37 | for(int i = 0; i < chains.size(); i++) {
38 | position.x = (chainInfoPositions.x * (i+1)) + (chainInfoDimensions.x * i);
39 | position.y = chainInfoPositions.y;
40 | drawWaveforms(chains.at(i), position.x);
41 | drawChainReport(chains.at(i), position, i+1);
42 | drawMidiReport(chains.at(i), position.x, i);
43 | }
44 | }
45 |
46 | void aumUserInterface::drawWaveforms(aumAudioUnitChain* chain, float positionX) {
47 | drawDebugBox(positionX, waveformsPositions.y, waveformsDimensions.x, waveformsDimensions.y, getBackgroundColor(chain));
48 | chain->tap()->getStereoWaveform(leftWaveform, rightWaveform, waveformsDimensions.x, waveformsDimensions.y);
49 | ofSetColor(getTextColor(chain));
50 | ofTranslate(positionX, waveformsPositions.y);
51 | leftWaveform.draw();
52 | rightWaveform.draw();
53 | ofTranslate(-positionX, -waveformsPositions.y);
54 | }
55 |
56 | void aumUserInterface::drawChainReport(aumAudioUnitChain* chain, ofVec2f position, int chainNumber) {
57 | drawDebugBox(position.x, position.y, chainInfoDimensions.x, chainInfoDimensions.y, getBackgroundColor(chain));
58 | ofSetColor(getTextColor(chain));
59 | ofDrawBitmapString(chainReport(chain, chainNumber), position.x + padding, position.y + padding*2);
60 | }
61 |
62 | void aumUserInterface::drawMidiReport(aumAudioUnitChain* chain, float positionX, int index) {
63 | drawDebugBox(positionX, midiInfoPositions.y, midiInfoDimensions.x, midiInfoDimensions.y, getBackgroundColor(chain));
64 | ofDrawBitmapString(midiReport(chain, index), positionX + padding, midiInfoPositions.y + padding*2);
65 | }
66 |
67 | void aumUserInterface::drawDebugBox(int x, int y, int width, int height, ofColor color) {
68 | ofSetLineWidth(1);
69 | ofSetColor(color);
70 | ofFill();
71 | ofDrawRectangle(x, y, width, height);
72 | ofSetColor(ofColor::white);
73 | ofNoFill();
74 | ofDrawRectangle(x, y, width, height);
75 | }
76 |
77 | ofVec2f aumUserInterface::getControlsPositions() {
78 | return ofVec2f(
79 | ofGetWidth() - controlsDimensions.x - padding,
80 | ofGetHeight() - controlsDimensions.y - padding);
81 | }
82 |
83 | ofColor aumUserInterface::getBackgroundColor(aumAudioUnitChain* chain) {
84 | return chain->isSelected() ?
85 | ofColor(chain->getColor(), 128) :
86 | ofColor(chain->getColor(), 32);
87 | }
88 |
89 | ofColor aumUserInterface::getTextColor(aumAudioUnitChain* chain) {
90 | return chain->isSelected() ?
91 | ofColor(ofColor::white, 255) :
92 | ofColor(ofColor::white, 128);
93 | }
94 |
95 | string aumUserInterface::controlsReport() {
96 | stringstream report;
97 |
98 | if(isFocused) {
99 | report << " CONTROLS"
100 | << endl << ""
101 | << endl << " MANAGER"
102 | << endl << " ----------------------"
103 | << endl << " v: Toggle view overlay"
104 | << endl << " (upper) A: Show all UIs"
105 | << endl << " (lower) a: Show synth UIs"
106 | << endl << " m: Show mixer/compressor"
107 | << endl << "Left/right: Select chain"
108 | << endl << ""
109 | << endl << " SELECTED CHAIN [*]"
110 | << endl << " ----------------------"
111 | << endl << " u: Show audio unit UIs"
112 | << endl << " Up/down: Select preset"
113 | << endl << " (upper) S: Save current preset"
114 | << endl << " (lower) s: Save as new preset"
115 | << endl << " r: Rename current preset"
116 | << endl << " t: Send preset to trash"
117 | << endl << ""
118 | << endl << " EXAMPLE APP"
119 | << endl << " ----------------------"
120 | << endl << " SPACE: Start/stop playing"
121 | << endl << " [ / ]: Current note up / down";
122 | } else {
123 | report << "Press Command key to set focus";
124 | }
125 | return report.str();
126 | }
127 |
128 | string aumUserInterface::chainReport(aumAudioUnitChain *chain, int number) {
129 | string underline(chain->getName().length(), '-');
130 | stringstream report;
131 | report << "CHAIN " << number << " \"" << chain->getName() << "\""
132 | << endl << "---------" << underline << "-"
133 | << endl << chain->getUnitReport()
134 | << endl << ""
135 | << endl << chain->presets()->report();
136 | return report.str();
137 | }
138 |
139 | string aumUserInterface::midiReport(aumAudioUnitChain *chain, int index) {
140 | tempMidiReport = chain->getMidiReport();
141 | if(tempMidiReport.length() > 0) {
142 | reports[index] = tempMidiReport;
143 | lastMidiRecieved[index] = 0;
144 | } else {
145 | lastMidiRecieved[index]++;
146 | }
147 | ofSetColor(ofMap(lastMidiRecieved[index], 0, midiReceiptTimeout, 255, 0));
148 | return reports[index];
149 | }
150 |
--------------------------------------------------------------------------------
/src/ofxAudioUnitManager.cpp:
--------------------------------------------------------------------------------
1 | #include "ofxAudioUnitManager.h"
2 |
3 | void ofxAudioUnitManager::setup() {
4 | showDebugUI = false;
5 | drawDarkOverlay = false;
6 | numUnmanagedInputs = 0;
7 | userInterface.setup();
8 | compressor.setup("Main Compressor", kAudioUnitType_Effect, kAudioUnitSubType_DynamicsProcessor);
9 | mixer.connectTo(*compressor.getUnit()).connectTo(output);
10 | output.start();
11 | focusOnCommand = false;
12 | isFocused = true;
13 | ofAddListener(ofEvents().draw, this, &ofxAudioUnitManager::draw);
14 | ofAddListener(ofEvents().exit, this, &ofxAudioUnitManager::exit);
15 | ofAddListener(ofEvents().keyPressed, this, &ofxAudioUnitManager::keyPressed);
16 | }
17 |
18 | void ofxAudioUnitManager::setupDark() {
19 | setup();
20 | drawDarkOverlay = true;
21 | }
22 |
23 | void ofxAudioUnitManager::onlyFocusOnCommand() {
24 | focusOnCommand = true;
25 | isFocused = false;
26 | userInterface.setFocus(isFocused);
27 | }
28 |
29 | aumAudioUnitChain& ofxAudioUnitManager::createChain(aumAudioUnitChain *chain, string name, aumManagedAudioUnitMixer* altMixer, ofColor color) {
30 | userInterface.addChain();
31 | chains.push_back(chain);
32 | name = name == "" ? "chain" + ofToString(chains.size()) : name;
33 |
34 | ofxAudioUnitMixer* targetMixer = altMixer == NULL ? &mixer : altMixer->getUnit();
35 | int mixerBusIndex = nextMixerBusIndex(targetMixer);
36 | targetMixer->setInputBusCount(mixerBusIndex + 1);
37 | chain->setup(name, targetMixer, &compressor, mixerBusIndex, color);
38 |
39 | selectChain(chains.size() - 1);
40 | return *chain;
41 | }
42 |
43 | void ofxAudioUnitManager::addUnmanagedUnit(ofxAudioUnit* unit){
44 | numUnmanagedInputs++;
45 | int mixerBusIndex = nextMixerBusIndex(&mixer);
46 | mixer.setInputBusCount(mixerBusIndex + 1);
47 | unit->connectTo(mixer, mixerBusIndex);
48 | }
49 |
50 | void ofxAudioUnitManager::loadPresets(aumAudioUnitChain *chain) {
51 | chain->loadPresets();
52 | selectChain(chain);
53 | }
54 |
55 | void ofxAudioUnitManager::draw(ofEventArgs& args) {
56 | if(ofGetFrameNum() == 0) {
57 | selectChain(0);
58 | }
59 | if(showDebugUI) {
60 | if(drawDarkOverlay){
61 | ofSetColor(ofColor::black, 180);
62 | ofFill();
63 | ofDrawRectangle(0, 0, ofGetWidth(), ofGetHeight());
64 | }
65 | userInterface.drawChains(chains);
66 | userInterface.drawControls();
67 | }
68 | }
69 |
70 | void ofxAudioUnitManager::exit(ofEventArgs& args) {
71 | for(int i = 0; i < chains.size(); i++) {
72 | chains.at(i)->exit();
73 | }
74 | }
75 |
76 | void ofxAudioUnitManager::keyPressed(ofKeyEventArgs& args) {
77 | //Toggle focus on command
78 | if(focusOnCommand && args.key == 4352) {
79 | isFocused = !isFocused;
80 | userInterface.setFocus(isFocused);
81 | }
82 |
83 | if((focusOnCommand && isFocused) || !focusOnCommand) {
84 | if (args.key == 'u') {
85 | showSelectedChainUI();
86 | } else if (args.key == 'A') {
87 | showAllUIs();
88 | } else if (args.key == 'a') {
89 | showAllSynthUIs();
90 | } else if (args.key == 'm') {
91 | showMixerUI();
92 | showCompressorUI();
93 | } else if(args.key == 'v') {
94 | toggleDebugUI();
95 | } else if(args.key == 'S') {
96 | selectedChain->presets()->saveOverwrite();
97 | } else if(args.key == 's') {
98 | selectedChain->presets()->saveNew();
99 | } else if(args.key == 'r') {
100 | selectedChain->presets()->rename();
101 | } else if(args.key == 't') {
102 | selectedChain->presets()->trash();
103 | } else if(args.key == OF_KEY_DOWN) {
104 | selectedChain->presets()->increment();
105 | } else if(args.key == OF_KEY_UP) {
106 | selectedChain->presets()->decrement();
107 | } else if(args.key == OF_KEY_RIGHT) {
108 | incrementSelectedChain();
109 | } else if(args.key == OF_KEY_LEFT) {
110 | decrementSelectedChain();
111 | }
112 | }
113 | }
114 |
115 | void ofxAudioUnitManager::toggleDebugUI() {
116 | showDebugUI = !showDebugUI;
117 | }
118 |
119 | void ofxAudioUnitManager::enableDebugUI(bool show) {
120 | showDebugUI = show;
121 | }
122 |
123 | void ofxAudioUnitManager::incrementSelectedChain() {
124 | int index = selectedChainIndex + 1 >= chains.size() ? 0 : selectedChainIndex + 1;
125 | selectChain(index);
126 | }
127 |
128 | void ofxAudioUnitManager::decrementSelectedChain() {
129 | int index = selectedChainIndex - 1 < 0 ? chains.size() - 1 : selectedChainIndex - 1;
130 | selectChain(index);
131 | }
132 |
133 | ofxAudioUnitMixer* ofxAudioUnitManager::getMixer() {
134 | return &mixer;
135 | }
136 |
137 | vector ofxAudioUnitManager::allChains() {
138 | return chains;
139 | }
140 |
141 | aumAudioUnitChain* ofxAudioUnitManager::getChain(int chainId) {
142 | return chains.at(chainId);
143 | }
144 |
145 | void ofxAudioUnitManager::selectChain(int index) {
146 | for(int i = 0; i < chains.size(); i++) {
147 | i == index ? chains.at(i)->select() : chains.at(i)->deselect();
148 | }
149 | selectedChainIndex = index;
150 | selectedChain = chains.at(index);
151 | }
152 |
153 | void ofxAudioUnitManager::selectChain(aumAudioUnitChain *chain) {
154 | for(int i = 0; i < chains.size(); i++) {
155 | if(chains.at(i) == chain) {
156 | selectedChainIndex = i;
157 | }
158 | }
159 | chain->select();
160 | selectedChain = chain;
161 | }
162 |
163 | void ofxAudioUnitManager::showSelectedChainUI() {
164 | selectedChain->showUI(selectedChainIndex, chains.size());
165 | }
166 |
167 | void ofxAudioUnitManager::showAllSynthUIs() {
168 | for(int i = 0; i < chains.size(); i++) {
169 | chains.at(i)->showSynthUI(i, chains.size());
170 | }
171 | }
172 |
173 | void ofxAudioUnitManager::showAllUIs() {
174 | for(int i = 0; i < chains.size(); i++) {
175 | chains.at(i)->showUI(i, chains.size());
176 | }
177 | }
178 |
179 | void ofxAudioUnitManager::showMixerUI() {
180 | mixer.showUI("Mixer", ofGetScreenWidth() * 0.25, ofGetScreenHeight() * 0.25);
181 | }
182 |
183 | void ofxAudioUnitManager::showCompressorUI() {
184 | compressor.getUnit()->showUI("Compressor", ofGetScreenWidth() * 0.25, ofGetScreenHeight() * 0.5);
185 | }
186 |
187 | int ofxAudioUnitManager::nextMixerBusIndex(ofxAudioUnitMixer* mixer) {
188 | if(mixersToBusCounts.find(mixer) == mixersToBusCounts.end()) {
189 | mixersToBusCounts[mixer] = 0;
190 | } else {
191 | mixersToBusCounts[mixer]++;
192 | }
193 | return mixersToBusCounts[mixer];
194 | }
195 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain1/wiggly/My_Synth.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAABcAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAA
8 | AAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAA
9 | AAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEA
10 | AAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAA
11 | AAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAA
12 | HgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAA
13 | AAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAA
14 | AAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAx
15 | AAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAA
16 | AAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAA
17 | AD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQA
18 | AAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAA
19 | AAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAA
20 | UQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAA
21 | AAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAA==
22 |
23 | jucePluginState
24 |
25 | VkMyIcsNAAA8dGFsIGN1cnByb2dyYW09IjAiIHZlcnNpb249IjEuNyI+PHByb2dyYW1z
26 | Pjxwcm9ncmFtIHByb2dyYW1uYW1lPSIhIFN0YXJ0dXAgSnVubyBPc2MgVEFMIiB2b2x1
27 | bWU9IjAuNDY4MDAwMDI1IiBmaWx0ZXJ0eXBlPSIwIiBjdXRvZmY9IjEiIHJlc29uYW5j
28 | ZT0iMCIgb3NjMXZvbHVtZT0iMC43MTYwMDAwMjEiIG9zYzJ2b2x1bWU9IjAuNTY0MDAw
29 | MDEiIG9zYzN2b2x1bWU9IjAuMjM2MDAwMDE2IiBvc2Mxd2F2ZWZvcm09IjAuNSIgb3Nj
30 | MndhdmVmb3JtPSIwIiBvc2NzeW5jPSIwIiBvc2NtYXN0ZXJ0dW5lPSIwLjUiIG9zYzF0
31 | dW5lPSIwLjI3ODAwMDAyNyIgb3NjMnR1bmU9IjAuNDUyMDAwMDIyIiBvc2MxZmluZXR1
32 | bmU9IjAuNjAwMDAwMDI0IiBvc2MyZmluZXR1bmU9IjAuNSIgcG9ydGFtZW50bz0iMCIg
33 | a2V5Zm9sbG93PSIwIiBmaWx0ZXJjb250b3VyPSIwLjUiIGZpbHRlcmF0dGFjaz0iMCIg
34 | ZmlsdGVyZGVjYXk9IjAiIGZpbHRlcnN1c3RhaW49IjEiIGZpbHRlcnJlbGVhc2U9IjAi
35 | IGFtcGF0dGFjaz0iMC40NDQwMDAwMzYiIGFtcGRlY2F5PSIwLjQ0ODAwMDAxNCIgYW1w
36 | c3VzdGFpbj0iMSIgYW1wcmVsZWFzZT0iMC40MDQwMDAwMTQiIHZvaWNlcz0iMCIgcG9y
37 | dGFtZW50b21vZGU9IjAiIGxmbzF3YXZlZm9ybT0iMCIgbGZvMndhdmVmb3JtPSIwIiBs
38 | Zm8xcmF0ZT0iMC40MDQwMDAwMTQiIGxmbzJyYXRlPSIwIiBsZm8xYW1vdW50PSIwLjg0
39 | NDAwMDA0MSIgbGZvMmFtb3VudD0iMC41MjQwMDAwNDkiIGxmbzFkZXN0aW5hdGlvbj0i
40 | MCIgbGZvMmRlc3RpbmF0aW9uPSIwIiBsZm8xcGhhc2U9IjAiIGxmbzJwaGFzZT0iMCIg
41 | b3NjMXB3PSIwLjQ1MjAwMDAyMiIgb3NjMmZtPSIwIiBvc2MxcGhhc2U9IjAuNSIgb3Nj
42 | MnBoYXNlPSIwLjU1NjAwMDA1NCIgdHJhbnNwb3NlPSIwLjY0NDAwMDA1MyIgZnJlZWFk
43 | YXR0YWNrPSIwLjMyNDAwMDAwMSIgZnJlZWFkZGVjYXk9IjAuMDQ4MDAwMDAwNCIgZnJl
44 | ZWFkYW1vdW50PSIwIiBmcmVlYWRkZXN0aW5hdGlvbj0iMCIgbGZvMXN5bmM9IjEiIGxm
45 | bzFrZXl0cmlnZ2VyPSIwIiBsZm8yc3luYz0iMCIgbGZvMmtleXRyaWdnZXI9IjAiIHZl
46 | bG9jaXR5dm9sdW1lPSIwIiB2ZWxvY2l0eWNvbnRvdXI9IjAiIHZlbG9jaXR5Y3V0b2Zm
47 | PSIwIiBwaXRjaHdoZWVsY3V0b2ZmPSIwIiBwaXRjaHdoZWVscGl0Y2g9IjAiIGhpZ2hw
48 | YXNzPSIwIiBkZXR1bmU9IjAiIHZpbnRhZ2Vub2lzZT0iMCIgcmluZ21vZHVsYXRpb249
49 | IjAiIGNob3J1czFlbmFibGU9IjEiIGNob3J1czJlbmFibGU9IjEiIHJldmVyYndldD0i
50 | MCIgcmV2ZXJiZGVjYXk9IjAuNSIgcmV2ZXJicHJlZGVsYXk9IjAiIHJldmVyYmhpZ2hj
51 | dXQ9IjAiIHJldmVyYmxvd2N1dD0iMSIgb3NjYml0Y3J1c2hlcj0iMC4zMjAwMDAwMjMi
52 | IGZpbHRlcmRyaXZlPSIwIiBkZWxheXdldD0iMC4yMDQwMDAwMTEiIGRlbGF5dGltZT0i
53 | MC41IiBkZWxheXN5bmM9IjAiIGRlbGF5ZmFjdG9ybD0iMCIgZGVsYXlmYWN0b3JyPSIw
54 | IiBkZWxheWhpZ2hzaGVsZj0iMCIgZGVsYXlsb3dzaGVsZj0iMCIgZGVsYXlmZWVkYmFj
55 | az0iMC41IiBlbnZlbG9wZWVkaXRvcmRlc3QxPSIwLjU3MTQyODU5NyIgZW52ZWxvcGVl
56 | ZGl0b3JzcGVlZD0iMC42MDAwMDAwMjQiIGVudmVsb3BlZWRpdG9yYW1vdW50PSIwLjY3
57 | NjAwMDA1OSIgZW52ZWxvcGVvbmVzaG90PSIwIiBlbnZlbG9wZWZpeHRlbXBvPSIwIiB0
58 | YWIxb3Blbj0iMSIgdGFiMm9wZW49IjAiIHRhYjNvcGVuPSIwIiB0YWI0b3Blbj0iMSI+
59 | PHNwbGluZVBvaW50cz48c3BsaW5lUG9pbnQgaXNTdGFydFBvaW50PSIxIiBpc0VuZFBv
60 | aW50PSIwIiBjZW50ZXJQb2ludFg9IjAiIGNlbnRlclBvaW50WT0iMC41IiBjb250cm9s
61 | UG9pbnRMZWZ0WD0iMCIgY29udHJvbFBvaW50TGVmdFk9IjAuNSIgY29udHJvbFBvaW50
62 | UmlnaHRYPSIwLjEwMDAwMDAwMSIgY29udHJvbFBvaW50UmlnaHRZPSIwLjUiLz48c3Bs
63 | aW5lUG9pbnQgaXNTdGFydFBvaW50PSIwIiBpc0VuZFBvaW50PSIwIiBjZW50ZXJQb2lu
64 | dFg9IjAuMTMzMzMzMzQiIGNlbnRlclBvaW50WT0iMC4yOTUwMDAwMTciIGNvbnRyb2xQ
65 | b2ludExlZnRYPSIwLjAzMzMzMzMzODgiIGNvbnRyb2xQb2ludExlZnRZPSIwLjI5NTAw
66 | MDAxNyIgY29udHJvbFBvaW50UmlnaHRYPSIwLjIzMzMzMzM0OSIgY29udHJvbFBvaW50
67 | UmlnaHRZPSIwLjI5NTAwMDAxNyIvPjxzcGxpbmVQb2ludCBpc1N0YXJ0UG9pbnQ9IjAi
68 | IGlzRW5kUG9pbnQ9IjAiIGNlbnRlclBvaW50WD0iMC4yMjIyMjIyMjQiIGNlbnRlclBv
69 | aW50WT0iMC44NjUwMDAwMSIgY29udHJvbFBvaW50TGVmdFg9IjAuMTIyMjIyMjMiIGNv
70 | bnRyb2xQb2ludExlZnRZPSIwLjg2NTAwMDAxIiBjb250cm9sUG9pbnRSaWdodFg9IjAu
71 | MzIyMjIyMzUyIiBjb250cm9sUG9pbnRSaWdodFk9IjAuODY1MDAwMDEiLz48c3BsaW5l
72 | UG9pbnQgaXNTdGFydFBvaW50PSIwIiBpc0VuZFBvaW50PSIwIiBjZW50ZXJQb2ludFg9
73 | IjAuNDg4ODg4ODkiIGNlbnRlclBvaW50WT0iMC4xMDAwMDAwMjQiIGNvbnRyb2xQb2lu
74 | dExlZnRYPSIwLjM4ODg4ODg5NiIgY29udHJvbFBvaW50TGVmdFk9IjAuMTAwMDAwMDI0
75 | IiBjb250cm9sUG9pbnRSaWdodFg9IjAuNTg4ODg4OTQzIiBjb250cm9sUG9pbnRSaWdo
76 | dFk9IjAuMTAwMDAwMDI0Ii8+PHNwbGluZVBvaW50IGlzU3RhcnRQb2ludD0iMCIgaXNF
77 | bmRQb2ludD0iMCIgY2VudGVyUG9pbnRYPSIwLjYwMDAwMDAyNCIgY2VudGVyUG9pbnRZ
78 | PSIwLjcyNTAwMDAyNCIgY29udHJvbFBvaW50TGVmdFg9IjAuNSIgY29udHJvbFBvaW50
79 | TGVmdFk9IjAuNzI1MDAwMDI0IiBjb250cm9sUG9pbnRSaWdodFg9IjAuNzAwMDAwMDQ4
80 | IiBjb250cm9sUG9pbnRSaWdodFk9IjAuNzI1MDAwMDI0Ii8+PHNwbGluZVBvaW50IGlz
81 | U3RhcnRQb2ludD0iMCIgaXNFbmRQb2ludD0iMCIgY2VudGVyUG9pbnRYPSIwLjc0ODE0
82 | ODE0MyIgY2VudGVyUG9pbnRZPSIwLjIzNTAwMDAxNCIgY29udHJvbFBvaW50TGVmdFg9
83 | IjAuNjQ4MTQ4MTE5IiBjb250cm9sUG9pbnRMZWZ0WT0iMC4yMzUwMDAwMTQiIGNvbnRy
84 | b2xQb2ludFJpZ2h0WD0iMC44NDgxNDgxNjciIGNvbnRyb2xQb2ludFJpZ2h0WT0iMC4y
85 | MzUwMDAwMTQiLz48c3BsaW5lUG9pbnQgaXNTdGFydFBvaW50PSIwIiBpc0VuZFBvaW50
86 | PSIwIiBjZW50ZXJQb2ludFg9IjAuODA3NDA3Mzc5IiBjZW50ZXJQb2ludFk9IjAuODk5
87 | OTk5OTc2IiBjb250cm9sUG9pbnRMZWZ0WD0iMC43MDc0MDczNTUiIGNvbnRyb2xQb2lu
88 | dExlZnRZPSIwLjg5OTk5OTk3NiIgY29udHJvbFBvaW50UmlnaHRYPSIwLjkwNzQwNzQw
89 | MyIgY29udHJvbFBvaW50UmlnaHRZPSIwLjg5OTk5OTk3NiIvPjxzcGxpbmVQb2ludCBp
90 | c1N0YXJ0UG9pbnQ9IjAiIGlzRW5kUG9pbnQ9IjEiIGNlbnRlclBvaW50WD0iMSIgY2Vu
91 | dGVyUG9pbnRZPSIwLjUiIGNvbnRyb2xQb2ludExlZnRYPSIwLjg5OTk5OTk3NiIgY29u
92 | dHJvbFBvaW50TGVmdFk9IjAuNSIgY29udHJvbFBvaW50UmlnaHRYPSIxIiBjb250cm9s
93 | UG9pbnRSaWdodFk9IjAuNSIvPjwvc3BsaW5lUG9pbnRzPjwvcHJvZ3JhbT48L3Byb2dy
94 | YW1zPjxtaWRpbWFwLz48L3RhbD4A/w==
95 |
96 | manufacturer
97 | 1414481749
98 | name
99 | Untitled
100 | subtype
101 | 1852011892
102 | type
103 | 1635085685
104 | version
105 | 0
106 |
107 |
108 |
--------------------------------------------------------------------------------
/example/bin/data/AudioUnitPresets/chain1/rhythmic/My_Synth.aupreset:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | data
6 |
7 | AAAAAAAAAAAAAABcAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAA
8 | AAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAA
9 | AAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEA
10 | AAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAA
11 | AAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAA
12 | HgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAA
13 | AAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAA
14 | AAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAx
15 | AAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAA
16 | AAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAA
17 | AD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQA
18 | AAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAA
19 | AAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAA
20 | UQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAA
21 | AAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAA==
22 |
23 | jucePluginState
24 |
25 | VkMyIdENAAA8dGFsIGN1cnByb2dyYW09IjAiIHZlcnNpb249IjEuNyI+PHByb2dyYW1z
26 | Pjxwcm9ncmFtIHByb2dyYW1uYW1lPSIhIFN0YXJ0dXAgSnVubyBPc2MgVEFMIiB2b2x1
27 | bWU9IjAuNDgwMDAwMDE5IiBmaWx0ZXJ0eXBlPSIwIiBjdXRvZmY9IjEiIHJlc29uYW5j
28 | ZT0iMCIgb3NjMXZvbHVtZT0iMC42NzIwMDAwNTEiIG9zYzJ2b2x1bWU9IjAiIG9zYzN2
29 | b2x1bWU9IjAuMTk2MDAwMDEiIG9zYzF3YXZlZm9ybT0iMC41IiBvc2Myd2F2ZWZvcm09
30 | IjAuNSIgb3Njc3luYz0iMCIgb3NjbWFzdGVydHVuZT0iMC41IiBvc2MxdHVuZT0iMC4w
31 | NzYwMDAwMDUiIG9zYzJ0dW5lPSIwLjY0NDAwMDA1MyIgb3NjMWZpbmV0dW5lPSIwLjYw
32 | MDAwMDAyNCIgb3NjMmZpbmV0dW5lPSIwLjUiIHBvcnRhbWVudG89IjAiIGtleWZvbGxv
33 | dz0iMCIgZmlsdGVyY29udG91cj0iMC41IiBmaWx0ZXJhdHRhY2s9IjAiIGZpbHRlcmRl
34 | Y2F5PSIwLjAyODAwMDAwMDkiIGZpbHRlcnN1c3RhaW49IjEiIGZpbHRlcnJlbGVhc2U9
35 | IjAiIGFtcGF0dGFjaz0iMC40NDQwMDAwMzYiIGFtcGRlY2F5PSIwLjQ0ODAwMDAxNCIg
36 | YW1wc3VzdGFpbj0iMSIgYW1wcmVsZWFzZT0iMC4yMzYwMDAwMTYiIHZvaWNlcz0iMCIg
37 | cG9ydGFtZW50b21vZGU9IjAiIGxmbzF3YXZlZm9ybT0iMCIgbGZvMndhdmVmb3JtPSIw
38 | IiBsZm8xcmF0ZT0iMC4zODQwMDAwMDMiIGxmbzJyYXRlPSIwIiBsZm8xYW1vdW50PSIw
39 | LjY5NjAwMDA0IiBsZm8yYW1vdW50PSIwLjUyNDAwMDA0OSIgbGZvMWRlc3RpbmF0aW9u
40 | PSIwLjQyODU3MTQzMyIgbGZvMmRlc3RpbmF0aW9uPSIwIiBsZm8xcGhhc2U9IjAiIGxm
41 | bzJwaGFzZT0iMCIgb3NjMXB3PSIwLjQ1MjAwMDAyMiIgb3NjMmZtPSIwIiBvc2MxcGhh
42 | c2U9IjAuNSIgb3NjMnBoYXNlPSIwIiB0cmFuc3Bvc2U9IjAuNjQ0MDAwMDUzIiBmcmVl
43 | YWRhdHRhY2s9IjAuMjg0MDAwMDA5IiBmcmVlYWRkZWNheT0iMCIgZnJlZWFkYW1vdW50
44 | PSIwIiBmcmVlYWRkZXN0aW5hdGlvbj0iMC40MDAwMDAwMDYiIGxmbzFzeW5jPSIxIiBs
45 | Zm8xa2V5dHJpZ2dlcj0iMCIgbGZvMnN5bmM9IjAiIGxmbzJrZXl0cmlnZ2VyPSIwIiB2
46 | ZWxvY2l0eXZvbHVtZT0iMCIgdmVsb2NpdHljb250b3VyPSIwIiB2ZWxvY2l0eWN1dG9m
47 | Zj0iMCIgcGl0Y2h3aGVlbGN1dG9mZj0iMC41NzIwMDAwMjciIHBpdGNod2hlZWxwaXRj
48 | aD0iMCIgaGlnaHBhc3M9IjAiIGRldHVuZT0iMCIgdmludGFnZW5vaXNlPSIwIiByaW5n
49 | bW9kdWxhdGlvbj0iMCIgY2hvcnVzMWVuYWJsZT0iMSIgY2hvcnVzMmVuYWJsZT0iMSIg
50 | cmV2ZXJid2V0PSIwIiByZXZlcmJkZWNheT0iMC41IiByZXZlcmJwcmVkZWxheT0iMCIg
51 | cmV2ZXJiaGlnaGN1dD0iMCIgcmV2ZXJibG93Y3V0PSIxIiBvc2NiaXRjcnVzaGVyPSIx
52 | IiBmaWx0ZXJkcml2ZT0iMCIgZGVsYXl3ZXQ9IjAuMTg4MDAwMDA4IiBkZWxheXRpbWU9
53 | IjAuNjA4MDAwMDQiIGRlbGF5c3luYz0iMCIgZGVsYXlmYWN0b3JsPSIwIiBkZWxheWZh
54 | Y3RvcnI9IjAiIGRlbGF5aGlnaHNoZWxmPSIwIiBkZWxheWxvd3NoZWxmPSIwIiBkZWxh
55 | eWZlZWRiYWNrPSIwLjcyMDAwMDAyOSIgZW52ZWxvcGVlZGl0b3JkZXN0MT0iMC4yODU3
56 | MTQyOTgiIGVudmVsb3BlZWRpdG9yc3BlZWQ9IjAuNDAwMDAwMDA2IiBlbnZlbG9wZWVk
57 | aXRvcmFtb3VudD0iMCIgZW52ZWxvcGVvbmVzaG90PSIwIiBlbnZlbG9wZWZpeHRlbXBv
58 | PSIwIiB0YWIxb3Blbj0iMSIgdGFiMm9wZW49IjEiIHRhYjNvcGVuPSIwIiB0YWI0b3Bl
59 | bj0iMCI+PHNwbGluZVBvaW50cz48c3BsaW5lUG9pbnQgaXNTdGFydFBvaW50PSIxIiBp
60 | c0VuZFBvaW50PSIwIiBjZW50ZXJQb2ludFg9IjAiIGNlbnRlclBvaW50WT0iMC41IiBj
61 | b250cm9sUG9pbnRMZWZ0WD0iMCIgY29udHJvbFBvaW50TGVmdFk9IjAuNSIgY29udHJv
62 | bFBvaW50UmlnaHRYPSIwLjEwMDAwMDAwMSIgY29udHJvbFBvaW50UmlnaHRZPSIwLjUi
63 | Lz48c3BsaW5lUG9pbnQgaXNTdGFydFBvaW50PSIwIiBpc0VuZFBvaW50PSIwIiBjZW50
64 | ZXJQb2ludFg9IjAuMTMzMzMzMzQiIGNlbnRlclBvaW50WT0iMC4yOTUwMDAwMTciIGNv
65 | bnRyb2xQb2ludExlZnRYPSIwLjAzMzMzMzMzODgiIGNvbnRyb2xQb2ludExlZnRZPSIw
66 | LjI5NTAwMDAxNyIgY29udHJvbFBvaW50UmlnaHRYPSIwLjIzMzMzMzM0OSIgY29udHJv
67 | bFBvaW50UmlnaHRZPSIwLjI5NTAwMDAxNyIvPjxzcGxpbmVQb2ludCBpc1N0YXJ0UG9p
68 | bnQ9IjAiIGlzRW5kUG9pbnQ9IjAiIGNlbnRlclBvaW50WD0iMC4yMjIyMjIyMjQiIGNl
69 | bnRlclBvaW50WT0iMC44NjUwMDAwMSIgY29udHJvbFBvaW50TGVmdFg9IjAuMTIyMjIy
70 | MjMiIGNvbnRyb2xQb2ludExlZnRZPSIwLjg2NTAwMDAxIiBjb250cm9sUG9pbnRSaWdo
71 | dFg9IjAuMzIyMjIyMzUyIiBjb250cm9sUG9pbnRSaWdodFk9IjAuODY1MDAwMDEiLz48
72 | c3BsaW5lUG9pbnQgaXNTdGFydFBvaW50PSIwIiBpc0VuZFBvaW50PSIwIiBjZW50ZXJQ
73 | b2ludFg9IjAuNDg4ODg4ODkiIGNlbnRlclBvaW50WT0iMC4xMDAwMDAwMjQiIGNvbnRy
74 | b2xQb2ludExlZnRYPSIwLjM4ODg4ODg5NiIgY29udHJvbFBvaW50TGVmdFk9IjAuMTAw
75 | MDAwMDI0IiBjb250cm9sUG9pbnRSaWdodFg9IjAuNTg4ODg4OTQzIiBjb250cm9sUG9p
76 | bnRSaWdodFk9IjAuMTAwMDAwMDI0Ii8+PHNwbGluZVBvaW50IGlzU3RhcnRQb2ludD0i
77 | MCIgaXNFbmRQb2ludD0iMCIgY2VudGVyUG9pbnRYPSIwLjYwMDAwMDAyNCIgY2VudGVy
78 | UG9pbnRZPSIwLjcyNTAwMDAyNCIgY29udHJvbFBvaW50TGVmdFg9IjAuNSIgY29udHJv
79 | bFBvaW50TGVmdFk9IjAuNzI1MDAwMDI0IiBjb250cm9sUG9pbnRSaWdodFg9IjAuNzAw
80 | MDAwMDQ4IiBjb250cm9sUG9pbnRSaWdodFk9IjAuNzI1MDAwMDI0Ii8+PHNwbGluZVBv
81 | aW50IGlzU3RhcnRQb2ludD0iMCIgaXNFbmRQb2ludD0iMCIgY2VudGVyUG9pbnRYPSIw
82 | Ljc0ODE0ODE0MyIgY2VudGVyUG9pbnRZPSIwLjIzNTAwMDAxNCIgY29udHJvbFBvaW50
83 | TGVmdFg9IjAuNjQ4MTQ4MTE5IiBjb250cm9sUG9pbnRMZWZ0WT0iMC4yMzUwMDAwMTQi
84 | IGNvbnRyb2xQb2ludFJpZ2h0WD0iMC44NDgxNDgxNjciIGNvbnRyb2xQb2ludFJpZ2h0
85 | WT0iMC4yMzUwMDAwMTQiLz48c3BsaW5lUG9pbnQgaXNTdGFydFBvaW50PSIwIiBpc0Vu
86 | ZFBvaW50PSIwIiBjZW50ZXJQb2ludFg9IjAuODA3NDA3Mzc5IiBjZW50ZXJQb2ludFk9
87 | IjAuODk5OTk5OTc2IiBjb250cm9sUG9pbnRMZWZ0WD0iMC43MDc0MDczNTUiIGNvbnRy
88 | b2xQb2ludExlZnRZPSIwLjg5OTk5OTk3NiIgY29udHJvbFBvaW50UmlnaHRYPSIwLjkw
89 | NzQwNzQwMyIgY29udHJvbFBvaW50UmlnaHRZPSIwLjg5OTk5OTk3NiIvPjxzcGxpbmVQ
90 | b2ludCBpc1N0YXJ0UG9pbnQ9IjAiIGlzRW5kUG9pbnQ9IjEiIGNlbnRlclBvaW50WD0i
91 | MSIgY2VudGVyUG9pbnRZPSIwLjUiIGNvbnRyb2xQb2ludExlZnRYPSIwLjg5OTk5OTk3
92 | NiIgY29udHJvbFBvaW50TGVmdFk9IjAuNSIgY29udHJvbFBvaW50UmlnaHRYPSIxIiBj
93 | b250cm9sUG9pbnRSaWdodFk9IjAuNSIvPjwvc3BsaW5lUG9pbnRzPjwvcHJvZ3JhbT48
94 | L3Byb2dyYW1zPjxtaWRpbWFwLz48L3RhbD4AAA==
95 |
96 | manufacturer
97 | 1414481749
98 | name
99 | Untitled
100 | subtype
101 | 1852011892
102 | type
103 | 1635085685
104 | version
105 | 0
106 |
107 |
108 |
--------------------------------------------------------------------------------
/src/AudioUnits/aumUnit_AUMatrixReverb.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "aumMonitorableAudioUnit.h"
3 |
4 | /******************************************************************************/
5 | /* WARNING: THIS CLASS WAS GENERATED BY THE FOLLOWING FUNCTION: */
6 | /* */
7 | /* aumUnit_Generic::generateClassFileForAudioUnit(string deviceName); */
8 | /* */
9 | /* IF YOU EDIT THIS FILE, YOU RISK HAVING YOUR CHANGES OVERWRITTEN THE NEXT */
10 | /* TIME THE FILE IS RE-WRITTEN BY THIS FUNCTION. TO EDIT THIS FILE, PLEASE */
11 | /* COPY IT TO ANY OTHER FOLDER, RENAME THE CLASS, AND THEN MAKE EDITS. */
12 | /******************************************************************************/
13 |
14 | class aumUnit_AUMatrixReverb : public aumMonitorableAudioUnit
15 | {
16 | public:
17 | //Dry/Wet Mix
18 | //min: 0, max: 100, default: 100
19 | const static int dry_wet_mix = 0;
20 |
21 | //Small/Large Mix
22 | //min: 0, max: 100, default: 72
23 | const static int small_large_mix = 1;
24 |
25 | //Small Size
26 | //min: 0.0001, max: 0.05, default: 0.026721
27 | const static int small_size = 2;
28 |
29 | //Large Size
30 | //min: 0.005, max: 0.15, default: 0.0718
31 | const static int large_size = 3;
32 |
33 | //Pre-Delay
34 | //min: 0.001, max: 0.03, default: 0.015795
35 | const static int pre_delay = 4;
36 |
37 | //Large Delay
38 | //min: 0.001, max: 0.1, default: 0.00991
39 | const static int large_delay = 5;
40 |
41 | //Small Density
42 | //min: 0, max: 1, default: 0.52
43 | const static int small_density = 6;
44 |
45 | //Large Density
46 | //min: 0, max: 1, default: 0.74
47 | const static int large_density = 7;
48 |
49 | //Large Delay Range
50 | //min: 0, max: 1, default: 0.485
51 | const static int large_delay_range = 8;
52 |
53 | //Small HiFreq Absorption
54 | //min: 0.1, max: 1, default: 0.849
55 | const static int small_hifreq_absorption = 9;
56 |
57 | //Large HiFreq Absorption
58 | //min: 0.1, max: 1, default: 0.4155
59 | const static int large_hifreq_absorption = 10;
60 |
61 | //Small Delay Range
62 | //min: 0, max: 1, default: 0.58042
63 | const static int small_delay_range = 11;
64 |
65 | //Modulation Rate
66 | //min: 0.001, max: 2, default: 1.68014
67 | const static int modulation_rate = 12;
68 |
69 | //Modulation Depth
70 | //min: 0, max: 1, default: 0.515
71 | const static int modulation_depth = 13;
72 |
73 | //Filter Frequency
74 | //min: 10, max: 22050, default: 800
75 | const static int filter_frequency = 14;
76 |
77 | //Filter Bandwidth
78 | //min: 0.05, max: 4, default: 3
79 | const static int filter_bandwidth = 15;
80 |
81 | //Filter Gain
82 | //min: -18, max: 18, default: 0
83 | const static int filter_gain = 16;
84 |
85 | //These variables store the most recenty recorded values
86 | //of each of the parameters, for recording and detection
87 | AudioUnitParameterValue previous_dry_wet_mix;
88 | AudioUnitParameterValue previous_small_large_mix;
89 | AudioUnitParameterValue previous_small_size;
90 | AudioUnitParameterValue previous_large_size;
91 | AudioUnitParameterValue previous_pre_delay;
92 | AudioUnitParameterValue previous_large_delay;
93 | AudioUnitParameterValue previous_small_density;
94 | AudioUnitParameterValue previous_large_density;
95 | AudioUnitParameterValue previous_large_delay_range;
96 | AudioUnitParameterValue previous_small_hifreq_absorption;
97 | AudioUnitParameterValue previous_large_hifreq_absorption;
98 | AudioUnitParameterValue previous_small_delay_range;
99 | AudioUnitParameterValue previous_modulation_rate;
100 | AudioUnitParameterValue previous_modulation_depth;
101 | AudioUnitParameterValue previous_filter_frequency;
102 | AudioUnitParameterValue previous_filter_bandwidth;
103 | AudioUnitParameterValue previous_filter_gain;
104 |
105 | void setup(string _unitName) {
106 | aumManagedAudioUnit::setup(_unitName, 'aufx', 'mrev', 'appl', "aumUnit_AUMatrixReverb");
107 | }
108 |
109 | void doPrintChanges() {
110 | compareAndPrint("dry_wet_mix", previous_dry_wet_mix, get(dry_wet_mix));
111 | compareAndPrint("small_large_mix", previous_small_large_mix, get(small_large_mix));
112 | compareAndPrint("small_size", previous_small_size, get(small_size));
113 | compareAndPrint("large_size", previous_large_size, get(large_size));
114 | compareAndPrint("pre_delay", previous_pre_delay, get(pre_delay));
115 | compareAndPrint("large_delay", previous_large_delay, get(large_delay));
116 | compareAndPrint("small_density", previous_small_density, get(small_density));
117 | compareAndPrint("large_density", previous_large_density, get(large_density));
118 | compareAndPrint("large_delay_range", previous_large_delay_range, get(large_delay_range));
119 | compareAndPrint("small_hifreq_absorption", previous_small_hifreq_absorption, get(small_hifreq_absorption));
120 | compareAndPrint("large_hifreq_absorption", previous_large_hifreq_absorption, get(large_hifreq_absorption));
121 | compareAndPrint("small_delay_range", previous_small_delay_range, get(small_delay_range));
122 | compareAndPrint("modulation_rate", previous_modulation_rate, get(modulation_rate));
123 | compareAndPrint("modulation_depth", previous_modulation_depth, get(modulation_depth));
124 | compareAndPrint("filter_frequency", previous_filter_frequency, get(filter_frequency));
125 | compareAndPrint("filter_bandwidth", previous_filter_bandwidth, get(filter_bandwidth));
126 | compareAndPrint("filter_gain", previous_filter_gain, get(filter_gain));
127 | }
128 |
129 | void doRecordParams() {
130 | previous_dry_wet_mix = get(dry_wet_mix);
131 | previous_small_large_mix = get(small_large_mix);
132 | previous_small_size = get(small_size);
133 | previous_large_size = get(large_size);
134 | previous_pre_delay = get(pre_delay);
135 | previous_large_delay = get(large_delay);
136 | previous_small_density = get(small_density);
137 | previous_large_density = get(large_density);
138 | previous_large_delay_range = get(large_delay_range);
139 | previous_small_hifreq_absorption = get(small_hifreq_absorption);
140 | previous_large_hifreq_absorption = get(large_hifreq_absorption);
141 | previous_small_delay_range = get(small_delay_range);
142 | previous_modulation_rate = get(modulation_rate);
143 | previous_modulation_depth = get(modulation_depth);
144 | previous_filter_frequency = get(filter_frequency);
145 | previous_filter_bandwidth = get(filter_bandwidth);
146 | previous_filter_gain = get(filter_gain);
147 | }
148 | };
--------------------------------------------------------------------------------
/example/config.make:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # CONFIGURE PROJECT MAKEFILE (optional)
3 | # This file is where we make project specific configurations.
4 | ################################################################################
5 |
6 | ################################################################################
7 | # OF ROOT
8 | # The location of your root openFrameworks installation
9 | # (default) OF_ROOT = ../../..
10 | ################################################################################
11 | # OF_ROOT = ../../..
12 |
13 | ################################################################################
14 | # PROJECT ROOT
15 | # The location of the project - a starting place for searching for files
16 | # (default) PROJECT_ROOT = . (this directory)
17 | #
18 | ################################################################################
19 | # PROJECT_ROOT = .
20 |
21 | ################################################################################
22 | # PROJECT SPECIFIC CHECKS
23 | # This is a project defined section to create internal makefile flags to
24 | # conditionally enable or disable the addition of various features within
25 | # this makefile. For instance, if you want to make changes based on whether
26 | # GTK is installed, one might test that here and create a variable to check.
27 | ################################################################################
28 | # None
29 |
30 | ################################################################################
31 | # PROJECT EXTERNAL SOURCE PATHS
32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder.
33 | # Like source folders in the PROJECT_ROOT, these paths are subject to
34 | # exlclusion via the PROJECT_EXLCUSIONS list.
35 | #
36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
37 | #
38 | # Note: Leave a leading space when adding list items with the += operator
39 | ################################################################################
40 | # PROJECT_EXTERNAL_SOURCE_PATHS =
41 |
42 | ################################################################################
43 | # PROJECT EXCLUSIONS
44 | # These makefiles assume that all folders in your current project directory
45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
46 | # to look for source code. The any folders or files that match any of the
47 | # items in the PROJECT_EXCLUSIONS list below will be ignored.
48 | #
49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
50 | # string unless teh user adds a wildcard (%) operator to match subdirectories.
51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is
52 | # treated literally.
53 | #
54 | # (default) PROJECT_EXCLUSIONS = (blank)
55 | #
56 | # Will automatically exclude the following:
57 | #
58 | # $(PROJECT_ROOT)/bin%
59 | # $(PROJECT_ROOT)/obj%
60 | # $(PROJECT_ROOT)/%.xcodeproj
61 | #
62 | # Note: Leave a leading space when adding list items with the += operator
63 | ################################################################################
64 | # PROJECT_EXCLUSIONS =
65 |
66 | ################################################################################
67 | # PROJECT LINKER FLAGS
68 | # These flags will be sent to the linker when compiling the executable.
69 | #
70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
71 | #
72 | # Note: Leave a leading space when adding list items with the += operator
73 | ################################################################################
74 |
75 | # Currently, shared libraries that are needed are copied to the
76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
77 | # add a runtime path to search for those shared libraries, since they aren't
78 | # incorporated directly into the final executable application binary.
79 | # TODO: should this be a default setting?
80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs
81 |
82 | ################################################################################
83 | # PROJECT DEFINES
84 | # Create a space-delimited list of DEFINES. The list will be converted into
85 | # CFLAGS with the "-D" flag later in the makefile.
86 | #
87 | # (default) PROJECT_DEFINES = (blank)
88 | #
89 | # Note: Leave a leading space when adding list items with the += operator
90 | ################################################################################
91 | # PROJECT_DEFINES =
92 |
93 | ################################################################################
94 | # PROJECT CFLAGS
95 | # This is a list of fully qualified CFLAGS required when compiling for this
96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
97 | # defined in your platform specific core configuration files. These flags are
98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
99 | #
100 | # (default) PROJECT_CFLAGS = (blank)
101 | #
102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
103 | # your platform specific configuration file will be applied by default and
104 | # further flags here may not be needed.
105 | #
106 | # Note: Leave a leading space when adding list items with the += operator
107 | ################################################################################
108 | # PROJECT_CFLAGS =
109 |
110 | ################################################################################
111 | # PROJECT OPTIMIZATION CFLAGS
112 | # These are lists of CFLAGS that are target-specific. While any flags could
113 | # be conditionally added, they are usually limited to optimization flags.
114 | # These flags are added BEFORE the PROJECT_CFLAGS.
115 | #
116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
117 | #
118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
119 | #
120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
121 | #
122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
123 | #
124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
126 | # file will be applied by default and further optimization flags here may not
127 | # be needed.
128 | #
129 | # Note: Leave a leading space when adding list items with the += operator
130 | ################################################################################
131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
133 |
134 | ################################################################################
135 | # PROJECT COMPILERS
136 | # Custom compilers can be set for CC and CXX
137 | # (default) PROJECT_CXX = (blank)
138 | # (default) PROJECT_CC = (blank)
139 | # Note: Leave a leading space when adding list items with the += operator
140 | ################################################################################
141 | # PROJECT_CXX =
142 | # PROJECT_CC =
143 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ofxAudioUnitManager
2 | ===================
3 | This addon is a leightweight manager for Adam Carlucci's excellent [ofxAudioUnit](https://github.com/admsyn/ofxAudioUnit). It allows you to manage chains of Audio Units and presets with key presses at runtime, and to design new chains with just a few lines of code.
4 |
5 | 
6 |
7 | If you implement `ofxAudioUnitManager` in your sketch, you can show and hide the overlay above by hitting 'v'.
8 |
9 | Why do I need a manager for ofxAudioUnit?
10 | -----------------------------------------
11 | You don't. The original addon on is awesome and lets you do great things with Audio Units.
12 |
13 | I created this addon because I wanted to be able to experiment with sound quickly and fluidly. What `ofxAudioUnitManager` does is automate things you may find yourself doing manually with `ofxAudioUnit`, like connecting units together, saving and managing preset files and sending algorithmic MIDI sequences to synths for playback.
14 |
15 | In other words, this addon lets you focus more on sound design, by automating a lot of the boilerplate engineering stuff.
16 |
17 | How to create an Audio Unit chain
18 | ---------------------------------
19 | A chain is a number of units in sequence. The first unit in the sequence will be a synth, or sound-generating unit. The subsequent units will be filters or other types of processing units that modulate the audio signal they recieve from the prior unit in the chain, whether that's the source synth or another filter in the chain.
20 |
21 | First, the declarations:
22 | ```cpp
23 | ofxAudioUnitManager manager;
24 | ofxAudioUnitChain myChain;
25 | ofxManagedAudioUnit mySynth, myFilter, myReverb;
26 | ```
27 |
28 | Second, define the synths (and give them a unique name):
29 | ```cpp
30 | mySynth.setup("My Synth", 'aumu', 'ncut', 'TOGU');
31 | myFilter.setup("My Filter", kAudioUnitType_Effect, kAudioUnitSubType_LowPassFilter);
32 | myReverb.setup("My Reverb", kAudioUnitType_Effect, kAudioUnitSubType_MatrixReverb);
33 | ```
34 |
35 | Third, link the units to make a chain:
36 | ```cpp
37 | manager.createChain(&myChain)
38 | .link(&mySynth)
39 | .to(&myFilter)
40 | .to(&myReverb)
41 | .toMixer();
42 | ```
43 |
44 | That's it. Your chain is good to go.
45 |
46 | Those of you who used this addon prior to version 0.2.0 will notice how much simpler this is to do now.
47 |
48 | How to play notes
49 | -----------------
50 | The manager exposes an [ofxBpm](https://github.com/mirrorboy714/ofxBpm) instance, allowing you to declare listeners which will fire at precise moments, such as beat events:
51 |
52 | ```cpp
53 | void ofApp::setup() {
54 | ofAddListener(manager.bpm.beatEvent, this, &ofApp::play); //ofxBpm
55 | manager.bpm.start();
56 | }
57 | ```
58 |
59 | Each chain automatically sets up an [ofxMidi](https://github.com/danomatika/ofxMidi) instance for you, allowing you to send commands directly to the source synth of the chain. From there you can do all the usual MIDI stuff.
60 |
61 | ```cpp
62 | void ofApp::play(void){
63 | myChain.midi.sendNoteOn(1, 60); //ofxMidi
64 | }
65 | ```
66 |
67 | In the code above we are sending a middle C note on to `myChain` on every beat event. The example sketch does something similar, you can start it by pushing `spacebar`.
68 |
69 | How to manage presets
70 | ---------------------
71 | Once you have cloned this addon and installed the dependencies (see below), you can run the example sketch. While the example is running, use the `left`, `right`, `up` and `down` arrow keys. This will allow you to navigate to a chain and switch presets across all of it's units with a single key press.
72 |
73 | Again, while the sketch is running, you can use the following key commands. Note that when synth UIs are launched, they will be distributed neatly across your screen:
74 |
75 | Key | Command
76 | --- | -------
77 | `A` | Show all UIs for all chains
78 | `a` | Show all synth UIs
79 | `m` | Show the mixer UI
80 | `u` | Show all UIs for the currently selected chain
81 | `s` | Save current chain state as a new preset
82 | `S` | Save current preset on current chain (overwrite)
83 | `r` | Rename preset
84 | `t` | Send preset to trash
85 |
86 | You'll be able to go a long way just using these commands, but at some point you might want to look under the hood.
87 |
88 | What's under the hood?
89 | ----------------------
90 | On the disk, presets are saved in `bin/data` in a directory named `AudioUnitPresets`. When you navigate your presets using the commands above, the addon is just organizing and loading these files for you.
91 |
92 | The synth name you use when you setup your unit will be used by the addon to save and load your preset files, so that this:
93 |
94 | ```cpp
95 | mySynth.setup("My Synth", 'aumu', 'ncut', 'TOGU');
96 | ```
97 |
98 | Becomes this:
99 |
100 | 
101 |
102 | Now, imagine you've worked a while with one synth name, and you decide to change it to another. The addon won't be able to find it any more, unless you remembered to go and manually rename the files.
103 |
104 | In this scenario, the addon will assume the preset is missing. It will create a new one with the right name, which you will find sat alongside the old one. You can fix this by deleting the new file and renaming the old one.
105 |
106 | Don't be afraid
107 | ---------------
108 |
109 | The addon never deletes anything, so you won't experience loss through an incorrect key command. If you want to retrieve any previous version of presets you have edited, just take a look in the `AudioUnitPresets/.trash` folder.
110 |
111 | Known issues
112 | ------------
113 | Whenever a dialog pops up the openFrameworks window loses focus. If you try to use the keyboard, it will appear as though the app has become unresponsive. However all you need to do is click the window again to regain focus. If anyone knows a workaround for this, please contact me.
114 |
115 | How to try out this addon
116 | -------------------------
117 | 1. Clone [ofxAudioUnit](https://github.com/admsyn/ofxAudioUnit), follow the instructions in the readme, and make sure it works
118 | 2. Clone this addon and it's dependencies (listed below)
119 | 3. Install the [TAL NoiseMaker](http://kunz.corrupt.ch/products/tal-noisemaker) audio unit. The example project in this repo uses this synth. The 64bit version seems to work out of the box with openFrameworks 0.9.2
120 | 3. Launch the example project and try out the key controls listed on the screen
121 |
122 | Dependencies
123 | ------------
124 | - [ofxAudioUnit](https://github.com/admsyn/ofxAudioUnit) tested against [this commit](https://github.com/admsyn/ofxAudioUnit/commit/f6a2d16e4a84c52bdf5e5a65e8ad1bb78b9acc00)
125 | - [ofxMidi](https://github.com/danomatika/ofxMidi) tested against [this commit](https://github.com/danomatika/ofxMidi/commit/f9d85fd888ba23cf49207b362e2bcc8cfad352ed)
126 | - [ofxBpm](https://github.com/karolsenami/ofxBpm) tested against [this commit](https://github.com/karolsenami/ofxBpm/commit/f31bfb43055cdb2f0f5fcec30a28779b1e668544)
127 | - [TAL NoiseMaker](http://kunz.corrupt.ch/products/tal-noisemaker) to run the bundled examples
128 |
129 | Tested against [openFrameworks 0.10.1](http://openframeworks.cc/download/).
130 |
--------------------------------------------------------------------------------
/src/AudioUnits/aumUnit_Generic.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "aumManagedAudioUnit.h"
3 |
4 | class aumUnit_Generic : public aumManagedAudioUnit
5 | {
6 | protected:
7 | int unnamedCount;
8 | const string AUM_TO_TRIM = " \n\r\t\f\v_";
9 |
10 | public:
11 | void update() {
12 | //Nothing to do.
13 | }
14 |
15 | void generateClassFileForAudioUnit(string deviceName) {
16 | string classTemplate = getClassTemplate();
17 | ofStringReplace(classTemplate, "", deviceName);
18 | ofStringReplace(classTemplate, "", getParamsAsConstants());
19 | ofStringReplace(classTemplate, "", getParamsAsVars());
20 | ofStringReplace(classTemplate, "", getCompareCalls());
21 | ofStringReplace(classTemplate, "", getRecordStatements());
22 | writeFile(classTemplate, deviceName);
23 | }
24 |
25 | void printParamsAsConstants() {
26 | cout << "============================" << endl;
27 | cout << "#pragma once" << endl;
28 | cout << getParamsAsConstants();
29 | }
30 |
31 | string getParamsAsConstants() {
32 | vector paramList = unit.getParameterList();
33 | unnamedCount = 0;
34 | stringstream paramStr;
35 |
36 | for(int i = 0; i < paramList.size(); i++) {
37 | AudioUnitParameterInfo& p = paramList[i];
38 | string friendlyName = p.name;
39 |
40 | if(friendlyName.size() > 0) {
41 | friendlyName = formatFriendlyName(friendlyName);
42 | paramStr << " //" << p.name << endl;
43 | } else {
44 | friendlyName = "unnamed" + ofToString(++unnamedCount);
45 | paramStr << " //No name found" << endl;
46 | }
47 |
48 | paramStr << " //min: " << p.minValue << ", max: " << p.maxValue << ", default: " << p.defaultValue << endl;
49 | paramStr << " const static int " << friendlyName << " = " << i << ";";
50 |
51 | if(i != paramList.size() - 1) paramStr << endl << endl;
52 | }
53 |
54 | return paramStr.str();
55 | }
56 |
57 | string getParamsAsVars() {
58 | vector paramList = unit.getParameterList();
59 | unnamedCount = 0;
60 | stringstream paramStr;
61 |
62 | for(int i = 0; i < paramList.size(); i++) {
63 | AudioUnitParameterInfo& p = paramList[i];
64 | string friendlyName = p.name;
65 |
66 | if(friendlyName.size() > 0) {
67 | friendlyName = formatFriendlyName(friendlyName);
68 | } else {
69 | friendlyName = "unnamed" + ofToString(++unnamedCount);
70 | }
71 |
72 | paramStr << " AudioUnitParameterValue " << "previous_" << friendlyName << ";";
73 |
74 | if(i != paramList.size() - 1) paramStr << endl;
75 | }
76 |
77 | return paramStr.str();
78 | }
79 |
80 | string getCompareCalls() {
81 | vector paramList = unit.getParameterList();
82 | unnamedCount = 0;
83 | stringstream paramStr;
84 |
85 | for(int i = 0; i < paramList.size(); i++) {
86 | AudioUnitParameterInfo& p = paramList[i];
87 | string friendlyName = p.name;
88 |
89 | if(friendlyName.size() > 0) {
90 | friendlyName = formatFriendlyName(friendlyName);
91 | } else {
92 | friendlyName = "unnamed" + ofToString(++unnamedCount);
93 | }
94 |
95 | paramStr << " compareAndPrint(\"" + friendlyName + "\", previous_" + friendlyName + ", get(" + friendlyName + "));";
96 |
97 | if(i != paramList.size() - 1) paramStr << endl;
98 | }
99 |
100 | return paramStr.str();
101 | }
102 |
103 | string getRecordStatements() {
104 | vector paramList = unit.getParameterList();
105 | unnamedCount = 0;
106 | stringstream paramStr;
107 |
108 | for(int i = 0; i < paramList.size(); i++) {
109 | AudioUnitParameterInfo& p = paramList[i];
110 | string friendlyName = p.name;
111 |
112 | if(friendlyName.size() > 0) {
113 | friendlyName = formatFriendlyName(friendlyName);
114 | } else {
115 | friendlyName = "unnamed" + ofToString(++unnamedCount);
116 | }
117 |
118 | paramStr << " previous_" + friendlyName + " = get(" + friendlyName + ");";
119 |
120 | if(i != paramList.size() - 1) paramStr << endl;
121 | }
122 |
123 | return paramStr.str();
124 | }
125 |
126 | string formatFriendlyName(string givenName) {
127 | string friendlyName = ofToLower(givenName);
128 | ofStringReplace(friendlyName, " ", "_");
129 | ofStringReplace(friendlyName, ".", "_");
130 | ofStringReplace(friendlyName, "-", "_");
131 | ofStringReplace(friendlyName, ".", "_");
132 | ofStringReplace(friendlyName, "(", "_");
133 | ofStringReplace(friendlyName, ")", "_");
134 | ofStringReplace(friendlyName, "&", "_");
135 | ofStringReplace(friendlyName, ":", "_");
136 | ofStringReplace(friendlyName, "/", "_");
137 | ofStringReplace(friendlyName, "\\", "_");
138 | ofStringReplace(friendlyName, ">", "GT");
139 | ofStringReplace(friendlyName, "#", "_sharp");
140 | ofStringReplace(friendlyName, "<", "LT");
141 | ofStringReplace(friendlyName, "*", "MULTIPLY");
142 | ofStringReplace(friendlyName, "____", "_");
143 | ofStringReplace(friendlyName, "___", "_");
144 | ofStringReplace(friendlyName, "__", "_");
145 |
146 | return trim(friendlyName);
147 | }
148 |
149 | string ltrim(const string& s) {
150 | size_t start = s.find_first_not_of(AUM_TO_TRIM);
151 | return (start == std::string::npos) ? "" : s.substr(start);
152 | }
153 |
154 | string rtrim(const string& s) {
155 | size_t end = s.find_last_not_of(AUM_TO_TRIM);
156 | return (end == std::string::npos) ? "" : s.substr(0, end + 1);
157 | }
158 |
159 | string trim(const string& s) {
160 | return rtrim(ltrim(s));
161 | }
162 |
163 | void writeFile(string contents, string deviceName) {
164 | ofFile file(ofToDataPath("../../../src/AudioUnits/aumUnit_" + deviceName + ".h"), ofFile::WriteOnly);
165 | file.create();
166 | file << contents;
167 | }
168 |
169 | string getClassTemplate() {
170 | stringstream classTemplate;
171 | classTemplate << "#pragma once"
172 | << endl << "#include \"aumMonitorableAudioUnit.h\""
173 | << endl << ""
174 | << endl << "/******************************************************************************/"
175 | << endl << "/* WARNING: THIS CLASS WAS GENERATED BY THE FOLLOWING FUNCTION: */"
176 | << endl << "/* */"
177 | << endl << "/* aumUnit_Generic::generateClassFileForAudioUnit(string deviceName); */"
178 | << endl << "/* */"
179 | << endl << "/* IF YOU EDIT THIS FILE, YOU RISK HAVING YOUR CHANGES OVERWRITTEN THE NEXT */"
180 | << endl << "/* TIME THE FILE IS RE-WRITTEN BY THIS FUNCTION. TO EDIT THIS FILE, PLEASE */"
181 | << endl << "/* COPY IT TO ANY OTHER FOLDER, RENAME THE CLASS, AND THEN MAKE EDITS. */"
182 | << endl << "/******************************************************************************/"
183 | << endl << ""
184 | << endl << "class aumUnit_ : public aumMonitorableAudioUnit"
185 | << endl << "{"
186 | << endl << "public:"
187 | << endl << ""
188 | << endl << ""
189 | << endl << " //These variables store the most recenty recorded values"
190 | << endl << " //of each of the parameters, for recording and detection"
191 | << endl << ""
192 | << endl << ""
193 | << endl << " void setup(string _unitName) {"
194 | << endl << " aumManagedAudioUnit::setup(_unitName, '" << stringify(osType) << "', '" << stringify(osSubType) << "', '" << stringify(osManufacturer) << "', \"aumUnit_\");"
195 | << endl << " }"
196 | << endl << ""
197 | << endl << " void doPrintChanges() {"
198 | << endl << ""
199 | << endl << " }"
200 | << endl << ""
201 | << endl << " void doRecordParams() {"
202 | << endl << ""
203 | << endl << " }"
204 | << endl << "};";
205 | return classTemplate.str();
206 | }
207 | };
208 |
--------------------------------------------------------------------------------
/src/Handlers/aumPresets.cpp:
--------------------------------------------------------------------------------
1 | #include "aumPresets.h"
2 |
3 | void aumPresets::setup(string _chainName, ofxAudioUnitMixer* _mixer, aumManagedAudioUnit* _compressor){
4 | chainName = _chainName;
5 | selected = false;
6 | currentPreset = -1;
7 | lastSaved = -1;
8 | lastSaveTimer = 0;
9 | lastSaveTimeout = 60;
10 | storageDir = "AudioUnitPresets/";
11 | trashDir = ".trash/";
12 | mixerName = "Mixer";
13 | anyExtension = "";
14 | presetExtension = "aupreset";
15 | mixer = _mixer;
16 | compressor = _compressor;
17 | ensureDirectories();
18 | readFromDisk();
19 |
20 | ofDirectory dir(storageDir);
21 | storagePath = dir.getAbsolutePath() + "/";
22 |
23 | if(presets.size() > 0) {
24 | currentPreset = 0;
25 | load(currentPreset);
26 | }
27 |
28 | loadMasterUnits();
29 | }
30 |
31 | void aumPresets::load(int presetIndex) {
32 | string presetPath = path(presetNames.at(presetIndex));
33 | for(int i = 0; i < units.size(); i++) {
34 | string presetFullPath = presetPath + filename(unitSlugs.at(i));
35 | if(!ofFile(presetFullPath).exists()) {
36 | units.at(i)->getUnit()->saveCustomPresetAtPath(presetFullPath);
37 | }
38 | units.at(i)->getUnit()->loadCustomPresetAtPath(presetFullPath);
39 | }
40 | }
41 |
42 | void aumPresets::add(aumManagedAudioUnit* unit) {
43 | units.push_back(unit);
44 | unitSlugs.push_back(unit->getUnitSlug());
45 | }
46 |
47 | void aumPresets::saveNew() {
48 | string presetName = ofSystemTextBoxDialog("Preset name:");
49 | if(validateName(presetName)) {
50 | save(presetName);
51 | }
52 | }
53 |
54 | void aumPresets::saveOverwrite() {
55 | if(currentPreset > -1 && presetNames.size() >= currentPreset + 1) {
56 | string presetName = presetNames.at(currentPreset);
57 | trash();
58 | save(presetName);
59 | }
60 | }
61 |
62 | void aumPresets::rename() {
63 | if(currentPreset > -1) {
64 | string newPresetName = ofSystemTextBoxDialog("New name:", presetNames.at(currentPreset));
65 | if(validateName(newPresetName, currentPreset)) {
66 | string newPresetPath = path(newPresetName);
67 | for(int i = 0; i < units.size(); i++) {
68 | string newPresetFilename = filename(unitSlugs.at(i));
69 | presets.at(currentPreset).at(i).renameTo(newPresetPath + newPresetFilename);
70 | }
71 | string oldPresetPath = path(presetNames.at(currentPreset));
72 | dir.removeDirectory(oldPresetPath, true);
73 | presetNames[currentPreset] = newPresetName;
74 | readFromDisk();
75 | currentPreset = indexOf(newPresetName);
76 | }
77 | }
78 | }
79 |
80 | void aumPresets::trash() {
81 | if(currentPreset > -1) {
82 | ofDirectory presetDir(path(presetNames.at(currentPreset)));
83 | presetDir.renameTo(newTrashPath(presetNames.at(currentPreset)));
84 | presets.erase(presets.begin() + currentPreset);
85 | presetNames.erase(presetNames.begin() + currentPreset);
86 | readFromDisk();
87 | ensureValidIndex();
88 | }
89 | }
90 |
91 | void aumPresets::increment() {
92 | if(currentPreset > -1) {
93 | readFromDisk();
94 | currentPreset = currentPreset == presets.size() - 1 ? currentPreset = 0 : currentPreset + 1;
95 | load(currentPreset);
96 | }
97 | }
98 |
99 | void aumPresets::decrement() {
100 | if(currentPreset > -1) {
101 | readFromDisk();
102 | currentPreset = currentPreset == 0 ? presets.size() - 1 : currentPreset - 1;
103 | load(currentPreset);
104 | }
105 | }
106 |
107 | void aumPresets::select() {
108 | selected = true;
109 | }
110 |
111 | void aumPresets::deselect() {
112 | selected = false;
113 | }
114 |
115 | void aumPresets::readFromDisk() {
116 | clearPresets();
117 | vector chainDirContents = dirContents(chainName, anyExtension);
118 |
119 | for(int i = 0; i < chainDirContents.size(); i++) {
120 | if(chainDirContents.at(i).isDirectory()) {
121 | string presetName = chainDirContents.at(i).getFileName();
122 | presetNames.push_back(presetName);
123 | loadPresetsInChainOrder(presetName);
124 | }
125 | }
126 | ensureValidIndex();
127 | }
128 |
129 | void aumPresets::loadPresetsInChainOrder(string presetName) {
130 | vector files;
131 | for(int i = 0; i < units.size(); i++) {
132 | files.push_back(ofFile(path(presetName) + filename(unitSlugs.at(i))));
133 | }
134 | presets.push_back(files);
135 | }
136 |
137 | int aumPresets::currentIndex(){
138 | return currentPreset;
139 | }
140 |
141 | string aumPresets::report() {
142 | string icon = selected ? "[*]" : "[ ]";
143 | stringstream report;
144 | report << "PRESETS" << endl << "-------";
145 |
146 | for(int i = 0; i < presetNames.size(); i++) {
147 | report << endl << trim(presetNames.at(i));
148 | if(i == currentIndex()) {
149 | report << " " << icon;
150 | }
151 | if(i == lastSaved) {
152 | report << " <- saved";
153 | lastSaveTimer++;
154 | if(lastSaveTimer >= lastSaveTimeout) {
155 | lastSaveTimer = 0;
156 | lastSaved = -1;
157 | }
158 | }
159 | }
160 |
161 | return report.str();
162 | }
163 |
164 | int aumPresets::indexOf(string presetName) {
165 | for(int i = 0; i < presets.size(); i++) {
166 | if(presetNames.at(i) == presetName) {
167 | return i;
168 | }
169 | }
170 | cout << "ERROR: Could not find index of preset" << endl;
171 | return -1;
172 | }
173 |
174 | void aumPresets::ensureValidIndex() {
175 | if(currentPreset > presets.size() - 1) {
176 | currentPreset = presets.size() - 1;
177 | }
178 | }
179 |
180 | vector aumPresets::dirContents(string path, string extensions) {
181 | dir.allowExt(extensions);
182 | dir.listDir(storageDir + path);
183 | return dir.getFiles();
184 | }
185 |
186 | void aumPresets::clearPresets() {
187 | presets.clear();
188 | presetNames.clear();
189 | }
190 |
191 | string aumPresets::path(string presetName) {
192 | ofDirectory dir(storageDir + chainName);
193 | return dir.getAbsolutePath() + "/" + presetName + "/";
194 | }
195 |
196 | string aumPresets::newTrashPath(string presetName) {
197 | string timeIndexedTrashDir = storageDir + trashDir + ofGetTimestampString() + "/";
198 | ofDirectory timedTrashDir(timeIndexedTrashDir);
199 | timedTrashDir.create();
200 | ofDirectory trashChainDir(timeIndexedTrashDir + chainName);
201 | trashChainDir.create();
202 | return trashChainDir.getAbsolutePath() + "/" + presetName + "/";
203 | }
204 |
205 | string aumPresets::filename(string unitSlug) {
206 | return unitSlug + "." + presetExtension;
207 | }
208 |
209 | string aumPresets::trim(string presetName) {
210 | return presetName.length() < 22 ? presetName : presetName.substr(0, 18) + "...";
211 | }
212 |
213 | void aumPresets::ensureDirectories() {
214 | ofDirectory storage(storageDir);
215 | if(!storage.exists()) {
216 | storage.create();
217 | }
218 | ofDirectory trash(storageDir + trashDir);
219 | if(!trash.exists()) {
220 | trash.create();
221 | }
222 | ofDirectory chain(storageDir + chainName);
223 | if(!chain.exists()) {
224 | chain.create();
225 | }
226 | }
227 |
228 | string allowableCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-";
229 | bool aumPresets::validateName(string newPresetName, int alertDialogException) {
230 | bool nameIsUnique = true;
231 | for(int i = 0; i < presetNames.size(); i++) {
232 | if(ofToUpper(newPresetName) == ofToUpper(presetNames.at(i))) {
233 | nameIsUnique = false;
234 | if(i != alertDialogException) {
235 | ofSystemAlertDialog("Name '" + newPresetName + "' already in use on this chain");
236 | }
237 | }
238 | }
239 | bool nameIsValid = true;
240 | if(!(newPresetName.length() > 0 && newPresetName.find_first_not_of(allowableCharacters) == std::string::npos)) {
241 | nameIsValid = false;
242 | ofSystemAlertDialog("Name '" + newPresetName + "' is not valid");
243 | }
244 | return nameIsValid && nameIsUnique;
245 | }
246 |
247 | void aumPresets::save(string presetName) {
248 | string presetPath = path(presetName);
249 | dir.createDirectory(presetPath);
250 | for(int i = 0; i < units.size(); i++) {
251 | string presetFilename = filename(unitSlugs.at(i));
252 | units.at(i)->getUnit()->saveCustomPresetAtPath(presetPath + presetFilename);
253 | }
254 | saveMasterUnits();
255 | readFromDisk();
256 | currentPreset = indexOf(presetName);
257 | lastSaved = currentPreset;
258 | }
259 |
260 | void aumPresets::saveMasterUnits(){
261 | mixer->saveCustomPresetAtPath(storagePath + filename(mixerName));
262 | compressor->getUnit()->saveCustomPresetAtPath(storagePath + filename(compressor->getUnitSlug()));
263 | }
264 |
265 | void aumPresets::loadMasterUnits(){
266 | mixer->loadCustomPresetAtPath(storagePath + filename(mixerName));
267 | compressor->getUnit()->loadCustomPresetAtPath(storagePath + filename(compressor->getUnitSlug()));
268 | }
269 |
--------------------------------------------------------------------------------
/src/Params/aum_TALNoiseMaker_Params.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | //No name found
4 | //min: 0, max: 1, default: 0
5 | const static int TALNoiseMaker_unnamed1 = 0;
6 |
7 | //volume
8 | //min: 0, max: 1, default: 0
9 | const static int TALNoiseMaker_volume = 1;
10 |
11 | //filtertype
12 | //min: 0, max: 1, default: 0
13 | const static int TALNoiseMaker_filtertype = 2;
14 |
15 | //cutoff
16 | //min: 0, max: 1, default: 0
17 | const static int TALNoiseMaker_cutoff = 3;
18 |
19 | //resonance
20 | //min: 0, max: 1, default: 0
21 | const static int TALNoiseMaker_resonance = 4;
22 |
23 | //keyfollow
24 | //min: 0, max: 1, default: 0
25 | const static int TALNoiseMaker_keyfollow = 5;
26 |
27 | //filtercontour
28 | //min: 0, max: 1, default: 0
29 | const static int TALNoiseMaker_filtercontour = 6;
30 |
31 | //filterattack
32 | //min: 0, max: 1, default: 0
33 | const static int TALNoiseMaker_filterattack = 7;
34 |
35 | //filterdecay
36 | //min: 0, max: 1, default: 0
37 | const static int TALNoiseMaker_filterdecay = 8;
38 |
39 | //filtersustain
40 | //min: 0, max: 1, default: 0
41 | const static int TALNoiseMaker_filtersustain = 9;
42 |
43 | //filterrelease
44 | //min: 0, max: 1, default: 0
45 | const static int TALNoiseMaker_filterrelease = 10;
46 |
47 | //ampattack
48 | //min: 0, max: 1, default: 0
49 | const static int TALNoiseMaker_ampattack = 11;
50 |
51 | //ampdecay
52 | //min: 0, max: 1, default: 0
53 | const static int TALNoiseMaker_ampdecay = 12;
54 |
55 | //ampsustain
56 | //min: 0, max: 1, default: 0
57 | const static int TALNoiseMaker_ampsustain = 13;
58 |
59 | //amprelease
60 | //min: 0, max: 1, default: 0
61 | const static int TALNoiseMaker_amprelease = 14;
62 |
63 | //osc1volume
64 | //min: 0, max: 1, default: 0
65 | const static int TALNoiseMaker_osc1volume = 15;
66 |
67 | //osc2volume
68 | //min: 0, max: 1, default: 0
69 | const static int TALNoiseMaker_osc2volume = 16;
70 |
71 | //osc3volume
72 | //min: 0, max: 1, default: 0
73 | const static int TALNoiseMaker_osc3volume = 17;
74 |
75 | //oscmastertune
76 | //min: 0, max: 1, default: 0
77 | const static int TALNoiseMaker_oscmastertune = 18;
78 |
79 | //osc1tune
80 | //min: 0, max: 1, default: 0
81 | const static int TALNoiseMaker_osc1tune = 19;
82 |
83 | //osc2tune
84 | //min: 0, max: 1, default: 0
85 | const static int TALNoiseMaker_osc2tune = 20;
86 |
87 | //osc1finetune
88 | //min: 0, max: 1, default: 0
89 | const static int TALNoiseMaker_osc1finetune = 21;
90 |
91 | //osc2finetune
92 | //min: 0, max: 1, default: 0
93 | const static int TALNoiseMaker_osc2finetune = 22;
94 |
95 | //osc1waveform
96 | //min: 0, max: 1, default: 0
97 | const static int TALNoiseMaker_osc1waveform = 23;
98 |
99 | //osc2waveform
100 | //min: 0, max: 1, default: 0
101 | const static int TALNoiseMaker_osc2waveform = 24;
102 |
103 | //oscsync
104 | //min: 0, max: 1, default: 0
105 | const static int TALNoiseMaker_oscsync = 25;
106 |
107 | //lfo1waveform
108 | //min: 0, max: 1, default: 0
109 | const static int TALNoiseMaker_lfo1waveform = 26;
110 |
111 | //lfo2waveform
112 | //min: 0, max: 1, default: 0
113 | const static int TALNoiseMaker_lfo2waveform = 27;
114 |
115 | //lfo1rate
116 | //min: 0, max: 1, default: 0
117 | const static int TALNoiseMaker_lfo1rate = 28;
118 |
119 | //lfo2rate
120 | //min: 0, max: 1, default: 0
121 | const static int TALNoiseMaker_lfo2rate = 29;
122 |
123 | //lfo1amount
124 | //min: 0, max: 1, default: 0
125 | const static int TALNoiseMaker_lfo1amount = 30;
126 |
127 | //lfo2amount
128 | //min: 0, max: 1, default: 0
129 | const static int TALNoiseMaker_lfo2amount = 31;
130 |
131 | //lfo1destination
132 | //min: 0, max: 1, default: 0
133 | const static int TALNoiseMaker_lfo1destination = 32;
134 |
135 | //lfo2destination
136 | //min: 0, max: 1, default: 0
137 | const static int TALNoiseMaker_lfo2destination = 33;
138 |
139 | //lfo1phase
140 | //min: 0, max: 1, default: 0
141 | const static int TALNoiseMaker_lfo1phase = 34;
142 |
143 | //lfo2phase
144 | //min: 0, max: 1, default: 0
145 | const static int TALNoiseMaker_lfo2phase = 35;
146 |
147 | //osc2fm
148 | //min: 0, max: 1, default: 0
149 | const static int TALNoiseMaker_osc2fm = 36;
150 |
151 | //osc2phase
152 | //min: 0, max: 1, default: 0
153 | const static int TALNoiseMaker_osc2phase = 37;
154 |
155 | //osc1pw
156 | //min: 0, max: 1, default: 0
157 | const static int TALNoiseMaker_osc1pw = 38;
158 |
159 | //osc1phase
160 | //min: 0, max: 1, default: 0
161 | const static int TALNoiseMaker_osc1phase = 39;
162 |
163 | //transpose
164 | //min: 0, max: 1, default: 0
165 | const static int TALNoiseMaker_transpose = 40;
166 |
167 | //freeadattack
168 | //min: 0, max: 1, default: 0
169 | const static int TALNoiseMaker_freeadattack = 41;
170 |
171 | //freeaddecay
172 | //min: 0, max: 1, default: 0
173 | const static int TALNoiseMaker_freeaddecay = 42;
174 |
175 | //freeadamount
176 | //min: 0, max: 1, default: 0
177 | const static int TALNoiseMaker_freeadamount = 43;
178 |
179 | //freeaddestination
180 | //min: 0, max: 1, default: 0
181 | const static int TALNoiseMaker_freeaddestination = 44;
182 |
183 | //lfo1sync
184 | //min: 0, max: 1, default: 0
185 | const static int TALNoiseMaker_lfo1sync = 45;
186 |
187 | //lfo1keytrigger
188 | //min: 0, max: 1, default: 0
189 | const static int TALNoiseMaker_lfo1keytrigger = 46;
190 |
191 | //lfo2sync
192 | //min: 0, max: 1, default: 0
193 | const static int TALNoiseMaker_lfo2sync = 47;
194 |
195 | //lfo2keytrigger
196 | //min: 0, max: 1, default: 0
197 | const static int TALNoiseMaker_lfo2keytrigger = 48;
198 |
199 | //portamento
200 | //min: 0, max: 1, default: 0
201 | const static int TALNoiseMaker_portamento = 49;
202 |
203 | //portamentomode
204 | //min: 0, max: 1, default: 0
205 | const static int TALNoiseMaker_portamentomode = 50;
206 |
207 | //voices
208 | //min: 0, max: 1, default: 0
209 | const static int TALNoiseMaker_voices = 51;
210 |
211 | //velocityvolume
212 | //min: 0, max: 1, default: 0
213 | const static int TALNoiseMaker_velocityvolume = 52;
214 |
215 | //velocitycontour
216 | //min: 0, max: 1, default: 0
217 | const static int TALNoiseMaker_velocitycontour = 53;
218 |
219 | //velocitycutoff
220 | //min: 0, max: 1, default: 0
221 | const static int TALNoiseMaker_velocitycutoff = 54;
222 |
223 | //pitchwheelcutoff
224 | //min: 0, max: 1, default: 0
225 | const static int TALNoiseMaker_pitchwheelcutoff = 55;
226 |
227 | //pitchwheelpitch
228 | //min: 0, max: 1, default: 0
229 | const static int TALNoiseMaker_pitchwheelpitch = 56;
230 |
231 | //ringmodulation
232 | //min: 0, max: 1, default: 0
233 | const static int TALNoiseMaker_ringmodulation = 57;
234 |
235 | //chorus1enable
236 | //min: 0, max: 1, default: 0
237 | const static int TALNoiseMaker_chorus1enable = 58;
238 |
239 | //chorus2enable
240 | //min: 0, max: 1, default: 0
241 | const static int TALNoiseMaker_chorus2enable = 59;
242 |
243 | //reverbwet
244 | //min: 0, max: 1, default: 0
245 | const static int TALNoiseMaker_reverbwet = 60;
246 |
247 | //reverbdecay
248 | //min: 0, max: 1, default: 0
249 | const static int TALNoiseMaker_reverbdecay = 61;
250 |
251 | //reverbpredelay
252 | //min: 0, max: 1, default: 0
253 | const static int TALNoiseMaker_reverbpredelay = 62;
254 |
255 | //reverbhighcut
256 | //min: 0, max: 1, default: 0
257 | const static int TALNoiseMaker_reverbhighcut = 63;
258 |
259 | //reverblowcut
260 | //min: 0, max: 1, default: 0
261 | const static int TALNoiseMaker_reverblowcut = 64;
262 |
263 | //oscbitcrusher
264 | //min: 0, max: 1, default: 0
265 | const static int TALNoiseMaker_oscbitcrusher = 65;
266 |
267 | //highpass
268 | //min: 0, max: 1, default: 0
269 | const static int TALNoiseMaker_highpass = 66;
270 |
271 | //detune
272 | //min: 0, max: 1, default: 0
273 | const static int TALNoiseMaker_detune = 67;
274 |
275 | //vintagenoise
276 | //min: 0, max: 1, default: 0
277 | const static int TALNoiseMaker_vintagenoise = 68;
278 |
279 | //No name found
280 | //min: 0, max: 1, default: 0
281 | const static int TALNoiseMaker_unnamed2 = 69;
282 |
283 | //No name found
284 | //min: 0, max: 1, default: 0
285 | const static int TALNoiseMaker_unnamed3 = 70;
286 |
287 | //envelopeeditordest1
288 | //min: 0, max: 1, default: 0
289 | const static int TALNoiseMaker_envelopeeditordest1 = 71;
290 |
291 | //envelopeeditorspeed
292 | //min: 0, max: 1, default: 0
293 | const static int TALNoiseMaker_envelopeeditorspeed = 72;
294 |
295 | //envelopeeditoramount
296 | //min: 0, max: 1, default: 0
297 | const static int TALNoiseMaker_envelopeeditoramount = 73;
298 |
299 | //envelopeoneshot
300 | //min: 0, max: 1, default: 0
301 | const static int TALNoiseMaker_envelopeoneshot = 74;
302 |
303 | //envelopefixtempo
304 | //min: 0, max: 1, default: 0
305 | const static int TALNoiseMaker_envelopefixtempo = 75;
306 |
307 | //No name found
308 | //min: 0, max: 1, default: 0
309 | const static int TALNoiseMaker_unnamed4 = 76;
310 |
311 | //No name found
312 | //min: 0, max: 1, default: 0
313 | const static int TALNoiseMaker_unnamed5 = 77;
314 |
315 | //No name found
316 | //min: 0, max: 1, default: 0
317 | const static int TALNoiseMaker_unnamed6 = 78;
318 |
319 | //No name found
320 | //min: 0, max: 1, default: 0
321 | const static int TALNoiseMaker_unnamed7 = 79;
322 |
323 | //No name found
324 | //min: 0, max: 1, default: 0
325 | const static int TALNoiseMaker_unnamed8 = 80;
326 |
327 | //filterdrive
328 | //min: 0, max: 1, default: 0
329 | const static int TALNoiseMaker_filterdrive = 81;
330 |
331 | //delaywet
332 | //min: 0, max: 1, default: 0
333 | const static int TALNoiseMaker_delaywet = 82;
334 |
335 | //delaytime
336 | //min: 0, max: 1, default: 0
337 | const static int TALNoiseMaker_delaytime = 83;
338 |
339 | //delaysync
340 | //min: 0, max: 1, default: 0
341 | const static int TALNoiseMaker_delaysync = 84;
342 |
343 | //delayfactorl
344 | //min: 0, max: 1, default: 0
345 | const static int TALNoiseMaker_delayfactorl = 85;
346 |
347 | //delayfactorr
348 | //min: 0, max: 1, default: 0
349 | const static int TALNoiseMaker_delayfactorr = 86;
350 |
351 | //delayhighshelf
352 | //min: 0, max: 1, default: 0
353 | const static int TALNoiseMaker_delayhighshelf = 87;
354 |
355 | //delaylowshelf
356 | //min: 0, max: 1, default: 0
357 | const static int TALNoiseMaker_delaylowshelf = 88;
358 |
359 | //delayfeedback
360 | //min: 0, max: 1, default: 0
361 | const static int TALNoiseMaker_delayfeedback = 89;
362 |
363 | //No name found
364 | //min: 0, max: 1, default: 0
365 | const static int TALNoiseMaker_unnamed9 = 90;
366 |
367 | //No name found
368 | //min: 0, max: 1, default: 0
369 | const static int TALNoiseMaker_unnamed10 = 91;
--------------------------------------------------------------------------------
/src/Params/aum_Massive_Params.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | //MACRO 1
4 | //min: 0, max: 1, default: 0
5 | const static int Massive_macro_1 = 0;
6 |
7 | //MACRO 2
8 | //min: 0, max: 1, default: 0
9 | const static int Massive_macro_2 = 1;
10 |
11 | //MACRO 3
12 | //min: 0, max: 1, default: 0
13 | const static int Massive_macro_3 = 2;
14 |
15 | //MACRO 4
16 | //min: 0, max: 1, default: 0
17 | const static int Massive_macro_4 = 3;
18 |
19 | //MACRO 5
20 | //min: 0, max: 1, default: 0
21 | const static int Massive_macro_5 = 4;
22 |
23 | //MACRO 6
24 | //min: 0, max: 1, default: 0
25 | const static int Massive_macro_6 = 5;
26 |
27 | //MACRO 7
28 | //min: 0, max: 1, default: 0
29 | const static int Massive_macro_7 = 6;
30 |
31 | //MACRO 8
32 | //min: 0, max: 1, default: 0
33 | const static int Massive_macro_8 = 7;
34 |
35 | //OSC1-PITCH
36 | //min: 0, max: 1, default: 0.5
37 | const static int Massive_osc1_pitch = 8;
38 |
39 | //OSC1-POSITION
40 | //min: 0, max: 1, default: 0.5
41 | const static int Massive_osc1_position = 9;
42 |
43 | //OSC1-PARAM2
44 | //min: 0, max: 1, default: 1
45 | const static int Massive_osc1_param2 = 10;
46 |
47 | //OSC1-AMP
48 | //min: 0, max: 1, default: 1
49 | const static int Massive_osc1_amp = 11;
50 |
51 | //OSC1-FLT.ROUTING
52 | //min: 0, max: 1, default: 0.5
53 | const static int Massive_osc1_flt_routing = 12;
54 |
55 | //OSC2-PITCH
56 | //min: 0, max: 1, default: 0.5
57 | const static int Massive_osc2_pitch = 13;
58 |
59 | //OSC2-POSITION
60 | //min: 0, max: 1, default: 0
61 | const static int Massive_osc2_position = 14;
62 |
63 | //OSC2-PARAM2
64 | //min: 0, max: 1, default: 1
65 | const static int Massive_osc2_param2 = 15;
66 |
67 | //OSC2-AMP
68 | //min: 0, max: 1, default: 0
69 | const static int Massive_osc2_amp = 16;
70 |
71 | //OSC2-FLT.ROUTING
72 | //min: 0, max: 1, default: 0.5
73 | const static int Massive_osc2_flt_routing = 17;
74 |
75 | //OSC3-PITCH
76 | //min: 0, max: 1, default: 0.5
77 | const static int Massive_osc3_pitch = 18;
78 |
79 | //OSC3-POSITION
80 | //min: 0, max: 1, default: 0
81 | const static int Massive_osc3_position = 19;
82 |
83 | //OSC3-PARAM2
84 | //min: 0, max: 1, default: 1
85 | const static int Massive_osc3_param2 = 20;
86 |
87 | //OSC3-AMP
88 | //min: 0, max: 1, default: 0
89 | const static int Massive_osc3_amp = 21;
90 |
91 | //OSC3-FLT.ROUTING
92 | //min: 0, max: 1, default: 0.5
93 | const static int Massive_osc3_flt_routing = 22;
94 |
95 | //NOISE-COLOR
96 | //min: 0, max: 1, default: 0
97 | const static int Massive_noise_color = 23;
98 |
99 | //NOISE-AMP
100 | //min: 0, max: 1, default: 0
101 | const static int Massive_noise_amp = 24;
102 |
103 | //NOISE-FLTR. ROUTING
104 | //min: 0, max: 1, default: 0.5
105 | const static int Massive_noise_fltr_routing = 25;
106 |
107 | //FEEDBACK-AMP
108 | //min: 0, max: 1, default: 0
109 | const static int Massive_feedback_amp = 26;
110 |
111 | //FEEDBACK-FLT.ROUTING
112 | //min: 0, max: 1, default: 0.5
113 | const static int Massive_feedback_flt_routing = 27;
114 |
115 | //MOD.OSC-PITCH
116 | //min: 0, max: 1, default: 0.5
117 | const static int Massive_mod_osc_pitch = 28;
118 |
119 | //MOD.OSC-RNGMOD
120 | //min: 0, max: 1, default: 0
121 | const static int Massive_mod_osc_rngmod = 29;
122 |
123 | //MOD.OSC-PHASE
124 | //min: 0, max: 1, default: 0
125 | const static int Massive_mod_osc_phase = 30;
126 |
127 | //MOD.OSC-POSITION
128 | //min: 0, max: 1, default: 0
129 | const static int Massive_mod_osc_position = 31;
130 |
131 | //MOD.OSC-FLTR.FM
132 | //min: 0, max: 1, default: 0
133 | const static int Massive_mod_osc_fltr_fm = 32;
134 |
135 | //FILTER1-CUT/PRM.1
136 | //min: 0, max: 1, default: 0
137 | const static int Massive_filter1_cut_prm_1 = 33;
138 |
139 | //FILTER1-BW/PRM.2
140 | //min: 0, max: 1, default: 0
141 | const static int Massive_filter1_bw_prm_2 = 34;
142 |
143 | //FILTER1-RES/PRM.3
144 | //min: 0, max: 1, default: 0
145 | const static int Massive_filter1_res_prm_3 = 35;
146 |
147 | //FILTER2-CUT/PRM.1
148 | //min: 0, max: 1, default: 0
149 | const static int Massive_filter2_cut_prm_1 = 36;
150 |
151 | //FILTER2-BW/PRM.2
152 | //min: 0, max: 1, default: 0
153 | const static int Massive_filter2_bw_prm_2 = 37;
154 |
155 | //FILTER2-RES/PRM.3
156 | //min: 0, max: 1, default: 0
157 | const static int Massive_filter2_res_prm_3 = 38;
158 |
159 | //SERIELL-PARALLEL
160 | //min: 0, max: 1, default: 0
161 | const static int Massive_seriell_parallel = 39;
162 |
163 | //INSERT1-DW/PRM.1
164 | //min: 0, max: 1, default: 0
165 | const static int Massive_insert1_dw_prm_1 = 40;
166 |
167 | //INSERT1-PRM.2
168 | //min: 0, max: 1, default: 0
169 | const static int Massive_insert1_prm_2 = 41;
170 |
171 | //INSERT2-DW/PRM.1
172 | //min: 0, max: 1, default: 0
173 | const static int Massive_insert2_dw_prm_1 = 42;
174 |
175 | //INSERT2-PRM.2
176 | //min: 0, max: 1, default: 0
177 | const static int Massive_insert2_prm_2 = 43;
178 |
179 | //MASTER FX1-DRY WET
180 | //min: 0, max: 1, default: 0
181 | const static int Massive_master_fx1_dry_wet = 44;
182 |
183 | //MASTER FX1-PRM.2
184 | //min: 0, max: 1, default: 0.5
185 | const static int Massive_master_fx1_prm_2 = 45;
186 |
187 | //MASTER FX1-PRM.3
188 | //min: 0, max: 1, default: 0.5
189 | const static int Massive_master_fx1_prm_3 = 46;
190 |
191 | //MASTER FX1-PRM.4
192 | //min: 0, max: 1, default: 0.5
193 | const static int Massive_master_fx1_prm_4 = 47;
194 |
195 | //MASTER FX2-DRY WET
196 | //min: 0, max: 1, default: 0
197 | const static int Massive_master_fx2_dry_wet = 48;
198 |
199 | //MASTER FX2-PRM.2
200 | //min: 0, max: 1, default: 0.5
201 | const static int Massive_master_fx2_prm_2 = 49;
202 |
203 | //MASTER FX2-PRM.3
204 | //min: 0, max: 1, default: 0.5
205 | const static int Massive_master_fx2_prm_3 = 50;
206 |
207 | //MASTER FX2-PRM.4
208 | //min: 0, max: 1, default: 0.5
209 | const static int Massive_master_fx2_prm_4 = 51;
210 |
211 | //FILTER1-OUT GAIN
212 | //min: 0, max: 1, default: 0.8
213 | const static int Massive_filter1_out_gain = 52;
214 |
215 | //FILTER2-OUT GAIN
216 | //min: 0, max: 1, default: 0.8
217 | const static int Massive_filter2_out_gain = 53;
218 |
219 | //FILTER-1/2-CROSSFADE
220 | //min: 0, max: 1, default: 0.5
221 | const static int Massive_filter_1_2_crossfade = 54;
222 |
223 | //BYPASS-GAIN
224 | //min: 0, max: 1, default: 0
225 | const static int Massive_bypass_gain = 55;
226 |
227 | //PAN (Fltr-Path)
228 | //min: 0, max: 1, default: 0.5
229 | const static int Massive_pan_fltr_path_ = 56;
230 |
231 | //MASTER-VOLUME
232 | //min: 0, max: 1, default: 0.5
233 | const static int Massive_master_volume = 57;
234 |
235 | //MODULATOR5-RATE
236 | //min: 0, max: 1, default: 0.5
237 | const static int Massive_modulator5_rate = 58;
238 |
239 | //MODULATOR6-RATE
240 | //min: 0, max: 1, default: 0.5
241 | const static int Massive_modulator6_rate = 59;
242 |
243 | //MODULATOR7-RATE
244 | //min: 0, max: 1, default: 0.5
245 | const static int Massive_modulator7_rate = 60;
246 |
247 | //MODULATOR8-RATE
248 | //min: 0, max: 1, default: 0.5
249 | const static int Massive_modulator8_rate = 61;
250 |
251 | //MODULATOR5-AMP
252 | //min: 0, max: 1, default: 1
253 | const static int Massive_modulator5_amp = 62;
254 |
255 | //MODULATOR6-AMP
256 | //min: 0, max: 1, default: 1
257 | const static int Massive_modulator6_amp = 63;
258 |
259 | //MODULATOR7-AMP
260 | //min: 0, max: 1, default: 1
261 | const static int Massive_modulator7_amp = 64;
262 |
263 | //MODULATOR8-AMP
264 | //min: 0, max: 1, default: 1
265 | const static int Massive_modulator8_amp = 65;
266 |
267 | //MODULATOR5-CROSSF./GLIDE
268 | //min: 0, max: 1, default: 1
269 | const static int Massive_modulator5_crossf_glide = 66;
270 |
271 | //MODULATOR6-CROSSF./GLIDE
272 | //min: 0, max: 1, default: 1
273 | const static int Massive_modulator6_crossf_glide = 67;
274 |
275 | //MODULATOR7-CROSSF./GLIDE
276 | //min: 0, max: 1, default: 1
277 | const static int Massive_modulator7_crossf_glide = 68;
278 |
279 | //MODULATOR8-CROSSF./GLIDE
280 | //min: 0, max: 1, default: 1
281 | const static int Massive_modulator8_crossf_glide = 69;
282 |
283 | //MODULATOR5-IND.LEV
284 | //min: 0, max: 1, default: 0
285 | const static int Massive_modulator5_ind_lev = 70;
286 |
287 | //MODULATOR6-IND.LEV
288 | //min: 0, max: 1, default: 0
289 | const static int Massive_modulator6_ind_lev = 71;
290 |
291 | //MODULATOR7-IND.LEV
292 | //min: 0, max: 1, default: 0
293 | const static int Massive_modulator7_ind_lev = 72;
294 |
295 | //MODULATOR8-IND.LEV
296 | //min: 0, max: 1, default: 0
297 | const static int Massive_modulator8_ind_lev = 73;
298 |
299 | //MODULATOR15-SYNC on
300 | //min: 0, max: 1, default: 0
301 | const static int Massive_modulator15_sync_on = 74;
302 |
303 | //MODULATOR26-SYNC on
304 | //min: 0, max: 1, default: 0
305 | const static int Massive_modulator26_sync_on = 75;
306 |
307 | //MODULATOR37-SYNC on
308 | //min: 0, max: 1, default: 0
309 | const static int Massive_modulator37_sync_on = 76;
310 |
311 | //MODULATOR48-SYNC on
312 | //min: 0, max: 1, default: 0
313 | const static int Massive_modulator48_sync_on = 77;
314 |
315 | //MODULATOR5-RESTART on
316 | //min: 0, max: 1, default: 1
317 | const static int Massive_modulator5_restart_on = 78;
318 |
319 | //MODULATOR6-RESTART on
320 | //min: 0, max: 1, default: 1
321 | const static int Massive_modulator6_restart_on = 79;
322 |
323 | //MODULATOR7-RESTART on
324 | //min: 0, max: 1, default: 1
325 | const static int Massive_modulator7_restart_on = 80;
326 |
327 | //MODULATOR8-RESTART on
328 | //min: 0, max: 1, default: 1
329 | const static int Massive_modulator8_restart_on = 81;
330 |
331 | //ENVELOPE1-VELOCITY
332 | //min: 0, max: 1, default: 0
333 | const static int Massive_envelope1_velocity = 82;
334 |
335 | //ENVELOPE2-VELOCITY
336 | //min: 0, max: 1, default: 0
337 | const static int Massive_envelope2_velocity = 83;
338 |
339 | //ENVELOPE3-VELOCITY
340 | //min: 0, max: 1, default: 0
341 | const static int Massive_envelope3_velocity = 84;
342 |
343 | //ENVELOPE4-VELOCITY
344 | //min: 0, max: 1, default: 0
345 | const static int Massive_envelope4_velocity = 85;
346 |
347 | //ENVELOPE1-KEYTRACKING
348 | //min: 0, max: 1, default: 0
349 | const static int Massive_envelope1_keytracking = 86;
350 |
351 | //ENVELOPE2-KEYTRACKING
352 | //min: 0, max: 1, default: 0
353 | const static int Massive_envelope2_keytracking = 87;
354 |
355 | //ENVELOPE3-KEYTRACKING
356 | //min: 0, max: 1, default: 0
357 | const static int Massive_envelope3_keytracking = 88;
358 |
359 | //ENVELOPE4-KEYTRACKING
360 | //min: 0, max: 1, default: 0
361 | const static int Massive_envelope4_keytracking = 89;
362 |
363 | //ENVELOPE1-DELAY
364 | //min: 0, max: 1, default: 0
365 | const static int Massive_envelope1_delay = 90;
366 |
367 | //ENVELOPE2-DELAY
368 | //min: 0, max: 1, default: 0
369 | const static int Massive_envelope2_delay = 91;
370 |
371 | //ENVELOPE3-DELAY
372 | //min: 0, max: 1, default: 0
373 | const static int Massive_envelope3_delay = 92;
374 |
375 | //ENVELOPE4-DELAY
376 | //min: 0, max: 1, default: 0
377 | const static int Massive_envelope4_delay = 93;
378 |
379 | //ENVELOPE1-ATT.TME
380 | //min: 0, max: 1, default: 0.05
381 | const static int Massive_envelope1_att_tme = 94;
382 |
383 | //ENVELOPE2-ATT.TME
384 | //min: 0, max: 1, default: 0.05
385 | const static int Massive_envelope2_att_tme = 95;
386 |
387 | //ENVELOPE3-ATT.TME
388 | //min: 0, max: 1, default: 0.05
389 | const static int Massive_envelope3_att_tme = 96;
390 |
391 | //ENVELOPE4-ATT.TME
392 | //min: 0, max: 1, default: 0.05
393 | const static int Massive_envelope4_att_tme = 97;
394 |
395 | //ENVELOPE1-ATT.LEV
396 | //min: 0, max: 1, default: 1
397 | const static int Massive_envelope1_att_lev = 98;
398 |
399 | //ENVELOPE2-ATT.LEV
400 | //min: 0, max: 1, default: 1
401 | const static int Massive_envelope2_att_lev = 99;
402 |
403 | //ENVELOPE3-ATT.LEV
404 | //min: 0, max: 1, default: 1
405 | const static int Massive_envelope3_att_lev = 100;
406 |
407 | //ENVELOPE4-ATT.LEV
408 | //min: 0, max: 1, default: 1
409 | const static int Massive_envelope4_att_lev = 101;
410 |
411 | //ENVELOPE1-DEC.TME
412 | //min: 0, max: 1, default: 0.5
413 | const static int Massive_envelope1_dec_tme = 102;
414 |
415 | //ENVELOPE2-DEC.TME
416 | //min: 0, max: 1, default: 0.5
417 | const static int Massive_envelope2_dec_tme = 103;
418 |
419 | //ENVELOPE3-DEC.TME
420 | //min: 0, max: 1, default: 0.5
421 | const static int Massive_envelope3_dec_tme = 104;
422 |
423 | //ENVELOPE4-DEC.TME
424 | //min: 0, max: 1, default: 0.5
425 | const static int Massive_envelope4_dec_tme = 105;
426 |
427 | //ENVELOPE1-DEC.LEV
428 | //min: 0, max: 1, default: 0.5
429 | const static int Massive_envelope1_dec_lev = 106;
430 |
431 | //ENVELOPE2-DEC.LEV
432 | //min: 0, max: 1, default: 0.5
433 | const static int Massive_envelope2_dec_lev = 107;
434 |
435 | //ENVELOPE3-DEC.LEV
436 | //min: 0, max: 1, default: 0.5
437 | const static int Massive_envelope3_dec_lev = 108;
438 |
439 | //ENVELOPE4-DEC.LEV
440 | //min: 0, max: 1, default: 0.5
441 | const static int Massive_envelope4_dec_lev = 109;
442 |
443 | //ENVELOPE1-SUST.TME
444 | //min: 0, max: 1, default: 0.5
445 | const static int Massive_envelope1_sust_tme = 110;
446 |
447 | //ENVELOPE2-SUST.TME
448 | //min: 0, max: 1, default: 0.5
449 | const static int Massive_envelope2_sust_tme = 111;
450 |
451 | //ENVELOPE3-SUST.TME
452 | //min: 0, max: 1, default: 0.5
453 | const static int Massive_envelope3_sust_tme = 112;
454 |
455 | //ENVELOPE4-SUST.TME
456 | //min: 0, max: 1, default: 0.5
457 | const static int Massive_envelope4_sust_tme = 113;
458 |
459 | //ENVELOPE1-SUST.LEV
460 | //min: 0, max: 1, default: 1
461 | const static int Massive_envelope1_sust_lev = 114;
462 |
463 | //ENVELOPE2-SUST.LEV
464 | //min: 0, max: 1, default: 1
465 | const static int Massive_envelope2_sust_lev = 115;
466 |
467 | //ENVELOPE3-SUST.LEV
468 | //min: 0, max: 1, default: 1
469 | const static int Massive_envelope3_sust_lev = 116;
470 |
471 | //ENVELOPE4-SUST.LEV
472 | //min: 0, max: 1, default: 1
473 | const static int Massive_envelope4_sust_lev = 117;
474 |
475 | //ENVELOPE1-LOOP.MORPH
476 | //min: 0, max: 1, default: 0
477 | const static int Massive_envelope1_loop_morph = 118;
478 |
479 | //ENVELOPE2-LOOP.MORPH
480 | //min: 0, max: 1, default: 0
481 | const static int Massive_envelope2_loop_morph = 119;
482 |
483 | //ENVELOPE3-LOOP.MORPH
484 | //min: 0, max: 1, default: 0
485 | const static int Massive_envelope3_loop_morph = 120;
486 |
487 | //ENVELOPE4-LOOP.MORPH
488 | //min: 0, max: 1, default: 0
489 | const static int Massive_envelope4_loop_morph = 121;
490 |
491 | //ENVELOPE1-REL. TME
492 | //min: 0, max: 1, default: 0.1
493 | const static int Massive_envelope1_rel_tme = 122;
494 |
495 | //ENVELOPE2-REL. TME
496 | //min: 0, max: 1, default: 0.1
497 | const static int Massive_envelope2_rel_tme = 123;
498 |
499 | //ENVELOPE3-REL. TME
500 | //min: 0, max: 1, default: 0.1
501 | const static int Massive_envelope3_rel_tme = 124;
502 |
503 | //ENVELOPE4-REL. TME
504 | //min: 0, max: 1, default: 0.1
505 | const static int Massive_envelope4_rel_tme = 125;
506 |
507 | //GLIDE-TIME
508 | //min: 0, max: 1, default: 0
509 | const static int Massive_glide_time = 126;
510 |
511 | //VIBRATO-RATE
512 | //min: 0, max: 1, default: 0
513 | const static int Massive_vibrato_rate = 127;
514 |
515 | //VIBRATO-DEPTH
516 | //min: 0, max: 1, default: 0
517 | const static int Massive_vibrato_depth = 128;
518 |
519 | //UNI PITCH-CROSSFADE
520 | //min: 0, max: 1, default: 0
521 | const static int Massive_uni_pitch_crossfade = 129;
522 |
523 | //UNI WT.POS-CROSSFADE
524 | //min: 0, max: 1, default: 0
525 | const static int Massive_uni_wt_pos_crossfade = 130;
526 |
527 | //UNI PAN-CROSSFADE
528 | //min: 0, max: 1, default: 0.5
529 | const static int Massive_uni_pan_crossfade = 131;
530 |
531 | //EQ-LoShelf.BOOST
532 | //min: 0, max: 1, default: 0.5
533 | const static int Massive_eq_loshelf_boost = 132;
534 |
535 | //EQ-Peak.BOOST
536 | //min: 0, max: 1, default: 0.5
537 | const static int Massive_eq_peak_boost = 133;
538 |
539 | //EQ-Peak.FREQ
540 | //min: 0, max: 1, default: 0.5
541 | const static int Massive_eq_peak_freq = 134;
542 |
543 | //EQ-HiShelf.BOOST
544 | //min: 0, max: 1, default: 0.5
545 | const static int Massive_eq_hishelf_boost = 135;
546 |
547 | //Env.Hold Reset
548 | //min: 0, max: 1, default: 0
549 | const static int Massive_env_hold_reset = 136;
550 |
551 | //MODULATOR5-NUM
552 | //min: 0, max: 1, default: 0
553 | const static int Massive_modulator5_num = 137;
554 |
555 | //MODULATOR6-NUM
556 | //min: 0, max: 1, default: 0
557 | const static int Massive_modulator6_num = 138;
558 |
559 | //MODULATOR7-NUM
560 | //min: 0, max: 1, default: 0
561 | const static int Massive_modulator7_num = 139;
562 |
563 | //MODULATOR8-NUM
564 | //min: 0, max: 1, default: 0
565 | const static int Massive_modulator8_num = 140;
566 |
567 | //MODULATOR5-DEN
568 | //min: 0, max: 1, default: 0
569 | const static int Massive_modulator5_den = 141;
570 |
571 | //MODULATOR6-DEN
572 | //min: 0, max: 1, default: 0
573 | const static int Massive_modulator6_den = 142;
574 |
575 | //MODULATOR7-DEN
576 | //min: 0, max: 1, default: 0
577 | const static int Massive_modulator7_den = 143;
578 |
579 | //MODULATOR8-DEN
580 | //min: 0, max: 1, default: 0
581 | const static int Massive_modulator8_den = 144;
582 |
583 | //MODULATOR5-SNCPOS on
584 | //min: 0, max: 1, default: 1
585 | const static int Massive_modulator5_sncpos_on = 145;
586 |
587 | //MODULATOR6-SNCPOS on
588 | //min: 0, max: 1, default: 1
589 | const static int Massive_modulator6_sncpos_on = 146;
590 |
591 | //MODULATOR7-SNCPOS on
592 | //min: 0, max: 1, default: 1
593 | const static int Massive_modulator7_sncpos_on = 147;
594 |
595 | //MODULATOR8-SNCPOS on
596 | //min: 0, max: 1, default: 1
597 | const static int Massive_modulator8_sncpos_on = 148;
--------------------------------------------------------------------------------
/src/AudioUnits/aumUnit_TALNoiseMaker.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "aumMonitorableAudioUnit.h"
3 |
4 | /******************************************************************************/
5 | /* WARNING: THIS CLASS WAS GENERATED BY THE FOLLOWING FUNCTION: */
6 | /* */
7 | /* aumUnit_Generic::generateClassFileForAudioUnit(string deviceName); */
8 | /* */
9 | /* IF YOU EDIT THIS FILE, YOU RISK HAVING YOUR CHANGES OVERWRITTEN THE NEXT */
10 | /* TIME THE FILE IS RE-WRITTEN BY THIS FUNCTION. TO EDIT THIS FILE, PLEASE */
11 | /* COPY IT TO ANY OTHER FOLDER, RENAME THE CLASS, AND THEN MAKE EDITS. */
12 | /******************************************************************************/
13 |
14 | class aumUnit_TALNoiseMaker : public aumMonitorableAudioUnit
15 | {
16 | public:
17 | //No name found
18 | //min: 0, max: 1, default: 0
19 | const static int unnamed1 = 0;
20 |
21 | //volume
22 | //min: 0, max: 1, default: 0.408
23 | const static int volume = 1;
24 |
25 | //filtertype
26 | //min: 0, max: 1, default: 0
27 | const static int filtertype = 2;
28 |
29 | //cutoff
30 | //min: 0, max: 1, default: 1
31 | const static int cutoff = 3;
32 |
33 | //resonance
34 | //min: 0, max: 1, default: 0
35 | const static int resonance = 4;
36 |
37 | //keyfollow
38 | //min: 0, max: 1, default: 0
39 | const static int keyfollow = 5;
40 |
41 | //filtercontour
42 | //min: 0, max: 1, default: 0.5
43 | const static int filtercontour = 6;
44 |
45 | //filterattack
46 | //min: 0, max: 1, default: 0
47 | const static int filterattack = 7;
48 |
49 | //filterdecay
50 | //min: 0, max: 1, default: 0
51 | const static int filterdecay = 8;
52 |
53 | //filtersustain
54 | //min: 0, max: 1, default: 1
55 | const static int filtersustain = 9;
56 |
57 | //filterrelease
58 | //min: 0, max: 1, default: 0
59 | const static int filterrelease = 10;
60 |
61 | //ampattack
62 | //min: 0, max: 1, default: 0
63 | const static int ampattack = 11;
64 |
65 | //ampdecay
66 | //min: 0, max: 1, default: 0
67 | const static int ampdecay = 12;
68 |
69 | //ampsustain
70 | //min: 0, max: 1, default: 1
71 | const static int ampsustain = 13;
72 |
73 | //amprelease
74 | //min: 0, max: 1, default: 0
75 | const static int amprelease = 14;
76 |
77 | //osc1volume
78 | //min: 0, max: 1, default: 0.8
79 | const static int osc1volume = 15;
80 |
81 | //osc2volume
82 | //min: 0, max: 1, default: 0
83 | const static int osc2volume = 16;
84 |
85 | //osc3volume
86 | //min: 0, max: 1, default: 0.8
87 | const static int osc3volume = 17;
88 |
89 | //oscmastertune
90 | //min: 0, max: 1, default: 0.5
91 | const static int oscmastertune = 18;
92 |
93 | //osc1tune
94 | //min: 0, max: 1, default: 0.25
95 | const static int osc1tune = 19;
96 |
97 | //osc2tune
98 | //min: 0, max: 1, default: 0.5
99 | const static int osc2tune = 20;
100 |
101 | //osc1finetune
102 | //min: 0, max: 1, default: 0.5
103 | const static int osc1finetune = 21;
104 |
105 | //osc2finetune
106 | //min: 0, max: 1, default: 0.5
107 | const static int osc2finetune = 22;
108 |
109 | //osc1waveform
110 | //min: 0, max: 1, default: 0
111 | const static int osc1waveform = 23;
112 |
113 | //osc2waveform
114 | //min: 0, max: 1, default: 0
115 | const static int osc2waveform = 24;
116 |
117 | //oscsync
118 | //min: 0, max: 1, default: 0
119 | const static int oscsync = 25;
120 |
121 | //lfo1waveform
122 | //min: 0, max: 1, default: 0
123 | const static int lfo1waveform = 26;
124 |
125 | //lfo2waveform
126 | //min: 0, max: 1, default: 0
127 | const static int lfo2waveform = 27;
128 |
129 | //lfo1rate
130 | //min: 0, max: 1, default: 0
131 | const static int lfo1rate = 28;
132 |
133 | //lfo2rate
134 | //min: 0, max: 1, default: 0
135 | const static int lfo2rate = 29;
136 |
137 | //lfo1amount
138 | //min: 0, max: 1, default: 0.5
139 | const static int lfo1amount = 30;
140 |
141 | //lfo2amount
142 | //min: 0, max: 1, default: 0.5
143 | const static int lfo2amount = 31;
144 |
145 | //lfo1destination
146 | //min: 0, max: 1, default: 0
147 | const static int lfo1destination = 32;
148 |
149 | //lfo2destination
150 | //min: 0, max: 1, default: 0
151 | const static int lfo2destination = 33;
152 |
153 | //lfo1phase
154 | //min: 0, max: 1, default: 0
155 | const static int lfo1phase = 34;
156 |
157 | //lfo2phase
158 | //min: 0, max: 1, default: 0
159 | const static int lfo2phase = 35;
160 |
161 | //osc2fm
162 | //min: 0, max: 1, default: 0
163 | const static int osc2fm = 36;
164 |
165 | //osc2phase
166 | //min: 0, max: 1, default: 0
167 | const static int osc2phase = 37;
168 |
169 | //osc1pw
170 | //min: 0, max: 1, default: 0.5
171 | const static int osc1pw = 38;
172 |
173 | //osc1phase
174 | //min: 0, max: 1, default: 0.5
175 | const static int osc1phase = 39;
176 |
177 | //transpose
178 | //min: 0, max: 1, default: 0.5
179 | const static int transpose = 40;
180 |
181 | //freeadattack
182 | //min: 0, max: 1, default: 0
183 | const static int freeadattack = 41;
184 |
185 | //freeaddecay
186 | //min: 0, max: 1, default: 0
187 | const static int freeaddecay = 42;
188 |
189 | //freeadamount
190 | //min: 0, max: 1, default: 0
191 | const static int freeadamount = 43;
192 |
193 | //freeaddestination
194 | //min: 0, max: 1, default: 0
195 | const static int freeaddestination = 44;
196 |
197 | //lfo1sync
198 | //min: 0, max: 1, default: 0
199 | const static int lfo1sync = 45;
200 |
201 | //lfo1keytrigger
202 | //min: 0, max: 1, default: 0
203 | const static int lfo1keytrigger = 46;
204 |
205 | //lfo2sync
206 | //min: 0, max: 1, default: 0
207 | const static int lfo2sync = 47;
208 |
209 | //lfo2keytrigger
210 | //min: 0, max: 1, default: 0
211 | const static int lfo2keytrigger = 48;
212 |
213 | //portamento
214 | //min: 0, max: 1, default: 0
215 | const static int portamento = 49;
216 |
217 | //portamentomode
218 | //min: 0, max: 1, default: 0
219 | const static int portamentomode = 50;
220 |
221 | //voices
222 | //min: 0, max: 1, default: 0
223 | const static int voices = 51;
224 |
225 | //velocityvolume
226 | //min: 0, max: 1, default: 0
227 | const static int velocityvolume = 52;
228 |
229 | //velocitycontour
230 | //min: 0, max: 1, default: 0
231 | const static int velocitycontour = 53;
232 |
233 | //velocitycutoff
234 | //min: 0, max: 1, default: 0
235 | const static int velocitycutoff = 54;
236 |
237 | //pitchwheelcutoff
238 | //min: 0, max: 1, default: 0
239 | const static int pitchwheelcutoff = 55;
240 |
241 | //pitchwheelpitch
242 | //min: 0, max: 1, default: 0
243 | const static int pitchwheelpitch = 56;
244 |
245 | //ringmodulation
246 | //min: 0, max: 1, default: 0
247 | const static int ringmodulation = 57;
248 |
249 | //chorus1enable
250 | //min: 0, max: 1, default: 0
251 | const static int chorus1enable = 58;
252 |
253 | //chorus2enable
254 | //min: 0, max: 1, default: 0
255 | const static int chorus2enable = 59;
256 |
257 | //reverbwet
258 | //min: 0, max: 1, default: 0
259 | const static int reverbwet = 60;
260 |
261 | //reverbdecay
262 | //min: 0, max: 1, default: 0.5
263 | const static int reverbdecay = 61;
264 |
265 | //reverbpredelay
266 | //min: 0, max: 1, default: 0
267 | const static int reverbpredelay = 62;
268 |
269 | //reverbhighcut
270 | //min: 0, max: 1, default: 0
271 | const static int reverbhighcut = 63;
272 |
273 | //reverblowcut
274 | //min: 0, max: 1, default: 1
275 | const static int reverblowcut = 64;
276 |
277 | //oscbitcrusher
278 | //min: 0, max: 1, default: 1
279 | const static int oscbitcrusher = 65;
280 |
281 | //highpass
282 | //min: 0, max: 1, default: 0
283 | const static int highpass = 66;
284 |
285 | //detune
286 | //min: 0, max: 1, default: 0
287 | const static int detune = 67;
288 |
289 | //vintagenoise
290 | //min: 0, max: 1, default: 0
291 | const static int vintagenoise = 68;
292 |
293 | //No name found
294 | //min: 0, max: 1, default: 0
295 | const static int unnamed2 = 69;
296 |
297 | //No name found
298 | //min: 0, max: 1, default: 0
299 | const static int unnamed3 = 70;
300 |
301 | //envelopeeditordest1
302 | //min: 0, max: 1, default: 0
303 | const static int envelopeeditordest1 = 71;
304 |
305 | //envelopeeditorspeed
306 | //min: 0, max: 1, default: 0
307 | const static int envelopeeditorspeed = 72;
308 |
309 | //envelopeeditoramount
310 | //min: 0, max: 1, default: 0
311 | const static int envelopeeditoramount = 73;
312 |
313 | //envelopeoneshot
314 | //min: 0, max: 1, default: 0
315 | const static int envelopeoneshot = 74;
316 |
317 | //envelopefixtempo
318 | //min: 0, max: 1, default: 0
319 | const static int envelopefixtempo = 75;
320 |
321 | //No name found
322 | //min: 0, max: 1, default: 0
323 | const static int unnamed4 = 76;
324 |
325 | //No name found
326 | //min: 0, max: 1, default: 1
327 | const static int unnamed5 = 77;
328 |
329 | //No name found
330 | //min: 0, max: 1, default: 0
331 | const static int unnamed6 = 78;
332 |
333 | //No name found
334 | //min: 0, max: 1, default: 0
335 | const static int unnamed7 = 79;
336 |
337 | //No name found
338 | //min: 0, max: 1, default: 1
339 | const static int unnamed8 = 80;
340 |
341 | //filterdrive
342 | //min: 0, max: 1, default: 0
343 | const static int filterdrive = 81;
344 |
345 | //delaywet
346 | //min: 0, max: 1, default: 0
347 | const static int delaywet = 82;
348 |
349 | //delaytime
350 | //min: 0, max: 1, default: 0.5
351 | const static int delaytime = 83;
352 |
353 | //delaysync
354 | //min: 0, max: 1, default: 0
355 | const static int delaysync = 84;
356 |
357 | //delayfactorl
358 | //min: 0, max: 1, default: 0
359 | const static int delayfactorl = 85;
360 |
361 | //delayfactorr
362 | //min: 0, max: 1, default: 0
363 | const static int delayfactorr = 86;
364 |
365 | //delayhighshelf
366 | //min: 0, max: 1, default: 0
367 | const static int delayhighshelf = 87;
368 |
369 | //delaylowshelf
370 | //min: 0, max: 1, default: 0
371 | const static int delaylowshelf = 88;
372 |
373 | //delayfeedback
374 | //min: 0, max: 1, default: 0.5
375 | const static int delayfeedback = 89;
376 |
377 | //No name found
378 | //min: 0, max: 1, default: 0
379 | const static int unnamed9 = 90;
380 |
381 | //No name found
382 | //min: 0, max: 1, default: 0
383 | const static int unnamed10 = 91;
384 |
385 | //These variables store the most recenty recorded values
386 | //of each of the parameters, for recording and detection
387 | AudioUnitParameterValue previous_unnamed1;
388 | AudioUnitParameterValue previous_volume;
389 | AudioUnitParameterValue previous_filtertype;
390 | AudioUnitParameterValue previous_cutoff;
391 | AudioUnitParameterValue previous_resonance;
392 | AudioUnitParameterValue previous_keyfollow;
393 | AudioUnitParameterValue previous_filtercontour;
394 | AudioUnitParameterValue previous_filterattack;
395 | AudioUnitParameterValue previous_filterdecay;
396 | AudioUnitParameterValue previous_filtersustain;
397 | AudioUnitParameterValue previous_filterrelease;
398 | AudioUnitParameterValue previous_ampattack;
399 | AudioUnitParameterValue previous_ampdecay;
400 | AudioUnitParameterValue previous_ampsustain;
401 | AudioUnitParameterValue previous_amprelease;
402 | AudioUnitParameterValue previous_osc1volume;
403 | AudioUnitParameterValue previous_osc2volume;
404 | AudioUnitParameterValue previous_osc3volume;
405 | AudioUnitParameterValue previous_oscmastertune;
406 | AudioUnitParameterValue previous_osc1tune;
407 | AudioUnitParameterValue previous_osc2tune;
408 | AudioUnitParameterValue previous_osc1finetune;
409 | AudioUnitParameterValue previous_osc2finetune;
410 | AudioUnitParameterValue previous_osc1waveform;
411 | AudioUnitParameterValue previous_osc2waveform;
412 | AudioUnitParameterValue previous_oscsync;
413 | AudioUnitParameterValue previous_lfo1waveform;
414 | AudioUnitParameterValue previous_lfo2waveform;
415 | AudioUnitParameterValue previous_lfo1rate;
416 | AudioUnitParameterValue previous_lfo2rate;
417 | AudioUnitParameterValue previous_lfo1amount;
418 | AudioUnitParameterValue previous_lfo2amount;
419 | AudioUnitParameterValue previous_lfo1destination;
420 | AudioUnitParameterValue previous_lfo2destination;
421 | AudioUnitParameterValue previous_lfo1phase;
422 | AudioUnitParameterValue previous_lfo2phase;
423 | AudioUnitParameterValue previous_osc2fm;
424 | AudioUnitParameterValue previous_osc2phase;
425 | AudioUnitParameterValue previous_osc1pw;
426 | AudioUnitParameterValue previous_osc1phase;
427 | AudioUnitParameterValue previous_transpose;
428 | AudioUnitParameterValue previous_freeadattack;
429 | AudioUnitParameterValue previous_freeaddecay;
430 | AudioUnitParameterValue previous_freeadamount;
431 | AudioUnitParameterValue previous_freeaddestination;
432 | AudioUnitParameterValue previous_lfo1sync;
433 | AudioUnitParameterValue previous_lfo1keytrigger;
434 | AudioUnitParameterValue previous_lfo2sync;
435 | AudioUnitParameterValue previous_lfo2keytrigger;
436 | AudioUnitParameterValue previous_portamento;
437 | AudioUnitParameterValue previous_portamentomode;
438 | AudioUnitParameterValue previous_voices;
439 | AudioUnitParameterValue previous_velocityvolume;
440 | AudioUnitParameterValue previous_velocitycontour;
441 | AudioUnitParameterValue previous_velocitycutoff;
442 | AudioUnitParameterValue previous_pitchwheelcutoff;
443 | AudioUnitParameterValue previous_pitchwheelpitch;
444 | AudioUnitParameterValue previous_ringmodulation;
445 | AudioUnitParameterValue previous_chorus1enable;
446 | AudioUnitParameterValue previous_chorus2enable;
447 | AudioUnitParameterValue previous_reverbwet;
448 | AudioUnitParameterValue previous_reverbdecay;
449 | AudioUnitParameterValue previous_reverbpredelay;
450 | AudioUnitParameterValue previous_reverbhighcut;
451 | AudioUnitParameterValue previous_reverblowcut;
452 | AudioUnitParameterValue previous_oscbitcrusher;
453 | AudioUnitParameterValue previous_highpass;
454 | AudioUnitParameterValue previous_detune;
455 | AudioUnitParameterValue previous_vintagenoise;
456 | AudioUnitParameterValue previous_unnamed2;
457 | AudioUnitParameterValue previous_unnamed3;
458 | AudioUnitParameterValue previous_envelopeeditordest1;
459 | AudioUnitParameterValue previous_envelopeeditorspeed;
460 | AudioUnitParameterValue previous_envelopeeditoramount;
461 | AudioUnitParameterValue previous_envelopeoneshot;
462 | AudioUnitParameterValue previous_envelopefixtempo;
463 | AudioUnitParameterValue previous_unnamed4;
464 | AudioUnitParameterValue previous_unnamed5;
465 | AudioUnitParameterValue previous_unnamed6;
466 | AudioUnitParameterValue previous_unnamed7;
467 | AudioUnitParameterValue previous_unnamed8;
468 | AudioUnitParameterValue previous_filterdrive;
469 | AudioUnitParameterValue previous_delaywet;
470 | AudioUnitParameterValue previous_delaytime;
471 | AudioUnitParameterValue previous_delaysync;
472 | AudioUnitParameterValue previous_delayfactorl;
473 | AudioUnitParameterValue previous_delayfactorr;
474 | AudioUnitParameterValue previous_delayhighshelf;
475 | AudioUnitParameterValue previous_delaylowshelf;
476 | AudioUnitParameterValue previous_delayfeedback;
477 | AudioUnitParameterValue previous_unnamed9;
478 | AudioUnitParameterValue previous_unnamed10;
479 |
480 | void setup(string _unitName) {
481 | aumManagedAudioUnit::setup(_unitName, 'aumu', 'ncut', 'TOGU', "aumUnit_TALNoiseMaker");
482 | }
483 |
484 | void doPrintChanges() {
485 | compareAndPrint("unnamed1", previous_unnamed1, get(unnamed1));
486 | compareAndPrint("volume", previous_volume, get(volume));
487 | compareAndPrint("filtertype", previous_filtertype, get(filtertype));
488 | compareAndPrint("cutoff", previous_cutoff, get(cutoff));
489 | compareAndPrint("resonance", previous_resonance, get(resonance));
490 | compareAndPrint("keyfollow", previous_keyfollow, get(keyfollow));
491 | compareAndPrint("filtercontour", previous_filtercontour, get(filtercontour));
492 | compareAndPrint("filterattack", previous_filterattack, get(filterattack));
493 | compareAndPrint("filterdecay", previous_filterdecay, get(filterdecay));
494 | compareAndPrint("filtersustain", previous_filtersustain, get(filtersustain));
495 | compareAndPrint("filterrelease", previous_filterrelease, get(filterrelease));
496 | compareAndPrint("ampattack", previous_ampattack, get(ampattack));
497 | compareAndPrint("ampdecay", previous_ampdecay, get(ampdecay));
498 | compareAndPrint("ampsustain", previous_ampsustain, get(ampsustain));
499 | compareAndPrint("amprelease", previous_amprelease, get(amprelease));
500 | compareAndPrint("osc1volume", previous_osc1volume, get(osc1volume));
501 | compareAndPrint("osc2volume", previous_osc2volume, get(osc2volume));
502 | compareAndPrint("osc3volume", previous_osc3volume, get(osc3volume));
503 | compareAndPrint("oscmastertune", previous_oscmastertune, get(oscmastertune));
504 | compareAndPrint("osc1tune", previous_osc1tune, get(osc1tune));
505 | compareAndPrint("osc2tune", previous_osc2tune, get(osc2tune));
506 | compareAndPrint("osc1finetune", previous_osc1finetune, get(osc1finetune));
507 | compareAndPrint("osc2finetune", previous_osc2finetune, get(osc2finetune));
508 | compareAndPrint("osc1waveform", previous_osc1waveform, get(osc1waveform));
509 | compareAndPrint("osc2waveform", previous_osc2waveform, get(osc2waveform));
510 | compareAndPrint("oscsync", previous_oscsync, get(oscsync));
511 | compareAndPrint("lfo1waveform", previous_lfo1waveform, get(lfo1waveform));
512 | compareAndPrint("lfo2waveform", previous_lfo2waveform, get(lfo2waveform));
513 | compareAndPrint("lfo1rate", previous_lfo1rate, get(lfo1rate));
514 | compareAndPrint("lfo2rate", previous_lfo2rate, get(lfo2rate));
515 | compareAndPrint("lfo1amount", previous_lfo1amount, get(lfo1amount));
516 | compareAndPrint("lfo2amount", previous_lfo2amount, get(lfo2amount));
517 | compareAndPrint("lfo1destination", previous_lfo1destination, get(lfo1destination));
518 | compareAndPrint("lfo2destination", previous_lfo2destination, get(lfo2destination));
519 | compareAndPrint("lfo1phase", previous_lfo1phase, get(lfo1phase));
520 | compareAndPrint("lfo2phase", previous_lfo2phase, get(lfo2phase));
521 | compareAndPrint("osc2fm", previous_osc2fm, get(osc2fm));
522 | compareAndPrint("osc2phase", previous_osc2phase, get(osc2phase));
523 | compareAndPrint("osc1pw", previous_osc1pw, get(osc1pw));
524 | compareAndPrint("osc1phase", previous_osc1phase, get(osc1phase));
525 | compareAndPrint("transpose", previous_transpose, get(transpose));
526 | compareAndPrint("freeadattack", previous_freeadattack, get(freeadattack));
527 | compareAndPrint("freeaddecay", previous_freeaddecay, get(freeaddecay));
528 | compareAndPrint("freeadamount", previous_freeadamount, get(freeadamount));
529 | compareAndPrint("freeaddestination", previous_freeaddestination, get(freeaddestination));
530 | compareAndPrint("lfo1sync", previous_lfo1sync, get(lfo1sync));
531 | compareAndPrint("lfo1keytrigger", previous_lfo1keytrigger, get(lfo1keytrigger));
532 | compareAndPrint("lfo2sync", previous_lfo2sync, get(lfo2sync));
533 | compareAndPrint("lfo2keytrigger", previous_lfo2keytrigger, get(lfo2keytrigger));
534 | compareAndPrint("portamento", previous_portamento, get(portamento));
535 | compareAndPrint("portamentomode", previous_portamentomode, get(portamentomode));
536 | compareAndPrint("voices", previous_voices, get(voices));
537 | compareAndPrint("velocityvolume", previous_velocityvolume, get(velocityvolume));
538 | compareAndPrint("velocitycontour", previous_velocitycontour, get(velocitycontour));
539 | compareAndPrint("velocitycutoff", previous_velocitycutoff, get(velocitycutoff));
540 | compareAndPrint("pitchwheelcutoff", previous_pitchwheelcutoff, get(pitchwheelcutoff));
541 | compareAndPrint("pitchwheelpitch", previous_pitchwheelpitch, get(pitchwheelpitch));
542 | compareAndPrint("ringmodulation", previous_ringmodulation, get(ringmodulation));
543 | compareAndPrint("chorus1enable", previous_chorus1enable, get(chorus1enable));
544 | compareAndPrint("chorus2enable", previous_chorus2enable, get(chorus2enable));
545 | compareAndPrint("reverbwet", previous_reverbwet, get(reverbwet));
546 | compareAndPrint("reverbdecay", previous_reverbdecay, get(reverbdecay));
547 | compareAndPrint("reverbpredelay", previous_reverbpredelay, get(reverbpredelay));
548 | compareAndPrint("reverbhighcut", previous_reverbhighcut, get(reverbhighcut));
549 | compareAndPrint("reverblowcut", previous_reverblowcut, get(reverblowcut));
550 | compareAndPrint("oscbitcrusher", previous_oscbitcrusher, get(oscbitcrusher));
551 | compareAndPrint("highpass", previous_highpass, get(highpass));
552 | compareAndPrint("detune", previous_detune, get(detune));
553 | compareAndPrint("vintagenoise", previous_vintagenoise, get(vintagenoise));
554 | compareAndPrint("unnamed2", previous_unnamed2, get(unnamed2));
555 | compareAndPrint("unnamed3", previous_unnamed3, get(unnamed3));
556 | compareAndPrint("envelopeeditordest1", previous_envelopeeditordest1, get(envelopeeditordest1));
557 | compareAndPrint("envelopeeditorspeed", previous_envelopeeditorspeed, get(envelopeeditorspeed));
558 | compareAndPrint("envelopeeditoramount", previous_envelopeeditoramount, get(envelopeeditoramount));
559 | compareAndPrint("envelopeoneshot", previous_envelopeoneshot, get(envelopeoneshot));
560 | compareAndPrint("envelopefixtempo", previous_envelopefixtempo, get(envelopefixtempo));
561 | compareAndPrint("unnamed4", previous_unnamed4, get(unnamed4));
562 | compareAndPrint("unnamed5", previous_unnamed5, get(unnamed5));
563 | compareAndPrint("unnamed6", previous_unnamed6, get(unnamed6));
564 | compareAndPrint("unnamed7", previous_unnamed7, get(unnamed7));
565 | compareAndPrint("unnamed8", previous_unnamed8, get(unnamed8));
566 | compareAndPrint("filterdrive", previous_filterdrive, get(filterdrive));
567 | compareAndPrint("delaywet", previous_delaywet, get(delaywet));
568 | compareAndPrint("delaytime", previous_delaytime, get(delaytime));
569 | compareAndPrint("delaysync", previous_delaysync, get(delaysync));
570 | compareAndPrint("delayfactorl", previous_delayfactorl, get(delayfactorl));
571 | compareAndPrint("delayfactorr", previous_delayfactorr, get(delayfactorr));
572 | compareAndPrint("delayhighshelf", previous_delayhighshelf, get(delayhighshelf));
573 | compareAndPrint("delaylowshelf", previous_delaylowshelf, get(delaylowshelf));
574 | compareAndPrint("delayfeedback", previous_delayfeedback, get(delayfeedback));
575 | compareAndPrint("unnamed9", previous_unnamed9, get(unnamed9));
576 | compareAndPrint("unnamed10", previous_unnamed10, get(unnamed10));
577 | }
578 |
579 | void doRecordParams() {
580 | previous_unnamed1 = get(unnamed1);
581 | previous_volume = get(volume);
582 | previous_filtertype = get(filtertype);
583 | previous_cutoff = get(cutoff);
584 | previous_resonance = get(resonance);
585 | previous_keyfollow = get(keyfollow);
586 | previous_filtercontour = get(filtercontour);
587 | previous_filterattack = get(filterattack);
588 | previous_filterdecay = get(filterdecay);
589 | previous_filtersustain = get(filtersustain);
590 | previous_filterrelease = get(filterrelease);
591 | previous_ampattack = get(ampattack);
592 | previous_ampdecay = get(ampdecay);
593 | previous_ampsustain = get(ampsustain);
594 | previous_amprelease = get(amprelease);
595 | previous_osc1volume = get(osc1volume);
596 | previous_osc2volume = get(osc2volume);
597 | previous_osc3volume = get(osc3volume);
598 | previous_oscmastertune = get(oscmastertune);
599 | previous_osc1tune = get(osc1tune);
600 | previous_osc2tune = get(osc2tune);
601 | previous_osc1finetune = get(osc1finetune);
602 | previous_osc2finetune = get(osc2finetune);
603 | previous_osc1waveform = get(osc1waveform);
604 | previous_osc2waveform = get(osc2waveform);
605 | previous_oscsync = get(oscsync);
606 | previous_lfo1waveform = get(lfo1waveform);
607 | previous_lfo2waveform = get(lfo2waveform);
608 | previous_lfo1rate = get(lfo1rate);
609 | previous_lfo2rate = get(lfo2rate);
610 | previous_lfo1amount = get(lfo1amount);
611 | previous_lfo2amount = get(lfo2amount);
612 | previous_lfo1destination = get(lfo1destination);
613 | previous_lfo2destination = get(lfo2destination);
614 | previous_lfo1phase = get(lfo1phase);
615 | previous_lfo2phase = get(lfo2phase);
616 | previous_osc2fm = get(osc2fm);
617 | previous_osc2phase = get(osc2phase);
618 | previous_osc1pw = get(osc1pw);
619 | previous_osc1phase = get(osc1phase);
620 | previous_transpose = get(transpose);
621 | previous_freeadattack = get(freeadattack);
622 | previous_freeaddecay = get(freeaddecay);
623 | previous_freeadamount = get(freeadamount);
624 | previous_freeaddestination = get(freeaddestination);
625 | previous_lfo1sync = get(lfo1sync);
626 | previous_lfo1keytrigger = get(lfo1keytrigger);
627 | previous_lfo2sync = get(lfo2sync);
628 | previous_lfo2keytrigger = get(lfo2keytrigger);
629 | previous_portamento = get(portamento);
630 | previous_portamentomode = get(portamentomode);
631 | previous_voices = get(voices);
632 | previous_velocityvolume = get(velocityvolume);
633 | previous_velocitycontour = get(velocitycontour);
634 | previous_velocitycutoff = get(velocitycutoff);
635 | previous_pitchwheelcutoff = get(pitchwheelcutoff);
636 | previous_pitchwheelpitch = get(pitchwheelpitch);
637 | previous_ringmodulation = get(ringmodulation);
638 | previous_chorus1enable = get(chorus1enable);
639 | previous_chorus2enable = get(chorus2enable);
640 | previous_reverbwet = get(reverbwet);
641 | previous_reverbdecay = get(reverbdecay);
642 | previous_reverbpredelay = get(reverbpredelay);
643 | previous_reverbhighcut = get(reverbhighcut);
644 | previous_reverblowcut = get(reverblowcut);
645 | previous_oscbitcrusher = get(oscbitcrusher);
646 | previous_highpass = get(highpass);
647 | previous_detune = get(detune);
648 | previous_vintagenoise = get(vintagenoise);
649 | previous_unnamed2 = get(unnamed2);
650 | previous_unnamed3 = get(unnamed3);
651 | previous_envelopeeditordest1 = get(envelopeeditordest1);
652 | previous_envelopeeditorspeed = get(envelopeeditorspeed);
653 | previous_envelopeeditoramount = get(envelopeeditoramount);
654 | previous_envelopeoneshot = get(envelopeoneshot);
655 | previous_envelopefixtempo = get(envelopefixtempo);
656 | previous_unnamed4 = get(unnamed4);
657 | previous_unnamed5 = get(unnamed5);
658 | previous_unnamed6 = get(unnamed6);
659 | previous_unnamed7 = get(unnamed7);
660 | previous_unnamed8 = get(unnamed8);
661 | previous_filterdrive = get(filterdrive);
662 | previous_delaywet = get(delaywet);
663 | previous_delaytime = get(delaytime);
664 | previous_delaysync = get(delaysync);
665 | previous_delayfactorl = get(delayfactorl);
666 | previous_delayfactorr = get(delayfactorr);
667 | previous_delayhighshelf = get(delayhighshelf);
668 | previous_delaylowshelf = get(delaylowshelf);
669 | previous_delayfeedback = get(delayfeedback);
670 | previous_unnamed9 = get(unnamed9);
671 | previous_unnamed10 = get(unnamed10);
672 | }
673 | };
--------------------------------------------------------------------------------
/src/AudioUnits/aumUnit_Massive.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "aumMonitorableAudioUnit.h"
3 |
4 | /******************************************************************************/
5 | /* WARNING: THIS CLASS WAS GENERATED BY THE FOLLOWING FUNCTION: */
6 | /* */
7 | /* aumUnit_Generic::generateClassFileForAudioUnit(string deviceName); */
8 | /* */
9 | /* IF YOU EDIT THIS FILE, YOU RISK HAVING YOUR CHANGES OVERWRITTEN THE NEXT */
10 | /* TIME THE FILE IS RE-WRITTEN BY THIS FUNCTION. TO EDIT THIS FILE, PLEASE */
11 | /* COPY IT TO ANY OTHER FOLDER, RENAME THE CLASS, AND THEN MAKE EDITS. */
12 | /******************************************************************************/
13 |
14 | class aumUnit_Massive : public aumMonitorableAudioUnit
15 | {
16 | public:
17 | //MACRO 1
18 | //min: 0, max: 1, default: 0
19 | const static int macro_1 = 0;
20 |
21 | //MACRO 2
22 | //min: 0, max: 1, default: 0
23 | const static int macro_2 = 1;
24 |
25 | //MACRO 3
26 | //min: 0, max: 1, default: 0
27 | const static int macro_3 = 2;
28 |
29 | //MACRO 4
30 | //min: 0, max: 1, default: 0
31 | const static int macro_4 = 3;
32 |
33 | //MACRO 5
34 | //min: 0, max: 1, default: 0
35 | const static int macro_5 = 4;
36 |
37 | //MACRO 6
38 | //min: 0, max: 1, default: 0
39 | const static int macro_6 = 5;
40 |
41 | //MACRO 7
42 | //min: 0, max: 1, default: 0
43 | const static int macro_7 = 6;
44 |
45 | //MACRO 8
46 | //min: 0, max: 1, default: 0
47 | const static int macro_8 = 7;
48 |
49 | //OSC1-PITCH
50 | //min: 0, max: 1, default: 0.5
51 | const static int osc1_pitch = 8;
52 |
53 | //OSC1-POSITION
54 | //min: 0, max: 1, default: 0.5
55 | const static int osc1_position = 9;
56 |
57 | //OSC1-PARAM2
58 | //min: 0, max: 1, default: 1
59 | const static int osc1_param2 = 10;
60 |
61 | //OSC1-AMP
62 | //min: 0, max: 1, default: 1
63 | const static int osc1_amp = 11;
64 |
65 | //OSC1-FLT.ROUTING
66 | //min: 0, max: 1, default: 0.5
67 | const static int osc1_flt_routing = 12;
68 |
69 | //OSC2-PITCH
70 | //min: 0, max: 1, default: 0.5
71 | const static int osc2_pitch = 13;
72 |
73 | //OSC2-POSITION
74 | //min: 0, max: 1, default: 0
75 | const static int osc2_position = 14;
76 |
77 | //OSC2-PARAM2
78 | //min: 0, max: 1, default: 1
79 | const static int osc2_param2 = 15;
80 |
81 | //OSC2-AMP
82 | //min: 0, max: 1, default: 0
83 | const static int osc2_amp = 16;
84 |
85 | //OSC2-FLT.ROUTING
86 | //min: 0, max: 1, default: 0.5
87 | const static int osc2_flt_routing = 17;
88 |
89 | //OSC3-PITCH
90 | //min: 0, max: 1, default: 0.5
91 | const static int osc3_pitch = 18;
92 |
93 | //OSC3-POSITION
94 | //min: 0, max: 1, default: 0
95 | const static int osc3_position = 19;
96 |
97 | //OSC3-PARAM2
98 | //min: 0, max: 1, default: 1
99 | const static int osc3_param2 = 20;
100 |
101 | //OSC3-AMP
102 | //min: 0, max: 1, default: 0
103 | const static int osc3_amp = 21;
104 |
105 | //OSC3-FLT.ROUTING
106 | //min: 0, max: 1, default: 0.5
107 | const static int osc3_flt_routing = 22;
108 |
109 | //NOISE-COLOR
110 | //min: 0, max: 1, default: 0
111 | const static int noise_color = 23;
112 |
113 | //NOISE-AMP
114 | //min: 0, max: 1, default: 0
115 | const static int noise_amp = 24;
116 |
117 | //NOISE-FLTR. ROUTING
118 | //min: 0, max: 1, default: 0.5
119 | const static int noise_fltr_routing = 25;
120 |
121 | //FEEDBACK-AMP
122 | //min: 0, max: 1, default: 0
123 | const static int feedback_amp = 26;
124 |
125 | //FEEDBACK-FLT.ROUTING
126 | //min: 0, max: 1, default: 0.5
127 | const static int feedback_flt_routing = 27;
128 |
129 | //MOD.OSC-PITCH
130 | //min: 0, max: 1, default: 0.5
131 | const static int mod_osc_pitch = 28;
132 |
133 | //MOD.OSC-RNGMOD
134 | //min: 0, max: 1, default: 0
135 | const static int mod_osc_rngmod = 29;
136 |
137 | //MOD.OSC-PHASE
138 | //min: 0, max: 1, default: 0
139 | const static int mod_osc_phase = 30;
140 |
141 | //MOD.OSC-POSITION
142 | //min: 0, max: 1, default: 0
143 | const static int mod_osc_position = 31;
144 |
145 | //MOD.OSC-FLTR.FM
146 | //min: 0, max: 1, default: 0
147 | const static int mod_osc_fltr_fm = 32;
148 |
149 | //FILTER1-CUT/PRM.1
150 | //min: 0, max: 1, default: 0
151 | const static int filter1_cut_prm_1 = 33;
152 |
153 | //FILTER1-BW/PRM.2
154 | //min: 0, max: 1, default: 0
155 | const static int filter1_bw_prm_2 = 34;
156 |
157 | //FILTER1-RES/PRM.3
158 | //min: 0, max: 1, default: 0
159 | const static int filter1_res_prm_3 = 35;
160 |
161 | //FILTER2-CUT/PRM.1
162 | //min: 0, max: 1, default: 0
163 | const static int filter2_cut_prm_1 = 36;
164 |
165 | //FILTER2-BW/PRM.2
166 | //min: 0, max: 1, default: 0
167 | const static int filter2_bw_prm_2 = 37;
168 |
169 | //FILTER2-RES/PRM.3
170 | //min: 0, max: 1, default: 0
171 | const static int filter2_res_prm_3 = 38;
172 |
173 | //SERIELL-PARALLEL
174 | //min: 0, max: 1, default: 0
175 | const static int seriell_parallel = 39;
176 |
177 | //INSERT1-DW/PRM.1
178 | //min: 0, max: 1, default: 0
179 | const static int insert1_dw_prm_1 = 40;
180 |
181 | //INSERT1-PRM.2
182 | //min: 0, max: 1, default: 0
183 | const static int insert1_prm_2 = 41;
184 |
185 | //INSERT2-DW/PRM.1
186 | //min: 0, max: 1, default: 0
187 | const static int insert2_dw_prm_1 = 42;
188 |
189 | //INSERT2-PRM.2
190 | //min: 0, max: 1, default: 0
191 | const static int insert2_prm_2 = 43;
192 |
193 | //MASTER FX1-DRY WET
194 | //min: 0, max: 1, default: 0
195 | const static int master_fx1_dry_wet = 44;
196 |
197 | //MASTER FX1-PRM.2
198 | //min: 0, max: 1, default: 0.5
199 | const static int master_fx1_prm_2 = 45;
200 |
201 | //MASTER FX1-PRM.3
202 | //min: 0, max: 1, default: 0.5
203 | const static int master_fx1_prm_3 = 46;
204 |
205 | //MASTER FX1-PRM.4
206 | //min: 0, max: 1, default: 0.5
207 | const static int master_fx1_prm_4 = 47;
208 |
209 | //MASTER FX2-DRY WET
210 | //min: 0, max: 1, default: 0
211 | const static int master_fx2_dry_wet = 48;
212 |
213 | //MASTER FX2-PRM.2
214 | //min: 0, max: 1, default: 0.5
215 | const static int master_fx2_prm_2 = 49;
216 |
217 | //MASTER FX2-PRM.3
218 | //min: 0, max: 1, default: 0.5
219 | const static int master_fx2_prm_3 = 50;
220 |
221 | //MASTER FX2-PRM.4
222 | //min: 0, max: 1, default: 0.5
223 | const static int master_fx2_prm_4 = 51;
224 |
225 | //FILTER1-OUT GAIN
226 | //min: 0, max: 1, default: 0.8
227 | const static int filter1_out_gain = 52;
228 |
229 | //FILTER2-OUT GAIN
230 | //min: 0, max: 1, default: 0.8
231 | const static int filter2_out_gain = 53;
232 |
233 | //FILTER-1/2-CROSSFADE
234 | //min: 0, max: 1, default: 0.5
235 | const static int filter_1_2_crossfade = 54;
236 |
237 | //BYPASS-GAIN
238 | //min: 0, max: 1, default: 0
239 | const static int bypass_gain = 55;
240 |
241 | //PAN (Fltr-Path)
242 | //min: 0, max: 1, default: 0.5
243 | const static int pan_fltr_path_ = 56;
244 |
245 | //MASTER-VOLUME
246 | //min: 0, max: 1, default: 0.5
247 | const static int master_volume = 57;
248 |
249 | //MODULATOR5-RATE
250 | //min: 0, max: 1, default: 0.5
251 | const static int modulator5_rate = 58;
252 |
253 | //MODULATOR6-RATE
254 | //min: 0, max: 1, default: 0.5
255 | const static int modulator6_rate = 59;
256 |
257 | //MODULATOR7-RATE
258 | //min: 0, max: 1, default: 0.5
259 | const static int modulator7_rate = 60;
260 |
261 | //MODULATOR8-RATE
262 | //min: 0, max: 1, default: 0.5
263 | const static int modulator8_rate = 61;
264 |
265 | //MODULATOR5-AMP
266 | //min: 0, max: 1, default: 1
267 | const static int modulator5_amp = 62;
268 |
269 | //MODULATOR6-AMP
270 | //min: 0, max: 1, default: 1
271 | const static int modulator6_amp = 63;
272 |
273 | //MODULATOR7-AMP
274 | //min: 0, max: 1, default: 1
275 | const static int modulator7_amp = 64;
276 |
277 | //MODULATOR8-AMP
278 | //min: 0, max: 1, default: 1
279 | const static int modulator8_amp = 65;
280 |
281 | //MODULATOR5-CROSSF./GLIDE
282 | //min: 0, max: 1, default: 1
283 | const static int modulator5_crossf_glide = 66;
284 |
285 | //MODULATOR6-CROSSF./GLIDE
286 | //min: 0, max: 1, default: 1
287 | const static int modulator6_crossf_glide = 67;
288 |
289 | //MODULATOR7-CROSSF./GLIDE
290 | //min: 0, max: 1, default: 1
291 | const static int modulator7_crossf_glide = 68;
292 |
293 | //MODULATOR8-CROSSF./GLIDE
294 | //min: 0, max: 1, default: 1
295 | const static int modulator8_crossf_glide = 69;
296 |
297 | //MODULATOR5-IND.LEV
298 | //min: 0, max: 1, default: 0
299 | const static int modulator5_ind_lev = 70;
300 |
301 | //MODULATOR6-IND.LEV
302 | //min: 0, max: 1, default: 0
303 | const static int modulator6_ind_lev = 71;
304 |
305 | //MODULATOR7-IND.LEV
306 | //min: 0, max: 1, default: 0
307 | const static int modulator7_ind_lev = 72;
308 |
309 | //MODULATOR8-IND.LEV
310 | //min: 0, max: 1, default: 0
311 | const static int modulator8_ind_lev = 73;
312 |
313 | //MODULATOR15-SYNC on
314 | //min: 0, max: 1, default: 0
315 | const static int modulator15_sync_on = 74;
316 |
317 | //MODULATOR26-SYNC on
318 | //min: 0, max: 1, default: 0
319 | const static int modulator26_sync_on = 75;
320 |
321 | //MODULATOR37-SYNC on
322 | //min: 0, max: 1, default: 0
323 | const static int modulator37_sync_on = 76;
324 |
325 | //MODULATOR48-SYNC on
326 | //min: 0, max: 1, default: 0
327 | const static int modulator48_sync_on = 77;
328 |
329 | //MODULATOR5-RESTART on
330 | //min: 0, max: 1, default: 1
331 | const static int modulator5_restart_on = 78;
332 |
333 | //MODULATOR6-RESTART on
334 | //min: 0, max: 1, default: 1
335 | const static int modulator6_restart_on = 79;
336 |
337 | //MODULATOR7-RESTART on
338 | //min: 0, max: 1, default: 1
339 | const static int modulator7_restart_on = 80;
340 |
341 | //MODULATOR8-RESTART on
342 | //min: 0, max: 1, default: 1
343 | const static int modulator8_restart_on = 81;
344 |
345 | //ENVELOPE1-VELOCITY
346 | //min: 0, max: 1, default: 0
347 | const static int envelope1_velocity = 82;
348 |
349 | //ENVELOPE2-VELOCITY
350 | //min: 0, max: 1, default: 0
351 | const static int envelope2_velocity = 83;
352 |
353 | //ENVELOPE3-VELOCITY
354 | //min: 0, max: 1, default: 0
355 | const static int envelope3_velocity = 84;
356 |
357 | //ENVELOPE4-VELOCITY
358 | //min: 0, max: 1, default: 0
359 | const static int envelope4_velocity = 85;
360 |
361 | //ENVELOPE1-KEYTRACKING
362 | //min: 0, max: 1, default: 0
363 | const static int envelope1_keytracking = 86;
364 |
365 | //ENVELOPE2-KEYTRACKING
366 | //min: 0, max: 1, default: 0
367 | const static int envelope2_keytracking = 87;
368 |
369 | //ENVELOPE3-KEYTRACKING
370 | //min: 0, max: 1, default: 0
371 | const static int envelope3_keytracking = 88;
372 |
373 | //ENVELOPE4-KEYTRACKING
374 | //min: 0, max: 1, default: 0
375 | const static int envelope4_keytracking = 89;
376 |
377 | //ENVELOPE1-DELAY
378 | //min: 0, max: 1, default: 0
379 | const static int envelope1_delay = 90;
380 |
381 | //ENVELOPE2-DELAY
382 | //min: 0, max: 1, default: 0
383 | const static int envelope2_delay = 91;
384 |
385 | //ENVELOPE3-DELAY
386 | //min: 0, max: 1, default: 0
387 | const static int envelope3_delay = 92;
388 |
389 | //ENVELOPE4-DELAY
390 | //min: 0, max: 1, default: 0
391 | const static int envelope4_delay = 93;
392 |
393 | //ENVELOPE1-ATT.TME
394 | //min: 0, max: 1, default: 0.05
395 | const static int envelope1_att_tme = 94;
396 |
397 | //ENVELOPE2-ATT.TME
398 | //min: 0, max: 1, default: 0.05
399 | const static int envelope2_att_tme = 95;
400 |
401 | //ENVELOPE3-ATT.TME
402 | //min: 0, max: 1, default: 0.05
403 | const static int envelope3_att_tme = 96;
404 |
405 | //ENVELOPE4-ATT.TME
406 | //min: 0, max: 1, default: 0.05
407 | const static int envelope4_att_tme = 97;
408 |
409 | //ENVELOPE1-ATT.LEV
410 | //min: 0, max: 1, default: 1
411 | const static int envelope1_att_lev = 98;
412 |
413 | //ENVELOPE2-ATT.LEV
414 | //min: 0, max: 1, default: 1
415 | const static int envelope2_att_lev = 99;
416 |
417 | //ENVELOPE3-ATT.LEV
418 | //min: 0, max: 1, default: 1
419 | const static int envelope3_att_lev = 100;
420 |
421 | //ENVELOPE4-ATT.LEV
422 | //min: 0, max: 1, default: 1
423 | const static int envelope4_att_lev = 101;
424 |
425 | //ENVELOPE1-DEC.TME
426 | //min: 0, max: 1, default: 0.5
427 | const static int envelope1_dec_tme = 102;
428 |
429 | //ENVELOPE2-DEC.TME
430 | //min: 0, max: 1, default: 0.5
431 | const static int envelope2_dec_tme = 103;
432 |
433 | //ENVELOPE3-DEC.TME
434 | //min: 0, max: 1, default: 0.5
435 | const static int envelope3_dec_tme = 104;
436 |
437 | //ENVELOPE4-DEC.TME
438 | //min: 0, max: 1, default: 0.5
439 | const static int envelope4_dec_tme = 105;
440 |
441 | //ENVELOPE1-DEC.LEV
442 | //min: 0, max: 1, default: 0.5
443 | const static int envelope1_dec_lev = 106;
444 |
445 | //ENVELOPE2-DEC.LEV
446 | //min: 0, max: 1, default: 0.5
447 | const static int envelope2_dec_lev = 107;
448 |
449 | //ENVELOPE3-DEC.LEV
450 | //min: 0, max: 1, default: 0.5
451 | const static int envelope3_dec_lev = 108;
452 |
453 | //ENVELOPE4-DEC.LEV
454 | //min: 0, max: 1, default: 0.5
455 | const static int envelope4_dec_lev = 109;
456 |
457 | //ENVELOPE1-SUST.TME
458 | //min: 0, max: 1, default: 0.5
459 | const static int envelope1_sust_tme = 110;
460 |
461 | //ENVELOPE2-SUST.TME
462 | //min: 0, max: 1, default: 0.5
463 | const static int envelope2_sust_tme = 111;
464 |
465 | //ENVELOPE3-SUST.TME
466 | //min: 0, max: 1, default: 0.5
467 | const static int envelope3_sust_tme = 112;
468 |
469 | //ENVELOPE4-SUST.TME
470 | //min: 0, max: 1, default: 0.5
471 | const static int envelope4_sust_tme = 113;
472 |
473 | //ENVELOPE1-SUST.LEV
474 | //min: 0, max: 1, default: 1
475 | const static int envelope1_sust_lev = 114;
476 |
477 | //ENVELOPE2-SUST.LEV
478 | //min: 0, max: 1, default: 1
479 | const static int envelope2_sust_lev = 115;
480 |
481 | //ENVELOPE3-SUST.LEV
482 | //min: 0, max: 1, default: 1
483 | const static int envelope3_sust_lev = 116;
484 |
485 | //ENVELOPE4-SUST.LEV
486 | //min: 0, max: 1, default: 1
487 | const static int envelope4_sust_lev = 117;
488 |
489 | //ENVELOPE1-LOOP.MORPH
490 | //min: 0, max: 1, default: 0
491 | const static int envelope1_loop_morph = 118;
492 |
493 | //ENVELOPE2-LOOP.MORPH
494 | //min: 0, max: 1, default: 0
495 | const static int envelope2_loop_morph = 119;
496 |
497 | //ENVELOPE3-LOOP.MORPH
498 | //min: 0, max: 1, default: 0
499 | const static int envelope3_loop_morph = 120;
500 |
501 | //ENVELOPE4-LOOP.MORPH
502 | //min: 0, max: 1, default: 0
503 | const static int envelope4_loop_morph = 121;
504 |
505 | //ENVELOPE1-REL. TME
506 | //min: 0, max: 1, default: 0.1
507 | const static int envelope1_rel_tme = 122;
508 |
509 | //ENVELOPE2-REL. TME
510 | //min: 0, max: 1, default: 0.1
511 | const static int envelope2_rel_tme = 123;
512 |
513 | //ENVELOPE3-REL. TME
514 | //min: 0, max: 1, default: 0.1
515 | const static int envelope3_rel_tme = 124;
516 |
517 | //ENVELOPE4-REL. TME
518 | //min: 0, max: 1, default: 0.1
519 | const static int envelope4_rel_tme = 125;
520 |
521 | //GLIDE-TIME
522 | //min: 0, max: 1, default: 0
523 | const static int glide_time = 126;
524 |
525 | //VIBRATO-RATE
526 | //min: 0, max: 1, default: 0
527 | const static int vibrato_rate = 127;
528 |
529 | //VIBRATO-DEPTH
530 | //min: 0, max: 1, default: 0
531 | const static int vibrato_depth = 128;
532 |
533 | //UNI PITCH-CROSSFADE
534 | //min: 0, max: 1, default: 0
535 | const static int uni_pitch_crossfade = 129;
536 |
537 | //UNI WT.POS-CROSSFADE
538 | //min: 0, max: 1, default: 0
539 | const static int uni_wt_pos_crossfade = 130;
540 |
541 | //UNI PAN-CROSSFADE
542 | //min: 0, max: 1, default: 0.5
543 | const static int uni_pan_crossfade = 131;
544 |
545 | //EQ-LoShelf.BOOST
546 | //min: 0, max: 1, default: 0.5
547 | const static int eq_loshelf_boost = 132;
548 |
549 | //EQ-Peak.BOOST
550 | //min: 0, max: 1, default: 0.5
551 | const static int eq_peak_boost = 133;
552 |
553 | //EQ-Peak.FREQ
554 | //min: 0, max: 1, default: 0.5
555 | const static int eq_peak_freq = 134;
556 |
557 | //EQ-HiShelf.BOOST
558 | //min: 0, max: 1, default: 0.5
559 | const static int eq_hishelf_boost = 135;
560 |
561 | //Env.Hold Reset
562 | //min: 0, max: 1, default: 0
563 | const static int env_hold_reset = 136;
564 |
565 | //MODULATOR5-NUM
566 | //min: 0, max: 1, default: 0
567 | const static int modulator5_num = 137;
568 |
569 | //MODULATOR6-NUM
570 | //min: 0, max: 1, default: 0
571 | const static int modulator6_num = 138;
572 |
573 | //MODULATOR7-NUM
574 | //min: 0, max: 1, default: 0
575 | const static int modulator7_num = 139;
576 |
577 | //MODULATOR8-NUM
578 | //min: 0, max: 1, default: 0
579 | const static int modulator8_num = 140;
580 |
581 | //MODULATOR5-DEN
582 | //min: 0, max: 1, default: 0
583 | const static int modulator5_den = 141;
584 |
585 | //MODULATOR6-DEN
586 | //min: 0, max: 1, default: 0
587 | const static int modulator6_den = 142;
588 |
589 | //MODULATOR7-DEN
590 | //min: 0, max: 1, default: 0
591 | const static int modulator7_den = 143;
592 |
593 | //MODULATOR8-DEN
594 | //min: 0, max: 1, default: 0
595 | const static int modulator8_den = 144;
596 |
597 | //MODULATOR5-SNCPOS on
598 | //min: 0, max: 1, default: 1
599 | const static int modulator5_sncpos_on = 145;
600 |
601 | //MODULATOR6-SNCPOS on
602 | //min: 0, max: 1, default: 1
603 | const static int modulator6_sncpos_on = 146;
604 |
605 | //MODULATOR7-SNCPOS on
606 | //min: 0, max: 1, default: 1
607 | const static int modulator7_sncpos_on = 147;
608 |
609 | //MODULATOR8-SNCPOS on
610 | //min: 0, max: 1, default: 1
611 | const static int modulator8_sncpos_on = 148;
612 |
613 | //These variables store the most recenty recorded values
614 | //of each of the parameters, for recording and detection
615 | AudioUnitParameterValue previous_macro_1;
616 | AudioUnitParameterValue previous_macro_2;
617 | AudioUnitParameterValue previous_macro_3;
618 | AudioUnitParameterValue previous_macro_4;
619 | AudioUnitParameterValue previous_macro_5;
620 | AudioUnitParameterValue previous_macro_6;
621 | AudioUnitParameterValue previous_macro_7;
622 | AudioUnitParameterValue previous_macro_8;
623 | AudioUnitParameterValue previous_osc1_pitch;
624 | AudioUnitParameterValue previous_osc1_position;
625 | AudioUnitParameterValue previous_osc1_param2;
626 | AudioUnitParameterValue previous_osc1_amp;
627 | AudioUnitParameterValue previous_osc1_flt_routing;
628 | AudioUnitParameterValue previous_osc2_pitch;
629 | AudioUnitParameterValue previous_osc2_position;
630 | AudioUnitParameterValue previous_osc2_param2;
631 | AudioUnitParameterValue previous_osc2_amp;
632 | AudioUnitParameterValue previous_osc2_flt_routing;
633 | AudioUnitParameterValue previous_osc3_pitch;
634 | AudioUnitParameterValue previous_osc3_position;
635 | AudioUnitParameterValue previous_osc3_param2;
636 | AudioUnitParameterValue previous_osc3_amp;
637 | AudioUnitParameterValue previous_osc3_flt_routing;
638 | AudioUnitParameterValue previous_noise_color;
639 | AudioUnitParameterValue previous_noise_amp;
640 | AudioUnitParameterValue previous_noise_fltr_routing;
641 | AudioUnitParameterValue previous_feedback_amp;
642 | AudioUnitParameterValue previous_feedback_flt_routing;
643 | AudioUnitParameterValue previous_mod_osc_pitch;
644 | AudioUnitParameterValue previous_mod_osc_rngmod;
645 | AudioUnitParameterValue previous_mod_osc_phase;
646 | AudioUnitParameterValue previous_mod_osc_position;
647 | AudioUnitParameterValue previous_mod_osc_fltr_fm;
648 | AudioUnitParameterValue previous_filter1_cut_prm_1;
649 | AudioUnitParameterValue previous_filter1_bw_prm_2;
650 | AudioUnitParameterValue previous_filter1_res_prm_3;
651 | AudioUnitParameterValue previous_filter2_cut_prm_1;
652 | AudioUnitParameterValue previous_filter2_bw_prm_2;
653 | AudioUnitParameterValue previous_filter2_res_prm_3;
654 | AudioUnitParameterValue previous_seriell_parallel;
655 | AudioUnitParameterValue previous_insert1_dw_prm_1;
656 | AudioUnitParameterValue previous_insert1_prm_2;
657 | AudioUnitParameterValue previous_insert2_dw_prm_1;
658 | AudioUnitParameterValue previous_insert2_prm_2;
659 | AudioUnitParameterValue previous_master_fx1_dry_wet;
660 | AudioUnitParameterValue previous_master_fx1_prm_2;
661 | AudioUnitParameterValue previous_master_fx1_prm_3;
662 | AudioUnitParameterValue previous_master_fx1_prm_4;
663 | AudioUnitParameterValue previous_master_fx2_dry_wet;
664 | AudioUnitParameterValue previous_master_fx2_prm_2;
665 | AudioUnitParameterValue previous_master_fx2_prm_3;
666 | AudioUnitParameterValue previous_master_fx2_prm_4;
667 | AudioUnitParameterValue previous_filter1_out_gain;
668 | AudioUnitParameterValue previous_filter2_out_gain;
669 | AudioUnitParameterValue previous_filter_1_2_crossfade;
670 | AudioUnitParameterValue previous_bypass_gain;
671 | AudioUnitParameterValue previous_pan_fltr_path_;
672 | AudioUnitParameterValue previous_master_volume;
673 | AudioUnitParameterValue previous_modulator5_rate;
674 | AudioUnitParameterValue previous_modulator6_rate;
675 | AudioUnitParameterValue previous_modulator7_rate;
676 | AudioUnitParameterValue previous_modulator8_rate;
677 | AudioUnitParameterValue previous_modulator5_amp;
678 | AudioUnitParameterValue previous_modulator6_amp;
679 | AudioUnitParameterValue previous_modulator7_amp;
680 | AudioUnitParameterValue previous_modulator8_amp;
681 | AudioUnitParameterValue previous_modulator5_crossf_glide;
682 | AudioUnitParameterValue previous_modulator6_crossf_glide;
683 | AudioUnitParameterValue previous_modulator7_crossf_glide;
684 | AudioUnitParameterValue previous_modulator8_crossf_glide;
685 | AudioUnitParameterValue previous_modulator5_ind_lev;
686 | AudioUnitParameterValue previous_modulator6_ind_lev;
687 | AudioUnitParameterValue previous_modulator7_ind_lev;
688 | AudioUnitParameterValue previous_modulator8_ind_lev;
689 | AudioUnitParameterValue previous_modulator15_sync_on;
690 | AudioUnitParameterValue previous_modulator26_sync_on;
691 | AudioUnitParameterValue previous_modulator37_sync_on;
692 | AudioUnitParameterValue previous_modulator48_sync_on;
693 | AudioUnitParameterValue previous_modulator5_restart_on;
694 | AudioUnitParameterValue previous_modulator6_restart_on;
695 | AudioUnitParameterValue previous_modulator7_restart_on;
696 | AudioUnitParameterValue previous_modulator8_restart_on;
697 | AudioUnitParameterValue previous_envelope1_velocity;
698 | AudioUnitParameterValue previous_envelope2_velocity;
699 | AudioUnitParameterValue previous_envelope3_velocity;
700 | AudioUnitParameterValue previous_envelope4_velocity;
701 | AudioUnitParameterValue previous_envelope1_keytracking;
702 | AudioUnitParameterValue previous_envelope2_keytracking;
703 | AudioUnitParameterValue previous_envelope3_keytracking;
704 | AudioUnitParameterValue previous_envelope4_keytracking;
705 | AudioUnitParameterValue previous_envelope1_delay;
706 | AudioUnitParameterValue previous_envelope2_delay;
707 | AudioUnitParameterValue previous_envelope3_delay;
708 | AudioUnitParameterValue previous_envelope4_delay;
709 | AudioUnitParameterValue previous_envelope1_att_tme;
710 | AudioUnitParameterValue previous_envelope2_att_tme;
711 | AudioUnitParameterValue previous_envelope3_att_tme;
712 | AudioUnitParameterValue previous_envelope4_att_tme;
713 | AudioUnitParameterValue previous_envelope1_att_lev;
714 | AudioUnitParameterValue previous_envelope2_att_lev;
715 | AudioUnitParameterValue previous_envelope3_att_lev;
716 | AudioUnitParameterValue previous_envelope4_att_lev;
717 | AudioUnitParameterValue previous_envelope1_dec_tme;
718 | AudioUnitParameterValue previous_envelope2_dec_tme;
719 | AudioUnitParameterValue previous_envelope3_dec_tme;
720 | AudioUnitParameterValue previous_envelope4_dec_tme;
721 | AudioUnitParameterValue previous_envelope1_dec_lev;
722 | AudioUnitParameterValue previous_envelope2_dec_lev;
723 | AudioUnitParameterValue previous_envelope3_dec_lev;
724 | AudioUnitParameterValue previous_envelope4_dec_lev;
725 | AudioUnitParameterValue previous_envelope1_sust_tme;
726 | AudioUnitParameterValue previous_envelope2_sust_tme;
727 | AudioUnitParameterValue previous_envelope3_sust_tme;
728 | AudioUnitParameterValue previous_envelope4_sust_tme;
729 | AudioUnitParameterValue previous_envelope1_sust_lev;
730 | AudioUnitParameterValue previous_envelope2_sust_lev;
731 | AudioUnitParameterValue previous_envelope3_sust_lev;
732 | AudioUnitParameterValue previous_envelope4_sust_lev;
733 | AudioUnitParameterValue previous_envelope1_loop_morph;
734 | AudioUnitParameterValue previous_envelope2_loop_morph;
735 | AudioUnitParameterValue previous_envelope3_loop_morph;
736 | AudioUnitParameterValue previous_envelope4_loop_morph;
737 | AudioUnitParameterValue previous_envelope1_rel_tme;
738 | AudioUnitParameterValue previous_envelope2_rel_tme;
739 | AudioUnitParameterValue previous_envelope3_rel_tme;
740 | AudioUnitParameterValue previous_envelope4_rel_tme;
741 | AudioUnitParameterValue previous_glide_time;
742 | AudioUnitParameterValue previous_vibrato_rate;
743 | AudioUnitParameterValue previous_vibrato_depth;
744 | AudioUnitParameterValue previous_uni_pitch_crossfade;
745 | AudioUnitParameterValue previous_uni_wt_pos_crossfade;
746 | AudioUnitParameterValue previous_uni_pan_crossfade;
747 | AudioUnitParameterValue previous_eq_loshelf_boost;
748 | AudioUnitParameterValue previous_eq_peak_boost;
749 | AudioUnitParameterValue previous_eq_peak_freq;
750 | AudioUnitParameterValue previous_eq_hishelf_boost;
751 | AudioUnitParameterValue previous_env_hold_reset;
752 | AudioUnitParameterValue previous_modulator5_num;
753 | AudioUnitParameterValue previous_modulator6_num;
754 | AudioUnitParameterValue previous_modulator7_num;
755 | AudioUnitParameterValue previous_modulator8_num;
756 | AudioUnitParameterValue previous_modulator5_den;
757 | AudioUnitParameterValue previous_modulator6_den;
758 | AudioUnitParameterValue previous_modulator7_den;
759 | AudioUnitParameterValue previous_modulator8_den;
760 | AudioUnitParameterValue previous_modulator5_sncpos_on;
761 | AudioUnitParameterValue previous_modulator6_sncpos_on;
762 | AudioUnitParameterValue previous_modulator7_sncpos_on;
763 | AudioUnitParameterValue previous_modulator8_sncpos_on;
764 |
765 | void setup(string _unitName) {
766 | aumManagedAudioUnit::setup(_unitName, 'aumu', 'NiMa', '-NI-', "aumUnit_Massive");
767 | }
768 |
769 | void doPrintChanges() {
770 | compareAndPrint("macro_1", previous_macro_1, get(macro_1));
771 | compareAndPrint("macro_2", previous_macro_2, get(macro_2));
772 | compareAndPrint("macro_3", previous_macro_3, get(macro_3));
773 | compareAndPrint("macro_4", previous_macro_4, get(macro_4));
774 | compareAndPrint("macro_5", previous_macro_5, get(macro_5));
775 | compareAndPrint("macro_6", previous_macro_6, get(macro_6));
776 | compareAndPrint("macro_7", previous_macro_7, get(macro_7));
777 | compareAndPrint("macro_8", previous_macro_8, get(macro_8));
778 | compareAndPrint("osc1_pitch", previous_osc1_pitch, get(osc1_pitch));
779 | compareAndPrint("osc1_position", previous_osc1_position, get(osc1_position));
780 | compareAndPrint("osc1_param2", previous_osc1_param2, get(osc1_param2));
781 | compareAndPrint("osc1_amp", previous_osc1_amp, get(osc1_amp));
782 | compareAndPrint("osc1_flt_routing", previous_osc1_flt_routing, get(osc1_flt_routing));
783 | compareAndPrint("osc2_pitch", previous_osc2_pitch, get(osc2_pitch));
784 | compareAndPrint("osc2_position", previous_osc2_position, get(osc2_position));
785 | compareAndPrint("osc2_param2", previous_osc2_param2, get(osc2_param2));
786 | compareAndPrint("osc2_amp", previous_osc2_amp, get(osc2_amp));
787 | compareAndPrint("osc2_flt_routing", previous_osc2_flt_routing, get(osc2_flt_routing));
788 | compareAndPrint("osc3_pitch", previous_osc3_pitch, get(osc3_pitch));
789 | compareAndPrint("osc3_position", previous_osc3_position, get(osc3_position));
790 | compareAndPrint("osc3_param2", previous_osc3_param2, get(osc3_param2));
791 | compareAndPrint("osc3_amp", previous_osc3_amp, get(osc3_amp));
792 | compareAndPrint("osc3_flt_routing", previous_osc3_flt_routing, get(osc3_flt_routing));
793 | compareAndPrint("noise_color", previous_noise_color, get(noise_color));
794 | compareAndPrint("noise_amp", previous_noise_amp, get(noise_amp));
795 | compareAndPrint("noise_fltr_routing", previous_noise_fltr_routing, get(noise_fltr_routing));
796 | compareAndPrint("feedback_amp", previous_feedback_amp, get(feedback_amp));
797 | compareAndPrint("feedback_flt_routing", previous_feedback_flt_routing, get(feedback_flt_routing));
798 | compareAndPrint("mod_osc_pitch", previous_mod_osc_pitch, get(mod_osc_pitch));
799 | compareAndPrint("mod_osc_rngmod", previous_mod_osc_rngmod, get(mod_osc_rngmod));
800 | compareAndPrint("mod_osc_phase", previous_mod_osc_phase, get(mod_osc_phase));
801 | compareAndPrint("mod_osc_position", previous_mod_osc_position, get(mod_osc_position));
802 | compareAndPrint("mod_osc_fltr_fm", previous_mod_osc_fltr_fm, get(mod_osc_fltr_fm));
803 | compareAndPrint("filter1_cut_prm_1", previous_filter1_cut_prm_1, get(filter1_cut_prm_1));
804 | compareAndPrint("filter1_bw_prm_2", previous_filter1_bw_prm_2, get(filter1_bw_prm_2));
805 | compareAndPrint("filter1_res_prm_3", previous_filter1_res_prm_3, get(filter1_res_prm_3));
806 | compareAndPrint("filter2_cut_prm_1", previous_filter2_cut_prm_1, get(filter2_cut_prm_1));
807 | compareAndPrint("filter2_bw_prm_2", previous_filter2_bw_prm_2, get(filter2_bw_prm_2));
808 | compareAndPrint("filter2_res_prm_3", previous_filter2_res_prm_3, get(filter2_res_prm_3));
809 | compareAndPrint("seriell_parallel", previous_seriell_parallel, get(seriell_parallel));
810 | compareAndPrint("insert1_dw_prm_1", previous_insert1_dw_prm_1, get(insert1_dw_prm_1));
811 | compareAndPrint("insert1_prm_2", previous_insert1_prm_2, get(insert1_prm_2));
812 | compareAndPrint("insert2_dw_prm_1", previous_insert2_dw_prm_1, get(insert2_dw_prm_1));
813 | compareAndPrint("insert2_prm_2", previous_insert2_prm_2, get(insert2_prm_2));
814 | compareAndPrint("master_fx1_dry_wet", previous_master_fx1_dry_wet, get(master_fx1_dry_wet));
815 | compareAndPrint("master_fx1_prm_2", previous_master_fx1_prm_2, get(master_fx1_prm_2));
816 | compareAndPrint("master_fx1_prm_3", previous_master_fx1_prm_3, get(master_fx1_prm_3));
817 | compareAndPrint("master_fx1_prm_4", previous_master_fx1_prm_4, get(master_fx1_prm_4));
818 | compareAndPrint("master_fx2_dry_wet", previous_master_fx2_dry_wet, get(master_fx2_dry_wet));
819 | compareAndPrint("master_fx2_prm_2", previous_master_fx2_prm_2, get(master_fx2_prm_2));
820 | compareAndPrint("master_fx2_prm_3", previous_master_fx2_prm_3, get(master_fx2_prm_3));
821 | compareAndPrint("master_fx2_prm_4", previous_master_fx2_prm_4, get(master_fx2_prm_4));
822 | compareAndPrint("filter1_out_gain", previous_filter1_out_gain, get(filter1_out_gain));
823 | compareAndPrint("filter2_out_gain", previous_filter2_out_gain, get(filter2_out_gain));
824 | compareAndPrint("filter_1_2_crossfade", previous_filter_1_2_crossfade, get(filter_1_2_crossfade));
825 | compareAndPrint("bypass_gain", previous_bypass_gain, get(bypass_gain));
826 | compareAndPrint("pan_fltr_path_", previous_pan_fltr_path_, get(pan_fltr_path_));
827 | compareAndPrint("master_volume", previous_master_volume, get(master_volume));
828 | compareAndPrint("modulator5_rate", previous_modulator5_rate, get(modulator5_rate));
829 | compareAndPrint("modulator6_rate", previous_modulator6_rate, get(modulator6_rate));
830 | compareAndPrint("modulator7_rate", previous_modulator7_rate, get(modulator7_rate));
831 | compareAndPrint("modulator8_rate", previous_modulator8_rate, get(modulator8_rate));
832 | compareAndPrint("modulator5_amp", previous_modulator5_amp, get(modulator5_amp));
833 | compareAndPrint("modulator6_amp", previous_modulator6_amp, get(modulator6_amp));
834 | compareAndPrint("modulator7_amp", previous_modulator7_amp, get(modulator7_amp));
835 | compareAndPrint("modulator8_amp", previous_modulator8_amp, get(modulator8_amp));
836 | compareAndPrint("modulator5_crossf_glide", previous_modulator5_crossf_glide, get(modulator5_crossf_glide));
837 | compareAndPrint("modulator6_crossf_glide", previous_modulator6_crossf_glide, get(modulator6_crossf_glide));
838 | compareAndPrint("modulator7_crossf_glide", previous_modulator7_crossf_glide, get(modulator7_crossf_glide));
839 | compareAndPrint("modulator8_crossf_glide", previous_modulator8_crossf_glide, get(modulator8_crossf_glide));
840 | compareAndPrint("modulator5_ind_lev", previous_modulator5_ind_lev, get(modulator5_ind_lev));
841 | compareAndPrint("modulator6_ind_lev", previous_modulator6_ind_lev, get(modulator6_ind_lev));
842 | compareAndPrint("modulator7_ind_lev", previous_modulator7_ind_lev, get(modulator7_ind_lev));
843 | compareAndPrint("modulator8_ind_lev", previous_modulator8_ind_lev, get(modulator8_ind_lev));
844 | compareAndPrint("modulator15_sync_on", previous_modulator15_sync_on, get(modulator15_sync_on));
845 | compareAndPrint("modulator26_sync_on", previous_modulator26_sync_on, get(modulator26_sync_on));
846 | compareAndPrint("modulator37_sync_on", previous_modulator37_sync_on, get(modulator37_sync_on));
847 | compareAndPrint("modulator48_sync_on", previous_modulator48_sync_on, get(modulator48_sync_on));
848 | compareAndPrint("modulator5_restart_on", previous_modulator5_restart_on, get(modulator5_restart_on));
849 | compareAndPrint("modulator6_restart_on", previous_modulator6_restart_on, get(modulator6_restart_on));
850 | compareAndPrint("modulator7_restart_on", previous_modulator7_restart_on, get(modulator7_restart_on));
851 | compareAndPrint("modulator8_restart_on", previous_modulator8_restart_on, get(modulator8_restart_on));
852 | compareAndPrint("envelope1_velocity", previous_envelope1_velocity, get(envelope1_velocity));
853 | compareAndPrint("envelope2_velocity", previous_envelope2_velocity, get(envelope2_velocity));
854 | compareAndPrint("envelope3_velocity", previous_envelope3_velocity, get(envelope3_velocity));
855 | compareAndPrint("envelope4_velocity", previous_envelope4_velocity, get(envelope4_velocity));
856 | compareAndPrint("envelope1_keytracking", previous_envelope1_keytracking, get(envelope1_keytracking));
857 | compareAndPrint("envelope2_keytracking", previous_envelope2_keytracking, get(envelope2_keytracking));
858 | compareAndPrint("envelope3_keytracking", previous_envelope3_keytracking, get(envelope3_keytracking));
859 | compareAndPrint("envelope4_keytracking", previous_envelope4_keytracking, get(envelope4_keytracking));
860 | compareAndPrint("envelope1_delay", previous_envelope1_delay, get(envelope1_delay));
861 | compareAndPrint("envelope2_delay", previous_envelope2_delay, get(envelope2_delay));
862 | compareAndPrint("envelope3_delay", previous_envelope3_delay, get(envelope3_delay));
863 | compareAndPrint("envelope4_delay", previous_envelope4_delay, get(envelope4_delay));
864 | compareAndPrint("envelope1_att_tme", previous_envelope1_att_tme, get(envelope1_att_tme));
865 | compareAndPrint("envelope2_att_tme", previous_envelope2_att_tme, get(envelope2_att_tme));
866 | compareAndPrint("envelope3_att_tme", previous_envelope3_att_tme, get(envelope3_att_tme));
867 | compareAndPrint("envelope4_att_tme", previous_envelope4_att_tme, get(envelope4_att_tme));
868 | compareAndPrint("envelope1_att_lev", previous_envelope1_att_lev, get(envelope1_att_lev));
869 | compareAndPrint("envelope2_att_lev", previous_envelope2_att_lev, get(envelope2_att_lev));
870 | compareAndPrint("envelope3_att_lev", previous_envelope3_att_lev, get(envelope3_att_lev));
871 | compareAndPrint("envelope4_att_lev", previous_envelope4_att_lev, get(envelope4_att_lev));
872 | compareAndPrint("envelope1_dec_tme", previous_envelope1_dec_tme, get(envelope1_dec_tme));
873 | compareAndPrint("envelope2_dec_tme", previous_envelope2_dec_tme, get(envelope2_dec_tme));
874 | compareAndPrint("envelope3_dec_tme", previous_envelope3_dec_tme, get(envelope3_dec_tme));
875 | compareAndPrint("envelope4_dec_tme", previous_envelope4_dec_tme, get(envelope4_dec_tme));
876 | compareAndPrint("envelope1_dec_lev", previous_envelope1_dec_lev, get(envelope1_dec_lev));
877 | compareAndPrint("envelope2_dec_lev", previous_envelope2_dec_lev, get(envelope2_dec_lev));
878 | compareAndPrint("envelope3_dec_lev", previous_envelope3_dec_lev, get(envelope3_dec_lev));
879 | compareAndPrint("envelope4_dec_lev", previous_envelope4_dec_lev, get(envelope4_dec_lev));
880 | compareAndPrint("envelope1_sust_tme", previous_envelope1_sust_tme, get(envelope1_sust_tme));
881 | compareAndPrint("envelope2_sust_tme", previous_envelope2_sust_tme, get(envelope2_sust_tme));
882 | compareAndPrint("envelope3_sust_tme", previous_envelope3_sust_tme, get(envelope3_sust_tme));
883 | compareAndPrint("envelope4_sust_tme", previous_envelope4_sust_tme, get(envelope4_sust_tme));
884 | compareAndPrint("envelope1_sust_lev", previous_envelope1_sust_lev, get(envelope1_sust_lev));
885 | compareAndPrint("envelope2_sust_lev", previous_envelope2_sust_lev, get(envelope2_sust_lev));
886 | compareAndPrint("envelope3_sust_lev", previous_envelope3_sust_lev, get(envelope3_sust_lev));
887 | compareAndPrint("envelope4_sust_lev", previous_envelope4_sust_lev, get(envelope4_sust_lev));
888 | compareAndPrint("envelope1_loop_morph", previous_envelope1_loop_morph, get(envelope1_loop_morph));
889 | compareAndPrint("envelope2_loop_morph", previous_envelope2_loop_morph, get(envelope2_loop_morph));
890 | compareAndPrint("envelope3_loop_morph", previous_envelope3_loop_morph, get(envelope3_loop_morph));
891 | compareAndPrint("envelope4_loop_morph", previous_envelope4_loop_morph, get(envelope4_loop_morph));
892 | compareAndPrint("envelope1_rel_tme", previous_envelope1_rel_tme, get(envelope1_rel_tme));
893 | compareAndPrint("envelope2_rel_tme", previous_envelope2_rel_tme, get(envelope2_rel_tme));
894 | compareAndPrint("envelope3_rel_tme", previous_envelope3_rel_tme, get(envelope3_rel_tme));
895 | compareAndPrint("envelope4_rel_tme", previous_envelope4_rel_tme, get(envelope4_rel_tme));
896 | compareAndPrint("glide_time", previous_glide_time, get(glide_time));
897 | compareAndPrint("vibrato_rate", previous_vibrato_rate, get(vibrato_rate));
898 | compareAndPrint("vibrato_depth", previous_vibrato_depth, get(vibrato_depth));
899 | compareAndPrint("uni_pitch_crossfade", previous_uni_pitch_crossfade, get(uni_pitch_crossfade));
900 | compareAndPrint("uni_wt_pos_crossfade", previous_uni_wt_pos_crossfade, get(uni_wt_pos_crossfade));
901 | compareAndPrint("uni_pan_crossfade", previous_uni_pan_crossfade, get(uni_pan_crossfade));
902 | compareAndPrint("eq_loshelf_boost", previous_eq_loshelf_boost, get(eq_loshelf_boost));
903 | compareAndPrint("eq_peak_boost", previous_eq_peak_boost, get(eq_peak_boost));
904 | compareAndPrint("eq_peak_freq", previous_eq_peak_freq, get(eq_peak_freq));
905 | compareAndPrint("eq_hishelf_boost", previous_eq_hishelf_boost, get(eq_hishelf_boost));
906 | compareAndPrint("env_hold_reset", previous_env_hold_reset, get(env_hold_reset));
907 | compareAndPrint("modulator5_num", previous_modulator5_num, get(modulator5_num));
908 | compareAndPrint("modulator6_num", previous_modulator6_num, get(modulator6_num));
909 | compareAndPrint("modulator7_num", previous_modulator7_num, get(modulator7_num));
910 | compareAndPrint("modulator8_num", previous_modulator8_num, get(modulator8_num));
911 | compareAndPrint("modulator5_den", previous_modulator5_den, get(modulator5_den));
912 | compareAndPrint("modulator6_den", previous_modulator6_den, get(modulator6_den));
913 | compareAndPrint("modulator7_den", previous_modulator7_den, get(modulator7_den));
914 | compareAndPrint("modulator8_den", previous_modulator8_den, get(modulator8_den));
915 | compareAndPrint("modulator5_sncpos_on", previous_modulator5_sncpos_on, get(modulator5_sncpos_on));
916 | compareAndPrint("modulator6_sncpos_on", previous_modulator6_sncpos_on, get(modulator6_sncpos_on));
917 | compareAndPrint("modulator7_sncpos_on", previous_modulator7_sncpos_on, get(modulator7_sncpos_on));
918 | compareAndPrint("modulator8_sncpos_on", previous_modulator8_sncpos_on, get(modulator8_sncpos_on));
919 | }
920 |
921 | void doRecordParams() {
922 | previous_macro_1 = get(macro_1);
923 | previous_macro_2 = get(macro_2);
924 | previous_macro_3 = get(macro_3);
925 | previous_macro_4 = get(macro_4);
926 | previous_macro_5 = get(macro_5);
927 | previous_macro_6 = get(macro_6);
928 | previous_macro_7 = get(macro_7);
929 | previous_macro_8 = get(macro_8);
930 | previous_osc1_pitch = get(osc1_pitch);
931 | previous_osc1_position = get(osc1_position);
932 | previous_osc1_param2 = get(osc1_param2);
933 | previous_osc1_amp = get(osc1_amp);
934 | previous_osc1_flt_routing = get(osc1_flt_routing);
935 | previous_osc2_pitch = get(osc2_pitch);
936 | previous_osc2_position = get(osc2_position);
937 | previous_osc2_param2 = get(osc2_param2);
938 | previous_osc2_amp = get(osc2_amp);
939 | previous_osc2_flt_routing = get(osc2_flt_routing);
940 | previous_osc3_pitch = get(osc3_pitch);
941 | previous_osc3_position = get(osc3_position);
942 | previous_osc3_param2 = get(osc3_param2);
943 | previous_osc3_amp = get(osc3_amp);
944 | previous_osc3_flt_routing = get(osc3_flt_routing);
945 | previous_noise_color = get(noise_color);
946 | previous_noise_amp = get(noise_amp);
947 | previous_noise_fltr_routing = get(noise_fltr_routing);
948 | previous_feedback_amp = get(feedback_amp);
949 | previous_feedback_flt_routing = get(feedback_flt_routing);
950 | previous_mod_osc_pitch = get(mod_osc_pitch);
951 | previous_mod_osc_rngmod = get(mod_osc_rngmod);
952 | previous_mod_osc_phase = get(mod_osc_phase);
953 | previous_mod_osc_position = get(mod_osc_position);
954 | previous_mod_osc_fltr_fm = get(mod_osc_fltr_fm);
955 | previous_filter1_cut_prm_1 = get(filter1_cut_prm_1);
956 | previous_filter1_bw_prm_2 = get(filter1_bw_prm_2);
957 | previous_filter1_res_prm_3 = get(filter1_res_prm_3);
958 | previous_filter2_cut_prm_1 = get(filter2_cut_prm_1);
959 | previous_filter2_bw_prm_2 = get(filter2_bw_prm_2);
960 | previous_filter2_res_prm_3 = get(filter2_res_prm_3);
961 | previous_seriell_parallel = get(seriell_parallel);
962 | previous_insert1_dw_prm_1 = get(insert1_dw_prm_1);
963 | previous_insert1_prm_2 = get(insert1_prm_2);
964 | previous_insert2_dw_prm_1 = get(insert2_dw_prm_1);
965 | previous_insert2_prm_2 = get(insert2_prm_2);
966 | previous_master_fx1_dry_wet = get(master_fx1_dry_wet);
967 | previous_master_fx1_prm_2 = get(master_fx1_prm_2);
968 | previous_master_fx1_prm_3 = get(master_fx1_prm_3);
969 | previous_master_fx1_prm_4 = get(master_fx1_prm_4);
970 | previous_master_fx2_dry_wet = get(master_fx2_dry_wet);
971 | previous_master_fx2_prm_2 = get(master_fx2_prm_2);
972 | previous_master_fx2_prm_3 = get(master_fx2_prm_3);
973 | previous_master_fx2_prm_4 = get(master_fx2_prm_4);
974 | previous_filter1_out_gain = get(filter1_out_gain);
975 | previous_filter2_out_gain = get(filter2_out_gain);
976 | previous_filter_1_2_crossfade = get(filter_1_2_crossfade);
977 | previous_bypass_gain = get(bypass_gain);
978 | previous_pan_fltr_path_ = get(pan_fltr_path_);
979 | previous_master_volume = get(master_volume);
980 | previous_modulator5_rate = get(modulator5_rate);
981 | previous_modulator6_rate = get(modulator6_rate);
982 | previous_modulator7_rate = get(modulator7_rate);
983 | previous_modulator8_rate = get(modulator8_rate);
984 | previous_modulator5_amp = get(modulator5_amp);
985 | previous_modulator6_amp = get(modulator6_amp);
986 | previous_modulator7_amp = get(modulator7_amp);
987 | previous_modulator8_amp = get(modulator8_amp);
988 | previous_modulator5_crossf_glide = get(modulator5_crossf_glide);
989 | previous_modulator6_crossf_glide = get(modulator6_crossf_glide);
990 | previous_modulator7_crossf_glide = get(modulator7_crossf_glide);
991 | previous_modulator8_crossf_glide = get(modulator8_crossf_glide);
992 | previous_modulator5_ind_lev = get(modulator5_ind_lev);
993 | previous_modulator6_ind_lev = get(modulator6_ind_lev);
994 | previous_modulator7_ind_lev = get(modulator7_ind_lev);
995 | previous_modulator8_ind_lev = get(modulator8_ind_lev);
996 | previous_modulator15_sync_on = get(modulator15_sync_on);
997 | previous_modulator26_sync_on = get(modulator26_sync_on);
998 | previous_modulator37_sync_on = get(modulator37_sync_on);
999 | previous_modulator48_sync_on = get(modulator48_sync_on);
1000 | previous_modulator5_restart_on = get(modulator5_restart_on);
1001 | previous_modulator6_restart_on = get(modulator6_restart_on);
1002 | previous_modulator7_restart_on = get(modulator7_restart_on);
1003 | previous_modulator8_restart_on = get(modulator8_restart_on);
1004 | previous_envelope1_velocity = get(envelope1_velocity);
1005 | previous_envelope2_velocity = get(envelope2_velocity);
1006 | previous_envelope3_velocity = get(envelope3_velocity);
1007 | previous_envelope4_velocity = get(envelope4_velocity);
1008 | previous_envelope1_keytracking = get(envelope1_keytracking);
1009 | previous_envelope2_keytracking = get(envelope2_keytracking);
1010 | previous_envelope3_keytracking = get(envelope3_keytracking);
1011 | previous_envelope4_keytracking = get(envelope4_keytracking);
1012 | previous_envelope1_delay = get(envelope1_delay);
1013 | previous_envelope2_delay = get(envelope2_delay);
1014 | previous_envelope3_delay = get(envelope3_delay);
1015 | previous_envelope4_delay = get(envelope4_delay);
1016 | previous_envelope1_att_tme = get(envelope1_att_tme);
1017 | previous_envelope2_att_tme = get(envelope2_att_tme);
1018 | previous_envelope3_att_tme = get(envelope3_att_tme);
1019 | previous_envelope4_att_tme = get(envelope4_att_tme);
1020 | previous_envelope1_att_lev = get(envelope1_att_lev);
1021 | previous_envelope2_att_lev = get(envelope2_att_lev);
1022 | previous_envelope3_att_lev = get(envelope3_att_lev);
1023 | previous_envelope4_att_lev = get(envelope4_att_lev);
1024 | previous_envelope1_dec_tme = get(envelope1_dec_tme);
1025 | previous_envelope2_dec_tme = get(envelope2_dec_tme);
1026 | previous_envelope3_dec_tme = get(envelope3_dec_tme);
1027 | previous_envelope4_dec_tme = get(envelope4_dec_tme);
1028 | previous_envelope1_dec_lev = get(envelope1_dec_lev);
1029 | previous_envelope2_dec_lev = get(envelope2_dec_lev);
1030 | previous_envelope3_dec_lev = get(envelope3_dec_lev);
1031 | previous_envelope4_dec_lev = get(envelope4_dec_lev);
1032 | previous_envelope1_sust_tme = get(envelope1_sust_tme);
1033 | previous_envelope2_sust_tme = get(envelope2_sust_tme);
1034 | previous_envelope3_sust_tme = get(envelope3_sust_tme);
1035 | previous_envelope4_sust_tme = get(envelope4_sust_tme);
1036 | previous_envelope1_sust_lev = get(envelope1_sust_lev);
1037 | previous_envelope2_sust_lev = get(envelope2_sust_lev);
1038 | previous_envelope3_sust_lev = get(envelope3_sust_lev);
1039 | previous_envelope4_sust_lev = get(envelope4_sust_lev);
1040 | previous_envelope1_loop_morph = get(envelope1_loop_morph);
1041 | previous_envelope2_loop_morph = get(envelope2_loop_morph);
1042 | previous_envelope3_loop_morph = get(envelope3_loop_morph);
1043 | previous_envelope4_loop_morph = get(envelope4_loop_morph);
1044 | previous_envelope1_rel_tme = get(envelope1_rel_tme);
1045 | previous_envelope2_rel_tme = get(envelope2_rel_tme);
1046 | previous_envelope3_rel_tme = get(envelope3_rel_tme);
1047 | previous_envelope4_rel_tme = get(envelope4_rel_tme);
1048 | previous_glide_time = get(glide_time);
1049 | previous_vibrato_rate = get(vibrato_rate);
1050 | previous_vibrato_depth = get(vibrato_depth);
1051 | previous_uni_pitch_crossfade = get(uni_pitch_crossfade);
1052 | previous_uni_wt_pos_crossfade = get(uni_wt_pos_crossfade);
1053 | previous_uni_pan_crossfade = get(uni_pan_crossfade);
1054 | previous_eq_loshelf_boost = get(eq_loshelf_boost);
1055 | previous_eq_peak_boost = get(eq_peak_boost);
1056 | previous_eq_peak_freq = get(eq_peak_freq);
1057 | previous_eq_hishelf_boost = get(eq_hishelf_boost);
1058 | previous_env_hold_reset = get(env_hold_reset);
1059 | previous_modulator5_num = get(modulator5_num);
1060 | previous_modulator6_num = get(modulator6_num);
1061 | previous_modulator7_num = get(modulator7_num);
1062 | previous_modulator8_num = get(modulator8_num);
1063 | previous_modulator5_den = get(modulator5_den);
1064 | previous_modulator6_den = get(modulator6_den);
1065 | previous_modulator7_den = get(modulator7_den);
1066 | previous_modulator8_den = get(modulator8_den);
1067 | previous_modulator5_sncpos_on = get(modulator5_sncpos_on);
1068 | previous_modulator6_sncpos_on = get(modulator6_sncpos_on);
1069 | previous_modulator7_sncpos_on = get(modulator7_sncpos_on);
1070 | previous_modulator8_sncpos_on = get(modulator8_sncpos_on);
1071 | }
1072 | };
--------------------------------------------------------------------------------