commit 69582b77baacb8e91d73218c0f342befc9a5b336 parent d536aff73d2d80ccabab11b7257837ec04d51da9 Author: dsp56300 <dsp56300@users.noreply.github.com> Date: Wed, 17 Apr 2024 00:51:25 +0200 initial commit of OsTIrus Diffstat:
183 files changed, 5902 insertions(+), 102 deletions(-)
diff --git a/doc/changelog.txt b/doc/changelog.txt @@ -25,6 +25,14 @@ Osirus/OsTIrus: - [Fix] Plugin may crash if a patch data source folder contains files not belonging to presets +OsTIrus: + +- [Imp] Adjusted default Master Volume to 92 to match the TI hardware in USB mode + +- [Fix] Midi indicators on parts blocked mouse clicks, making it difficult to select a part +- [Fix] Added missing Reverb Predelay knob if predelay clock is set to Off +- [Fix] Removed invalid entry in Arp clock selection + 1.3.10 Osirus/OsTIrus: @@ -33,6 +41,11 @@ Osirus/OsTIrus: - [Fix] Selecting a ROM preset via part drop down didn't work after switching to another ROM +OsTIrus: + +- [Fix] Corrupted audio on ARM CPUs +- [Fix] Soft Knob 3 destination wasn't loaded from existing patches + 1.3.9 DSP: @@ -65,6 +78,29 @@ Osirus/OsTIrus: - [Fix] Crash if preset is selected in Single mode while parameters are locked - [Fix] Part Volume knob did not work in Single mode +OsTIrus: + +- [Imp] Reduced host CPU consumption +- [Imp] Soft Knobs are now implemented +- [Imp] Add ability to switch between TI2 and TI Snow +- [Imp] Added LFO LEDs (TI2 only, because the Snow doesn't have LFO LEDs) +- [Imp] Added part activity indicator LEDs +- [Imp] Added pulsating Logo animation that existed on the hardware too +- [Imp] GUI: Added Snow Logo on Snow Device / added Snow part view +- [Imp] Added Master Volume in Common Section +- [Imp] Added Arp user pattern visualization + +- [Fix] Notes were dropped when the DSP reached its internal maximum of 55 voices + Note that this behaviour can still occur if you overclock the DSP. There is + currently no way around it if the firmware is not patched +- [Fix] Some patches generated corrupted audio, for example 'AoilioA BC' +- [Fix] Chorus Mix and Chorus Mix 2 had the same automation name +- [Fix] Hyper Chorus did not work +- [Fix] Various GUI issues in FX sections Distortion, Characters, Chorus, Filterbank, Reverb +- [Fix] Cutoff 2 is reset to center on double click instead of max +- [Fix] Fixed typo in Matrix Section +- [Fix] Performance issues when tweaking knobs + 1.3.8 (2024.03.11) DSP: @@ -78,6 +114,14 @@ Framework: - [Fix] Patch Manager: Missing patches if a directory contains files with unicode characters +OsTIrus: + +- [Imp] Reported latency slightly adjusted for better midi timing + +- [Fix] Part Detune knob displayed incorrect value and didn't update while being moved + +- [Imp] Reset Oscillator shape to Saw on double click + 1.3.7 Framework: @@ -95,13 +139,30 @@ Framework: - [Fix] Patch Manager: It was not possible to add presets to a newly created tag until another data source was selected -Osirus: +Osirus/OsTIrus: - [Imp] Disabled poly pressure to control Page B parameters to prevent accidental patch changes by keyboards that emit MPE messages - [Fix] Locking parameter regions didn't work properly on older version presets and may have caused silence or invalid presets +OsTIrus: + +- [Imp] Device samplerate of 48 Khz is now supported, previously only 44,1 KHz was used for the + Emulation. If 44,1 KHz or 48 Khz is used is automatically determined based on the + host samplerate. +- [Imp] The DSP code supports more samplerates than the hardware device was able to handle and + ranges from 32 Khz to 96 Khz. The samplerate can be overwritten in the advanced options + context menu. The chosen samplerate is preserved as part of the plugin state. + Note that higher samplerates may reduce the voice count if the DSP is not overclocked. +- [Imp] Added Master Volume knob to common page + +- [Fix] Classic Oscillator waveform names were shifted by one +- [Fix] Added missing Modulation Matrix Destinations +- [Fix] Oscillator 2 FM Amount not shown in percent but as values 0-127 +- [Fix] Delay/Tape Delay Feedback displayed wrong percentage values +- [Fix] Comb Filter Frequency did not display note numbers but percentage values + 1.3.6 (2024.03.03) DSP: @@ -134,6 +195,14 @@ Osirus/OsTIrus: - [Fix] It was not possible to select a part preset via left-click menu on macOS +OsTIrus: + +- [Fix] GUI displayed parts as disabled in multi mode if any other part than the first one was selected +- [Fix] B/C presets failed to load via patch manager +- [Fix] B/C presets stored to a user bank might sound incorrect after load +- [Fix] Plugin may hang if large buffer sizes are used +- [Fix] AU validation failed if TI rom was present + 1.3.4 (TBD) DSP: @@ -154,6 +223,13 @@ Framework: - [Fix] Long plugin loading times in some hosts due to excessive initial parameter automation updates - [Fix] Part context menu and global context menu opened at the same time on right click +OsTIrus: + +- [Imp] Removed ROM banks that are empty anyway +- [Imp] GUI has been reworked slightly and many GUI related issues have been fixed +- [Fix] Cutoff, Filter Env by Velocity and Filter Resonance by Velocity were linked + when Filter Link is active + Osirus: - [Imp] Parameter regions can now be locked/unlocked via a context menu. Locked parameters do not change diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.15) option(${CMAKE_PROJECT_NAME}_SYNTH_OSIRUS "Build Osirus" on) +option(${CMAKE_PROJECT_NAME}_SYNTH_OSTIRUS "Build OsTIrus" on) # ----------------- DSP56300 emulator @@ -37,7 +38,7 @@ endif() # ----------------- Synth Osirus -if(${CMAKE_PROJECT_NAME}_SYNTH_OSIRUS) +if(${CMAKE_PROJECT_NAME}_SYNTH_OSIRUS OR ${CMAKE_PROJECT_NAME}_SYNTH_OSTIRUS) add_subdirectory(virusLib) add_subdirectory(virusConsoleLib) add_subdirectory(virusTestConsole) diff --git a/source/jucePlugin/CMakeLists.txt b/source/jucePlugin/CMakeLists.txt @@ -5,6 +5,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_D set(SOURCES parameterDescriptions_C.json + parameterDescriptions_TI.json ParameterNames.h PluginEditorState.cpp PluginEditorState.h @@ -14,6 +15,8 @@ set(SOURCES VirusController.h version.h + ui3/ArpUserPattern.cpp + ui3/ArpUserPattern.h ui3/ControllerLinks.cpp ui3/ControllerLinks.h ui3/FxPage.cpp @@ -34,12 +37,13 @@ set(SOURCES # https://forum.juce.com/t/help-needed-using-binarydata-with-cmake-juce-6/40486 # "This might be because the BinaryData files are generated during the build, so the IDE may not be able to find them until the build has been run once (and even then, some IDEs might need a bit of a nudge to re-index the binary directory…)" -SET(ASSETS "parameterDescriptions_C.json") +SET(ASSETS + "parameterDescriptions_C.json" + "parameterDescriptions_TI.json" +) -include(skins/Galaxpel/assets.cmake) -include(skins/Hoverland/assets.cmake) -include(skins/Trancy/assets.cmake) +include(skins/TrancyTI/assets.cmake) -juce_add_binary_data(jucePlugin_BinaryData SOURCES ${ASSETS} ${ASSETS_VirusC_Galaxpel} ${ASSETS_VirusC_Hoverland} ${ASSETS_VirusC_Trancy}) +juce_add_binary_data(jucePlugin_BinaryData SOURCES ${ASSETS} ${ASSETS_VirusTI_Trancy}) -createJucePluginWithFX(jucePlugin "Osirus" "TusV" "TusF" jucePlugin_BinaryData virusLib) +createJucePluginWithFX(jucePlugin "OsTIrus" "Ttip" "Ttif" jucePlugin_BinaryData virusLib) diff --git a/source/jucePlugin/PluginEditorState.cpp b/source/jucePlugin/PluginEditorState.cpp @@ -8,9 +8,7 @@ const std::vector<PluginEditorState::Skin> g_includedSkins = { - {"Hoverland", "VirusC_Hoverland.json", ""}, - {"Trancy", "VirusC_Trancy.json", ""}, - {"Galaxpel", "VirusC_Galaxpel.json", ""} + {"TI Trancy", "VirusTI_Trancy.json", ""} }; PluginEditorState::PluginEditorState(AudioPluginAudioProcessor& _processor, pluginLib::Controller& _controller) : jucePluginEditorLib::PluginEditorState(_processor, _controller, g_includedSkins) diff --git a/source/jucePlugin/PluginProcessor.cpp b/source/jucePlugin/PluginProcessor.cpp @@ -13,10 +13,10 @@ namespace juce::PropertiesFile::Options getConfigOptions() { juce::PropertiesFile::Options opts; - opts.applicationName = "DSP56300 Emulator"; + opts.applicationName = "DSP56300Emulator_OsTIrus"; opts.filenameSuffix = ".settings"; - opts.folderName = "DSP56300 Emulator"; - opts.osxLibrarySubFolder = "Application Support/DSP56300 Emulator"; + opts.folderName = "DSP56300Emulator_OsTIrus"; + opts.osxLibrarySubFolder = "Application Support/DSP56300Emulator_OsTIrus"; return opts; } } @@ -29,9 +29,12 @@ AudioPluginAudioProcessor::AudioPluginAudioProcessor() : #if JucePlugin_IsSynth .withOutput("Out 2", juce::AudioChannelSet::stereo(), true) .withOutput("Out 3", juce::AudioChannelSet::stereo(), true) + .withOutput("USB 1", juce::AudioChannelSet::stereo(), true) + .withOutput("USB 2", juce::AudioChannelSet::stereo(), true) + .withOutput("USB 3", juce::AudioChannelSet::stereo(), true) #endif , ::getConfigOptions(), pluginLib::Processor::Properties{JucePlugin_Name, JucePlugin_IsSynth, JucePlugin_WantsMidiInput, JucePlugin_ProducesMidiOutput, JucePlugin_IsMidiEffect}) - , m_roms(virusLib::ROMLoader::findROMs()) + , m_roms(virusLib::ROMLoader::findROMs(virusLib::DeviceModel::TI2, virusLib::DeviceModel::Snow)) { evRomChanged.retain(getSelectedRom()); @@ -98,7 +101,7 @@ bool AudioPluginAudioProcessor::setSelectedRom(const uint32_t _index) synthLib::Device* AudioPluginAudioProcessor::createDevice() { const auto* rom = getSelectedRom(); - return new virusLib::Device(rom ? *rom : virusLib::ROMFile::invalid(), getPreferredDeviceSamplerate(), getHostSamplerate()); + return new virusLib::Device(rom ? *rom : virusLib::ROMFile::invalid(), getPreferredDeviceSamplerate(), getHostSamplerate(), true); } pluginLib::Controller* AudioPluginAudioProcessor::createController() diff --git a/source/jucePlugin/VirusController.cpp b/source/jucePlugin/VirusController.cpp @@ -26,7 +26,8 @@ namespace Virus "requestcontrollerdump", "parameterchange", "singledump", - "multidump" + "multidump", + "singledump_C", }; static_assert(std::size(g_midiPacketNames) == static_cast<size_t>(Controller::MidiPacketType::Count)); @@ -36,7 +37,7 @@ namespace Virus return g_midiPacketNames[static_cast<uint32_t>(_type)]; } - Controller::Controller(AudioPluginAudioProcessor &p, unsigned char deviceId) : pluginLib::Controller(p, loadParameterDescriptions()), m_processor(p), m_deviceId(deviceId) + Controller::Controller(AudioPluginAudioProcessor &p, unsigned char deviceId) : pluginLib::Controller(p, loadParameterDescriptions(p.getModel())), m_processor(p), m_deviceId(deviceId) { switch(p.getModel()) { @@ -44,9 +45,15 @@ namespace Virus case virusLib::DeviceModel::A: case virusLib::DeviceModel::B: case virusLib::DeviceModel::C: m_singles.resize(8); break; - case virusLib::DeviceModel::Snow: m_singles.resize(10); break; + case virusLib::DeviceModel::Snow: case virusLib::DeviceModel::TI: - case virusLib::DeviceModel::TI2: m_singles.resize(26); break; + case virusLib::DeviceModel::TI2: + m_singles.resize( + virusLib::ROMFile::getRomBankCount(virusLib::DeviceModel::TI) + + virusLib::ROMFile::getRomBankCount(virusLib::DeviceModel::TI2) + + virusLib::ROMFile::getRomBankCount(virusLib::DeviceModel::Snow) + + 2 + ); break; } registerParams(p); @@ -94,7 +101,7 @@ namespace Virus if(deviceId != m_deviceId && deviceId != virusLib::OMNI_DEVICE_ID) return; // not intended to this device! - if(name == midiPacketName(MidiPacketType::SingleDump)) + if(name == midiPacketName(MidiPacketType::SingleDump) || name == midiPacketName(MidiPacketType::SingleDump_C)) parseSingle(_msg, data, parameterValues); else if(name == midiPacketName(MidiPacketType::MultiDump)) parseMulti(_msg, data, parameterValues); @@ -350,6 +357,12 @@ namespace Virus bool Controller::parseSingle(pluginLib::MidiPacket::Data& _data, pluginLib::MidiPacket::AnyPartParamValues& _parameterValues, const pluginLib::SysEx& _msg) const { + MidiPacketType unused; + return parseSingle(_data, _parameterValues, _msg, unused); + } + + bool Controller::parseSingle(pluginLib::MidiPacket::Data& _data, pluginLib::MidiPacket::AnyPartParamValues& _parameterValues, const pluginLib::SysEx& _msg, MidiPacketType& usedPacketType) const + { const auto packetName = midiPacketName(MidiPacketType::SingleDump); auto* m = getMidiPacket(packetName); @@ -357,6 +370,8 @@ namespace Virus if(!m) return false; + usedPacketType = MidiPacketType::SingleDump; + if(_msg.size() > m->size()) { pluginLib::SysEx temp; @@ -365,12 +380,21 @@ namespace Virus return parseMidiPacket(*m, _data, _parameterValues, temp); } + if(_msg.size() < m->size()) + { + const auto* mc = getMidiPacket(midiPacketName(MidiPacketType::SingleDump_C)); + if(!mc) + return false; + usedPacketType = MidiPacketType::SingleDump_C; + return parseMidiPacket(*mc, _data, _parameterValues, _msg); + } + return parseMidiPacket(*m, _data, _parameterValues, _msg); } - std::string Controller::loadParameterDescriptions() + std::string Controller::loadParameterDescriptions(const virusLib::DeviceModel _model) { - const auto name = "parameterDescriptions_C.json"; + const auto name = _model == virusLib::DeviceModel::Invalid || virusLib::isTIFamily(_model) ? "parameterDescriptions_TI.json" : "parameterDescriptions_C.json"; const auto path = synthLib::getModulePath() + name; const std::ifstream f(path.c_str(), std::ios::in); @@ -654,9 +678,9 @@ namespace Virus return dst; } - std::vector<uint8_t> Controller::createSingleDump(uint8_t _bank, uint8_t _program, const pluginLib::MidiPacket::AnyPartParamValues& _paramValues) + std::vector<uint8_t> Controller::createSingleDump(MidiPacketType _packet, uint8_t _bank, uint8_t _program, const pluginLib::MidiPacket::AnyPartParamValues& _paramValues) { - const auto* m = getMidiPacket(midiPacketName(MidiPacketType::SingleDump)); + const auto* m = getMidiPacket(midiPacketName(_packet)); assert(m && "midi packet not found"); if(!m) @@ -716,7 +740,45 @@ namespace Virus std::string Controller::getBankName(uint32_t _index) const { char temp[32]{0}; - sprintf(temp, "Bank %c", 'A' + _index); + + if(getBankCount() <= 26) + { + snprintf(temp, sizeof(temp), "Bank %c", 'A' + _index); + } + else if(_index < 2) + { + snprintf(temp, sizeof(temp), "RAM Bank %c", 'A' + _index); + } + else + { + _index -= 2; + + const auto countSnow = virusLib::ROMFile::getRomBankCount(virusLib::DeviceModel::Snow); + const auto countTI = virusLib::ROMFile::getRomBankCount(virusLib::DeviceModel::TI); + const auto countTI2 = virusLib::ROMFile::getRomBankCount(virusLib::DeviceModel::TI2); + + switch(m_processor.getModel()) + { + case virusLib::DeviceModel::Snow: + if(_index < countSnow) sprintf(temp, "Snow Rom %c", 'A' + _index); + else if(_index < countTI + countSnow) sprintf(temp, "TI Rom %c", 'A' + (_index - countSnow)); + else sprintf(temp, "TI2 Rom %c", 'A' + (_index - countTI - countSnow)); + break; + case virusLib::DeviceModel::TI: + if(_index < countTI) sprintf(temp, "TI Rom %c", 'A' + _index); + else if(_index < countTI + countTI2) sprintf(temp, "TI2 Rom %c", 'A' + (_index - countTI)); + else sprintf(temp, "Snow Rom %c", 'A' + (_index - countTI - countTI2)); + break; + case virusLib::DeviceModel::TI2: + if(_index < countTI2) sprintf(temp, "TI2 Rom %c", 'A' + _index); + else if(_index < countTI2 + countTI) sprintf(temp, "TI Rom %c", 'A' + (_index - countTI2)); + else sprintf(temp, "Snow Rom %c", 'A' + (_index - countTI2 - countTI)); + break; + default: + assert(false); + break; + } + } return temp; } diff --git a/source/jucePlugin/VirusController.h b/source/jucePlugin/VirusController.h @@ -4,6 +4,7 @@ #include "../jucePluginLib/controller.h" #include "../virusLib/microcontrollerTypes.h" +#include "../virusLib/romfile.h" #include "../synthLib/plugin.h" @@ -45,6 +46,7 @@ namespace Virus ParameterChange, SingleDump, MultiDump, + SingleDump_C, Count }; @@ -67,7 +69,7 @@ namespace Virus ~Controller() override; std::vector<uint8_t> createSingleDump(uint8_t _part, uint8_t _bank, uint8_t _program); - std::vector<uint8_t> createSingleDump(uint8_t _bank, uint8_t _program, const pluginLib::MidiPacket::AnyPartParamValues& _paramValues); + std::vector<uint8_t> createSingleDump(MidiPacketType _packet, uint8_t _bank, uint8_t _program, const pluginLib::MidiPacket::AnyPartParamValues& _paramValues); std::vector<uint8_t> modifySingleDump(const std::vector<uint8_t>& _sysex, virusLib::BankNumber _newBank, uint8_t _newProgram) const; void selectPrevPreset(uint8_t _part); @@ -149,9 +151,10 @@ namespace Virus uint8_t getDeviceId() const { return m_deviceId; } bool parseSingle(pluginLib::MidiPacket::Data& _data, pluginLib::MidiPacket::AnyPartParamValues& _parameterValues, const pluginLib::SysEx& _msg) const; + bool parseSingle(pluginLib::MidiPacket::Data& _data, pluginLib::MidiPacket::AnyPartParamValues& _parameterValues, const pluginLib::SysEx& _msg, MidiPacketType& usedPacketType) const; private: - static std::string loadParameterDescriptions(); + static std::string loadParameterDescriptions(const virusLib::DeviceModel _model); void timerCallback() override; diff --git a/source/jucePlugin/parameterDescriptions_TI.json b/source/jucePlugin/parameterDescriptions_TI.json @@ -0,0 +1,2535 @@ +{ + "parameterdescriptiondefaults": + { + "isPublic":true, + "isBipolar":false, + "toText":"unsignedZero", + "name":"", + "class":"", + "min":0, + "max":127 + }, + "parameterdescriptions": + [ + {"page":112, "index":0, "name":"Version", "displayName":"Version", "min":0, "max":12, "default":0, "toText":"version", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":112, "index":1, "name":"Modulation Wheel", "displayName":"Modulation Wheel", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":2, "name":"Breath Controller", "displayName":"Breath Controller", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":3, "name":"Contr 3", "displayName":"Contr 3", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":4, "name":"Foot Controller", "displayName":"Foot Controller", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":5, "name":"Portamento Time", "displayName":"Portamento Time", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":6, "name":"Data Slider", "displayName":"Data Slider", "min":0, "max":127, "default":64, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":7, "name":"Channel Volume", "displayName":"Channel Volume", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":8, "name":"Balance", "displayName":"Balance", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":9, "name":"Contr 9", "displayName":"Contr 9", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":10, "name":"Panorama", "displayName":"Panorama", "min":0, "max":127, "default":64, "toText":"panPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":11, "name":"Expression", "displayName":"Expression", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":12, "name":"Contr 12", "displayName":"Contr 12", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":13, "name":"Contr 13", "displayName":"Contr 13", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":14, "name":"Contr 14", "displayName":"Contr 14", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":15, "name":"Contr 15", "displayName":"Contr 15", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":16, "name":"Contr 16", "displayName":"Contr 16", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":17, "name":"Osc1 HyperSaw/Density", "displayName":"Oscillator 1 Density", "min":0, "max":127, "default":0, "toText":"hyperSawDensity", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":false}, + {"page":112, "index":17, "name":"Osc1 Shape", "displayName":"Oscillator 1 Waveform Shape", "min":0, "max":127, "default":64, "toText":"oscShape", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":17, "name":"Osc1 Wavetable/WaveTableIndex", "displayName":"Oscillator 1 Wavetable Index", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":false}, + {"page":112, "index":18, "name":"Osc1 HyperSaw/DetuneSpread", "displayName":"Oscillator 1 Local Detune", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":18, "name":"Osc1 Pulsewidth", "displayName":"Oscillator 1 Pulsewidth", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":19, "name":"Osc1 Wave Select", "displayName":"Oscillator 1 Wave Select", "min":0, "max":63, "default":0, "toText":"oscWave", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":19, "name":"Osc1 Wavetable/WaveTableSelect", "displayName":"Oscillator 1 Wavetable", "min":0, "max":99, "default":0, "toText":"wavetablesNames", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":20, "name":"Osc1 Semitone", "displayName":"Oscillator 1 Detune In Semitones", "min":16, "max":112, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":21, "name":"Osc1 Keyfollow", "displayName":"Oscillator 1 Keyfollow", "min":0, "max":127, "default":96, "toText":"signedNorm", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":22, "name":"Osc2 HyperSaw/Density", "displayName":"Oscillator 2 Density", "min":0, "max":127, "default":0, "toText":"hyperSawDensity", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":false}, + {"page":112, "index":22, "name":"Osc2 Shape", "displayName":"Oscillator 2 Shape", "min":0, "max":127, "default":64, "toText":"oscShape", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":22, "name":"Osc2 Wavetable/WaveTableIndex", "displayName":"Oscillator 2 Wavetable Index", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":23, "name":"Osc2 HyperSaw/DetuneSpread", "displayName":"Oscillator 2 Local Detune", "min":0, "max":127, "default":10, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":23, "name":"Osc2 Pulsewidth", "displayName":"Oscillator 2 Pulsewidth", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":24, "name":"Osc2 Wave Select", "displayName":"Oscillator 2 Wave Select", "min":0, "max":63, "default":0, "toText":"oscWave", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":24, "name":"Osc2 Wavetable/WaveTableSelect", "displayName":"Oscillator 2 Wavetable", "min":0, "max":99, "default":0, "toText":"wavetablesNames", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":25, "name":"Osc2 Semitone", "displayName":"Oscillator 2 Detune In Semitones", "min":16, "max":112, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":26, "name":"Osc2 Detune", "displayName":"Oscillator 2 Fine Detune", "min":0, "max":127, "default":32, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":27, "name":"Osc2 HyperSaw/CrossOscSyncFreq", "displayName":"X-Sync Frequency", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":27, "name":"Osc2 FM Amount", "displayName":"Oscillator 2 FM Amount", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":27, "name":"Osc2 Wavetable/FM Amount", "displayName":"Oscillator 2 Wavetable/FM Amount", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":28, "name":"Osc2 Sync", "displayName":"Oscillator 1 Sync", "min":0, "max":1, "default":0, "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":112, "index":29, "name":"Osc2 Filt Env Amt", "displayName":"Filter Envelope > Pitch", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":29, "name":"Osc2 HyperSaw/FilterEnv > Pitch", "displayName":"Filter Envelope > Pitch", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":29, "name":"Osc2 Wavetable/FilterEnv > Pitch", "displayName":"Filter Envelope > Pitch", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":30, "name":"FM Filt Env Amt", "displayName":"Filter Envelope > FM", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":30, "name":"Osc2 Wavetable/FilterEnv > FM", "displayName":"Filter Envelope > FM", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":30, "name":"Osc2 HyperSaw/FilterEnv > SyncFrequency", "displayName":"Filter Envelope > X-Sync", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":31, "name":"Osc2 Keyfollow", "displayName":"Oscillator 2 Keyfollow", "min":0, "max":127, "default":96, "toText":"signedNorm", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":32, "name":"Bank Select", "min":0, "max":8, "toText":"bank", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":112, "index":33, "name":"Osc Balance", "displayName":"Oscillator Balance", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":34, "name":"Suboscillator Volume", "displayName":"Sub Oscillator Volume", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":35, "name":"Suboscillator Shape", "displayName":"Sub Oscillator Waveform Shape", "min":0, "max":1, "default":0, "toText":"suboscShape", "isDiscrete":true, "isBool":true, "isBipolar":false}, + {"page":112, "index":36, "name":"Osc Mainvolume", "displayName":"Oscillator Section Volume", "min":0, "max":127, "default":64, "toText":"pan", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":37, "name":"Noise Volume", "displayName":"Noise Oscillator Volume", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":39, "name":"Noise Color", "displayName":"Noise Color", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":40, "name":"Vocoder/Carrier Center Frequency", "displayName":"Vocoder Carrier Center Frequency", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":40, "name":"Cutoff", "displayName":"Filter 1 Cutoff", "min":0, "max":127, "default":127, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":41, "name":"Cutoff2", "displayName":"Filter 2 Cutoff", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":41, "name":"Vocoder/Modulator Center Frequency", "displayName":"Vocoder Modulator Center Frequency", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":41, "name":"Vocoder/Modulator Frequency Offset", "displayName":"Vocoder Modulator Frequency Offset", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":41, "name":"Offset for FilterLink", "displayName":"Filter 2 Offset (For Filter Link)", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":42, "name":"Filter1 Resonance", "displayName":"Filter 1 Resonance", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":42, "name":"Vocoder/Carrier Q Factor", "displayName":"Vocoder Carrier Q-Factor", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":43, "name":"Filter2 Resonance", "displayName":"Filter 2 Resonance", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":43, "name":"Vocoder/Modulator Q Factor", "displayName":"Vocoder Modulator Q-Factor", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":44, "name":"Filter1 Env Amt", "displayName":"Filter 1 Envelope Amount", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":45, "name":"Filter2 Env Amt", "displayName":"Filter 2 Envelope Amount", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":46, "name":"Carrier Frequency Spread", "displayName":"Vocoder Carrier Frequency Spread", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":46, "name":"Filter1 Keyfollow", "displayName":"Filter 1 Keyfollow", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":47, "name":"Filter2 Keyfollow", "displayName":"Filter 2 Keyfollow", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":47, "name":"Vocoder/Modulator Frequency Spread", "displayName":"VocoderModulator Frequency Spread", "min":0, "max":127, "default":127, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":48, "name":"Filter Balance", "displayName":"Filter Balance", "min":0, "max":127, "default":64, "toText":"pan", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":48, "name":"Vocoder/Balance", "displayName":"Vocoder Balance (Dry-Wet)", "min":0, "max":127, "default":64, "toText":"pan", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":49, "name":"Saturation Curve", "displayName":"Voice Saturation Type", "min":0, "max":14, "default":0, "toText":"satCurve", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":50, "name":"Ringmodulator Volume", "displayName":"Ring Modulator Volume", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":51, "name":"Filter1 Mode", "displayName":"Filter 1 Mode", "min":0, "max":7, "default":0, "toText":"filter1Mode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":52, "name":"Filter2 Mode", "displayName":"Filter 2 Mode", "min":0, "max":3, "default":0, "toText":"filter2Mode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":53, "name":"Filter Routing", "displayName":"Filter Routing", "min":0, "max":3, "default":0, "toText":"filterRouting", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":54, "name":"Filter Env Attack", "displayName":"Filter Envelope Attack", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":54, "name":"Vocoder/Attack", "displayName":"Vocoder Envelope Attack", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":54, "name":"Input Follower/Attack", "displayName":"Input Follower Envelope Attack", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":55, "name":"Filter Env Decay", "displayName":"Filter Envelope/Decay", "min":0, "max":127, "default":46, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":55, "name":"Vocoder/Release", "displayName":"Vocoder Envelope Release", "min":0, "max":127, "default":46, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":56, "name":"Filter Env Sustain", "displayName":"Filter Envelope/Sustain", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":56, "name":"Input Follower/Level", "displayName":"Input Follower/Level", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":57, "name":"Vocoder/Spectral Balance", "displayName":"Vocoder Spectral Balance", "min":0, "max":127, "default":64, "toText":"envSustainTime", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":57, "name":"Filter Env Sustain Time", "displayName":"Filter Envelope/Sustain Slope", "min":0, "max":127, "default":64, "toText":"envSustainTime", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":58, "name":"Filter Env Release", "displayName":"Filter Envelope/Release", "min":0, "max":127, "default":127, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":58, "name":"Vocoder/Bands", "displayName":"Vocoder Amount Of Synthesis Bands", "min":0, "max":31, "default":31, "toText":"MIDIChannels", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":58, "name":"Input Follower/Release", "displayName":"Input Follower Envelope Release", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":59, "name":"Amp Env Attack", "displayName":"Amplifier Envelope/Attack", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":60, "name":"Amp Env Decay", "displayName":"Amplifier Envelope/Decay", "min":0, "max":127, "default":127, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":61, "name":"Amp Env Sustain", "displayName":"Amplifier Envelope/Sustain", "min":0, "max":127, "default":127, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":62, "name":"Amp Env Sustain Time", "displayName":"Amplifier Envelope/Sustain Slope", "min":0, "max":127, "default":64, "toText":"envSustainTime", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":63, "name":"Amp Env Release", "displayName":"Amplifier Envelope/Release", "min":0, "max":127, "default":4, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":64, "name":"Hold Pedal", "displayName":"Hold Pedal", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":65, "name":"Portamento Pedal", "displayName":"Portamento Pedal", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":66, "name":"Sostenuto Pedal", "displayName":"Sostenuto Pedal", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":67, "name":"Lfo1 Rate", "displayName":"LFO 1/Rate", "min":0, "max":127, "default":48, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":68, "name":"Lfo1 Shape", "displayName":"LFO 1/Waveform Shape", "min":0, "max":67, "default":1, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":69, "name":"Lfo1 Env Mode", "displayName":"LFO 1 Envelope Mode", "min":0, "max":1, "default":0, "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":112, "index":70, "name":"Lfo1 Mode", "displayName":"LFO 1 Mode", "min":0, "max":1, "default":0, "toText":"lfoMode", "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":112, "index":71, "name":"Lfo1 Symmetry", "displayName":"LFO 1/Waveform Contour", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":72, "name":"Lfo1 Keyfollow", "displayName":"LFO 1 Keyfollow", "min":0, "max":127, "default":0, "toText":"unipolarPercentOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":73, "name":"Lfo1 Keytrigger", "displayName":"LFO 1 Trigger Phase", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":74, "name":"Osc1 Lfo1 Amount", "displayName":"LFO 1 > Osc 1", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":75, "name":"Osc2 Lfo1 Amount", "displayName":"LFO 1 > Osc 2", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":76, "name":"PW Lfo1 Amount", "displayName":"LFO 1 > Pulsewidth", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":77, "name":"Reso Lfo1 Amount", "displayName":"LFO 1 > Filter Resonance 1+2", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":78, "name":"FiltGain Lfo1 Amount", "displayName":"LFO 1 > Filter Envelope Gain", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":79, "name":"Lfo2 Rate", "displayName":"LFO 2/Rate", "min":0, "max":127, "default":48, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":80, "name":"Lfo2 Shape", "displayName":"LFO 2/Waveform Shape", "min":0, "max":67, "default":1, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":81, "name":"Lfo2 Env Mode", "displayName":"LFO 2 Envelope Mode", "min":0, "max":1, "default":0, "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":112, "index":82, "name":"Lfo2 Mode", "displayName":"LFO 2 Mode", "min":0, "max":1, "default":0, "toText":"lfoMode", "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":112, "index":83, "name":"Lfo2 Symmetry", "displayName":"LFO 2/Waveform Contour", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":84, "name":"Lfo2 Keyfollow", "displayName":"LFO 2 Keyfollow", "min":0, "max":127, "default":0, "toText":"unipolarPercentOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":85, "name":"Lfo2 Keytrigger", "displayName":"LFO 2 Trigger Phase", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":86, "name":"Shape Lfo2 Amount", "displayName":"LFO 2 > Osc Shape 1+2", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":87, "name":"FM Lfo2 Amount", "displayName":"LFO 2 > Osc FM Amount", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":88, "name":"Cutoff1 Lfo2 Amount", "displayName":"LFO 2 > Cutoff 1", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":89, "name":"Cutoff2 Lfo2 Amount", "displayName":"LFO 2 > Cutoff 2", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":90, "name":"Pan Lfo2 Amount", "displayName":"LFO 2 > Panorama", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":91, "name":"Patch Volume", "displayName":"Patch Volume", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":92, "name":"A_Undefined92", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":93, "name":"Transpose", "displayName":"Patch Transposition", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":94, "name":"Key Mode", "displayName":"Oscillator Section Keyboard Mode", "min":0, "max":5, "default":0, "toText":"keyMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":95, "name":"A_Undefined95", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":96, "name":"A_Undefined96", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":97, "name":"A_Undefined97", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":98, "name":"A_Undefined98", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":99, "name":"A_Undefined99", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":100, "name":"A_Undefined100", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":101, "name":"A_Undefined101", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":102, "name":"A_Undefined102", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":103, "class":"MultiOrSingle|NonPartSensitive", "name":"Chorus/Type", "displayName":"Chorus/Type", "min":0, "max":6, "default":0, "toText":"chorusType", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":104, "name":"Chorus/Mix2", "displayName":"Chorus/Mix 2", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":105, "name":"Chorus Mix", "displayName":"Chorus/Mix", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":106, "name":"Chorus Rate", "displayName":"Chorus/LFO Rate", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":106, "name":"Chorus/Speed", "displayName":"Chorus/Speed", "min":0, "max":127, "default":0, "toText":"slowFast", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":107, "name":"Chorus/Distance", "displayName":"Chorus/Distance", "min":0, "max":127, "default":0, "toText":"chorusDistance", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":107, "name":"Chorus Depth", "displayName":"Chorus/LFO Depth", "min":0, "max":127, "default":16, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":108, "name":"Chorus/Amount", "displayName":"Chorus/Amount", "min":0, "max":127, "default":64, "toText":"chorusAmount", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":108, "name":"Chorus Delay", "displayName":"Chorus/Delay", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":108, "name":"Chorus/Mic Angle", "displayName":"Chorus/Mic Angle", "min":0, "max":127, "default":0, "toText":"-180Degree+180Degree", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":109, "name":"Chorus Feedback", "displayName":"Chorus/Feedback", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":109, "name":"Chorus/LowHigh Bal", "displayName":"Chorus/LowHigh Balance", "min":0, "max":127, "default":0, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":112, "index":110, "name":"Chorus Lfo Shape", "displayName":"Chorus/LFO Shape", "min":0, "max":5, "default":1, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":111, "name":"Chorus/X Over", "displayName":"Chorus/X Over", "min":0, "max":127, "default":64, "toText":"unsignedZero", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":112, "name":"Delay Mode", "displayName":"Delay Mode", "min":0, "max":22, "default":1, "toText":"delayMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":113, "name":"Delay Send", "displayName":"Delay Send", "min":0, "max":127, "default":0, "toText":"send", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":114, "name":"Delay/Tape Delay Time", "displayName":"Delay Tape Delay Time (ms)", "min":0, "max":127, "default":64, "toText":"delayTime", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":114, "name":"Delay Time", "displayName":"Delay Time (ms)", "min":0, "max":127, "default":64, "toText":"delayTime", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":115, "name":"Delay Feedback", "displayName":"Delay Feedback", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":115, "name":"Delay/Tape Delay Feedback", "displayName":"Delay Tape Delay Feedback", "min":0, "max":127, "default":0, "toText":"unipolarPercentFeedback", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":116, "name":"Dly Rate / Rev Decay", "displayName":"Delay LFO Rate", "min":0, "max":127, "default":16, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":117, "name":"Dly Depth ", "displayName":"Delay LFO Depth", "min":0, "max":127, "default":12, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":117, "name":"Delay/Tape Delay Modulation", "displayName":"Delay Tape Delay Modulation", "min":0, "max":127, "default":12, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":118, "name":"Delay Lfo Shape", "displayName":"Delay LFO Shape", "min":0, "max":5, "default":1, "toText":"delayLfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":112, "index":119, "name":"Delay Color", "displayName":"Delay Color", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":112, "index":119, "name":"Delay/Tape Delay Center Frequency", "displayName":"Delay Tape Delay Frequency", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":112, "index":120, "name":"A_Undefined120", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":121, "name":"A_Undefined121", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":123, "name":"All Notes Off", "displayName":"All Notes Off", "min":0, "max":127, "default":1, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":124, "name":"A_Undefined124", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":125, "name":"A_Undefined125", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":126, "name":"A_Undefined126", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":112, "index":127, "name":"A_Undefined127", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + + {"page":113, "index":0, "name":"B_Undefined0", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":1, "name":"B_Undefined1", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":2, "name":"Arp Pattern Selct", "displayName":"Arpeggiator/Pattern", "min":0, "max":63, "default":1, "toText":"User1-64", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":3, "name":"Arp Octave Range", "displayName":"Arpeggiator Range In Octaves", "min":0, "max":3, "default":0, "toText":"MIDIChannels", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":4, "name":"Arp Hold Enable", "displayName":"Arpeggiator Hold Mode", "min":0, "max":1, "default":0, "toText":"OnOff", "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":113, "index":5, "name":"Arp Note Length", "displayName":"Arpeggiator Note Length", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":6, "name":"Arp Swing", "displayName":"Arpeggiator Swing Factor", "min":0, "max":127, "default":0, "toText":"arpSwing", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":7, "name":"Lfo3 Rate", "displayName":"LFO 3/Rate", "min":0, "max":127, "default":92, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":8, "name":"Lfo3 Shape", "displayName":"LFO 3/Waveform Shape", "min":0, "max":67, "default":1, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":9, "name":"Lfo3 Mode", "displayName":"LFO 3 Mode", "min":0, "max":1, "default":0, "toText":"lfoMode", "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":113, "index":10, "name":"Lfo3 Keyfollow", "displayName":"LFO 3 Keyfollow", "min":0, "max":127, "default":0, "toText":"unipolarPercentOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":11, "name":"Lfo3 Destination", "displayName":"LFO 3 User Destination", "min":0, "max":6, "default":1, "toText":"lfoDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":12, "name":"Osc Lfo3 Amount", "displayName":"LFO 3 User Destination Amount", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":13, "name":"Lfo3 Fade-In Time", "displayName":"LFO 3/Fade In Time", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":14, "name":"B_Undefined14", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":15, "name":"Arp Mode", "displayName":"Arpeggiator Mode", "min":0, "max":7, "default":0, "toText":"arpModes", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":16, "name":"Clock Tempo", "displayName":"Tempo (Disabled in Plug-In)", "min":0, "max":127, "default":57, "toText":"bpm", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":17, "name":"Arp Clock", "displayName":"Arpeggiator Clock", "min":0, "max":17, "default":4, "toText":"numArpClockdividers", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":18, "name":"Lfo1 Clock", "displayName":"LFO 1/Clock", "min":0, "max":21, "default":0, "toText":"numLFOClockdividers", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":19, "name":"Lfo2 Clock", "displayName":"LFO 2/Clock", "min":0, "max":21, "default":0, "toText":"numLFOClockdividers", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":20, "name":"Delay Clock", "displayName":"Delay Clock", "min":0, "max":16, "default":0, "toText":"numDelayClockdividers", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":21, "name":"Lfo3 Clock", "displayName":"LFO 3/Clock", "min":0, "max":21, "default":0, "toText":"numLFOClockdividers", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":22, "name":"B_Undefined22", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":23, "name":"B_Undefined23", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":24, "name":"B_Undefined24", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":25, "name":"Control Smooth Mode", "displayName":"Parameter Smooth Mode", "min":0, "max":20, "default":1, "toText":"controlSmoothMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":26, "name":"Bender Range Up", "displayName":"Bender Up Range", "min":0, "max":127, "default":66, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":113, "index":27, "name":"Bender Range Down", "displayName":"Bender Down Range", "min":0, "max":127, "default":62, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":113, "index":28, "name":"Bender Scale", "displayName":"Bender Scale", "min":0, "max":1, "default":1, "toText":"linExp", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":29, "name":"B_Undefined29", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":30, "name":"Filter1 Env Polarity", "displayName":"Filter 1 Envelope Polarity", "min":0, "max":1, "default":1, "toText":"negPos", "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":113, "index":31, "name":"Filter2 Env Polarity", "displayName":"Filter 2 Envelope Polarity", "min":0, "max":1, "default":1, "toText":"negPos", "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":113, "index":32, "name":"Filter2 Cutoff Link", "displayName":"Filter Cutoff Link", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":113, "index":32, "name":"Vocoder Link", "displayName":"Filter Cutoff Link", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":false, "isBool":true}, + {"page":113, "index":33, "name":"Filter Keytrack Base", "displayName":"Filter Keyfollow Base", "min":0, "max":127, "default":60, "toText":"filterKeytrackBase", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":34, "name":"Osc FM Mode", "displayName":"Oscillator FM Mode", "min":0, "max":6, "default":0, "toText":"oscFMMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":34, "name":"Osc2 Wavetable/FM Mode WaveTable", "displayName":"Wavetable Oscillator FM Mode", "min":0, "max":1, "default":0, "toText":"oscFMModeWaveTable", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":35, "name":"Osc Init Phase", "displayName":"Oscillator Section Initial Phase", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":36, "name":"Punch Intensity", "displayName":"Oscillator Punch Intensity", "min":0, "max":127, "default":64, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":37, "name":"B_Undefined37", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":38, "name":"Input Follower Mode", "displayName":"Input Follower/Select", "min":0, "max":3, "default":0, "toText":"inputFollowerMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":39, "name":"Vocoder Mode", "displayName":"Vocoder Mode", "min":0, "max":6, "default":0, "toText":"vocoderMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":40, "name":"B_Undefined40", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":41, "name":"Osc3 Mode", "displayName":"Oscillator 3 Model", "min":0, "max":67, "default":0, "toText":"osc3Mode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":42, "name":"Osc3 Volume", "displayName":"Oscillator 3 Volume", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":43, "name":"Osc3 Semitone", "displayName":"Oscillator 3 Detune In Semitone", "min":16, "max":112, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":44, "name":"Osc3 Detune", "displayName":"Oscillator 3 Fine Detune", "min":0, "max":127, "default":32, "toText":"nagativ", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":45, "name":"LowEQ Frequency", "displayName":"EQ/Low Frequency (Hz)", "min":0, "max":127, "default":5, "toText":"numEQLowFrequency", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":46, "name":"HighEQ Frequency", "displayName":"EQ/High Frequency (kHz)", "min":0, "max":127, "default":0, "toText":"numEQHighFrequency", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":47, "name":"Osc1 Shape Velocity", "displayName":"Velocity > Osc1 Waveform Shape", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":48, "name":"Osc2 Shape Velocity", "displayName":"Velocity > Osc2 Waveform Shape", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":49, "name":"PulseWidth Velocity", "displayName":"Velocity > Pulsewidth", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":50, "name":"Fm Amount Velocity", "displayName":"Velocity > FM Amount", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":51, "name":"Soft Knob1 ShortName", "displayName":"Soft Knob 1 Name", "min":0, "max":87, "default":0, "toText":"softknobName", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":52, "name":"Soft Knob2 ShortName", "displayName":"Soft Knob 2 Name", "min":0, "max":87, "default":0, "toText":"softknobName", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":53, "name":"Soft Knob3 ShortName", "displayName":"Soft Knob 3 Name", "min":0, "max":87, "default":0, "toText":"softknobName", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":51, "name":"Soft Knob1 ShortName Main", "displayName":"Soft Knob 1 Name", "min":0, "max":87, "default":0, "toText":"softknobName", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":52, "name":"Soft Knob2 ShortName Main", "displayName":"Soft Knob 2 Name", "min":0, "max":87, "default":0, "toText":"softknobName", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":53, "name":"Soft Knob3 ShortName Main", "displayName":"Soft Knob 3 Name", "min":0, "max":87, "default":0, "toText":"softknobName", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":54, "name":"Flt1 EnvAmt Velocity", "displayName":"Velocity > Filter 1 Envelope Amount", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":55, "name":"Flt2 EnvAmt Velocity", "displayName":"Velocity > Filter 2 Envelope Amount", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":56, "name":"Resonance1 Velocity", "displayName":"Velocity > Filter 1 Resonance", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":57, "name":"Resonance2 Velocity", "displayName":"Velocity > Filter 2 Resonance", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":58, "name":"Second Output Balance", "displayName":"Surround Channel Balance", "min":0, "max":127, "default":0, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":59, "name":"B_Undefined59", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":60, "name":"Amp Velocity", "displayName":"Velocity > Volume", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":61, "name":"Panorama Velocity", "displayName":"Velocity > Panorama", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":62, "name":"Soft Knob-1 Single", "displayName":"Soft Knob 1 Destination", "min":0, "max":127, "default":0, "toText":"softknobDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":63, "name":"Soft Knob-2 Single", "displayName":"Soft Knob 2 Destination", "min":0, "max":127, "default":0, "toText":"softknobDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":64, "name":"Assign1 Source", "displayName":"Mod Matrix Slot 1/Source", "min":0, "max":39, "default":0, "toText":"modmatrixSource", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":65, "name":"Assign1 Destination", "displayName":"Mod Matrix Slot 1/Dest 1", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":66, "name":"Assign1 Amount", "displayName":"Mod Matrix Slot 1/Amount 1", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":67, "name":"Assign2 Source", "displayName":"Mod Matrix Slot 2/Source", "min":0, "max":39, "default":0, "toText":"modmatrixSource", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":68, "name":"Assign2 Destination1", "displayName":"Mod Matrix Slot 2/Dest 1", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":69, "name":"Assign2 Amount1", "displayName":"Mod Matrix Slot 2/Amount 1", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":70, "name":"Assign2 Destination2", "displayName":"Mod Matrix Slot 2/Dest 2", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":71, "name":"Assign2 Amount2", "displayName":"Mod Matrix Slot 2/Amount 2", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":72, "name":"Assign3 Source", "displayName":"Mod Matrix Slot 3/Source", "min":0, "max":39, "default":0, "toText":"modmatrixSource", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":73, "name":"Assign3 Destination1", "displayName":"Mod Matrix Slot 3/Dest 1", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":74, "name":"Assign3 Amount1", "displayName":"Mod Matrix Slot 3/Amount 1", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":75, "name":"Assign3 Destination2", "displayName":"Mod Matrix Slot 3/Dest 2", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":76, "name":"Assign3 Amount2", "displayName":"Mod Matrix Slot 3/Amount 2", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":77, "name":"Assign3 Destination3", "displayName":"Mod Matrix Slot 3/Dest 3", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":78, "name":"Assign3 Amount3", "displayName":"Mod Matrix Slot 3/Amount 3", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":79, "name":"LFO1 Assign Dest", "displayName":"LFO 1 User Destination", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":80, "name":"LFO1 Assign Amount", "displayName":"LFO 1 User Destination Amount", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":81, "name":"LFO2 Assign Dest", "displayName":"LFO 2 User Destination", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":82, "name":"LFO2 Assign Amount", "displayName":"LFO 2 User Destination Amount", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":83, "name":"B_Undefined83", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":84, "name":"Phaser Mode", "displayName":"Phaser/Stages", "min":0, "max":5, "default":3, "toText":"phaserMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":85, "name":"Phaser Mix", "displayName":"Phaser/Mix", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":86, "name":"Phaser Rate", "displayName":"Phaser/LFO Rate", "min":0, "max":127, "default":36, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":87, "name":"Phaser Depth", "displayName":"Phaser/Depth", "min":0, "max":127, "default":112, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":88, "name":"Phaser Frequency", "displayName":"Phaser/Frequency", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":89, "name":"Phaser Feedback", "displayName":"Phaser/Feedback", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":90, "name":"Phaser Spread", "displayName":"Phaser/Spread", "min":0, "max":127, "default":127, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":91, "name":"B_Undefined91", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":92, "name":"MidEQ Gain", "displayName":"EQ/Mid Gain (dB)", "min":0, "max":127, "default":64, "toText":"NumEqInDB", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":93, "name":"MidEQ Frequency", "displayName":"EQ/Mid Frequency (Hz)", "min":0, "max":127, "default":84, "toText":"numEQMidFrequency", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":94, "name":"MidEQ Q-Factor", "displayName":"EQ/Mid Q-Factor", "min":0, "max":127, "default":32, "toText":"NumEQQ-factor", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":95, "name":"LowEQ Gain", "displayName":"EQ/Low Gain (dB)", "min":0, "max":127, "default":64, "toText":"NumEqInDB", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar": true}, + {"page":113, "index":96, "name":"HighEQ Gain", "displayName":"EQ/High Gain (dB)", "min":0, "max":127, "default":64, "toText":"NumEqInDB", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar": true}, + {"page":113, "index":97, "name":"Bass Intensity", "displayName":"Character Intensity", "min":0, "max":127, "default":0, "toText":"unipolarPercentOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":98, "name":"Bass Tune", "displayName":"Character Tune", "min":0, "max":127, "default":32, "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":99, "name":"Input Ringmodulator", "displayName":"Ring Modulator Mix", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":100, "name":"Distortion Curve", "displayName":"Distortion Type", "min":0, "max":25, "default":0, "toText":"NameDistortionModes", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":101, "name":"Distortion Intensity", "displayName":"Distortion Intensity", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":false, "isBool":false}, + {"page":113, "index":102, "name":"B_Undefined102", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":103, "name":"Assign 4 Source", "displayName":"Mod Matrix Slot 4/Source", "min":0, "max":39, "default":0, "toText":"modmatrixSource", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":104, "name":"Assign 4 Destination", "displayName":"Mod Matrix Slot 4/Dest 1", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":105, "name":"Assign 4 Amount", "displayName":"Assign Slot 4/Amount 1", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":106, "name":"Assign 5 Source", "displayName":"Mod Matrix Slot 5/Source", "min":0, "max":39, "default":0, "toText":"modmatrixSource", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":107, "name":"Assign 5 Destination", "displayName":"Mod Matrix Slot 5/Dest 1", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":108, "name":"Assign 5 Amount", "displayName":"Mod Matrix Slot 5/Amount 1", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":109, "name":"Assign 6 Source", "displayName":"Mod Matrix Slot 6/Source", "min":0, "max":39, "default":0, "toText":"modmatrixSource", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":110, "name":"Assign 6 Destination", "displayName":"Mod Matrix Slot 6/Dest 1", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":111, "name":"Assign 6 Amount", "displayName":"Mod Matrix Slot 6/Amount 1", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":113, "index":112, "name":"SingleName0", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":113, "name":"SingleName1", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":114, "name":"SingleName2", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":115, "name":"SingleName3", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":116, "name":"SingleName4", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":117, "name":"SingleName5", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":118, "name":"SingleName6", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":119, "name":"SingleName7", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":120, "name":"SingleName8", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":121, "name":"SingleName9", "min":0, "max":127, "toText":"ascii", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":122, "name":"Filter Select", "displayName":"Filter Select", "min":0, "max":2, "default":2, "toText":"filterSelect", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":123, "name":"Category1", "displayName":"Patch Category 1", "min":0, "max":22, "default":0, "toText":"category", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":124, "name":"Category2", "displayName":"Patch Category 2", "min":0, "max":22, "default":0, "toText":"category", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":113, "index":125, "name":"B_Undefined125", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":126, "name":"B_Undefined126", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":113, "index":127, "name":"Oscillators/Select", "displayName":"Oscillators/Select", "min":0, "max":2, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + + {"page":110, "index":0, "name":"6E_Undefined0", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":1, "name":"Reverb Mode", "displayName":"Reverb/Mode", "min":0, "max":3, "default":1, "toText":"reverbMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":2, "name":"Reverb Send", "displayName":"Reverb/Send", "min":0, "max":127, "default":0, "toText":"send", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":3, "name":"Reverb Type", "displayName":"Reverb/Type", "min":0, "max":3, "default":0, "toText":"reverbType", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":4, "name":"Reverb Time", "displayName":"Reverb/Time", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":5, "name":"Reverb Damping", "displayName":"Reverb/Damping", "min":0, "max":127, "default":10, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":6, "name":"Reverb Color", "displayName":"Reverb/Color", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":7, "name":"Reverb Predelay", "displayName":"Reverb/Predelay", "min":0, "max":92, "default":20, "toText":"numDelay500", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":8, "name":"Reverb Clock", "displayName":"Reverb/Clock", "min":0, "max":16, "default":0, "toText":"numDelayClockdividers", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":9, "name":"Reverb Feedback", "displayName":"Reverb/Feedback", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":10, "name":"Delay Type", "displayName":"Delay Type", "min":0, "max":3, "default":1, "toText":"delayType", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":11, "name":"6E_Undefined11", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":12, "name":"Delay Tape Delay Ratio", "displayName":"Delay Tape Delay Ratio", "min":0, "max":6, "default":3, "toText":"delayRatio", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":13, "name":"Delay Tape Delay Left Clock", "displayName":"Delay Tape Delay Clock Left", "min":0, "max":5, "default":4, "toText":"tapeDelayClock", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":14, "name":"Delay Tape Delay Right Clock", "displayName":"Delay Tape Delay Clock Right", "min":0, "max":5, "default":2, "toText":"tapeDelayClock", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":15, "name":"6E_Undefined15", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":16, "name":"6E_Undefined16", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":17, "name":"Delay Tape Delay Bandwidth", "displayName":"Delay Tape Delay Bandwidth", "min":0, "max":127, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":18, "name":"6E_Undefined18", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":19, "name":"Filter Bank/Type", "displayName":"Filter Bank Type", "min":0, "max":11, "default":1, "toText":"filterBankType", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":20, "name":"Filter Bank/Mix", "displayName":"Filter Bank Mix", "min":0, "max":127, "default":127, "toText":"unipolarPercentOff", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":21, "name":"Filter Bank/Comb Frequency", "displayName":"Filter Bank Frequency", "min":0, "max":96, "default":48, "toText":"nameCombFilter", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":21, "name":"Filter Bank/Filter Frequency", "displayName":"Filter Bank Frequency", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":21, "name":"Filter Bank/Frequency", "displayName":"Filter Bank Frequency", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":21, "name":"Filter Bank/Vowel Frequency", "displayName":"Filter Bank Frequency", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":22, "name":"Filter Bank/Stereo Phase", "displayName":"Filter Bank Stereo Phase", "min":0, "max":127, "default":64, "toText":"-180Degree+180Degree", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":23, "name":"Filter Bank/Filter Type", "displayName":"Filter Bank Filter Type", "min":0, "max":127, "default":0, "toText":"filterBankFilterType", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":23, "name":"Filter Bank/Poles", "displayName":"Filter Bank Filter Poles", "min":0, "max":127, "default":0, "toText":"filterBankPoles", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":23, "name":"Filter Bank/Shape L", "displayName":"Frequency Shifter Left Shape", "min":0, "max":127, "default":127, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":24, "name":"Filter Bank/Shape R", "displayName":"Frequency Shifter Right Shape", "min":0, "max":127, "default":127, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":24, "name":"Filter Bank/Slope", "displayName":"Filter Bank Filter Slope", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":25, "name":"Filter Bank/Resonance", "displayName":"Filter Bank Resonance", "min":0, "max":127, "default":64, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":26, "name":"Character Type", "displayName":"Character Type", "min":0, "max":8, "default":0, "toText":"characters", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":27, "name":"6E_Undefined27", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":28, "name":"Soft Knobs/Destination 3", "displayName":"Soft Knob 3 Destination", "min":0, "max":127, "default":0, "toText":"softknobDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":29, "name":"6E_Undefined29", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":30, "name":"Osc1 Mode", "displayName":"Oscillator 1 Model", "min":0, "max":7, "default":0, "toText":"nameOscillator12Mode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":31, "name":"6E_Undefined31", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":32, "name":"6E_Undefined32", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":33, "name":"6E_Undefined33", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":34, "name":"6E_Undefined34", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":35, "name":"Osc2 Mode", "displayName":"Oscillator 2 Model", "min":0, "max":7, "default":0, "toText":"nameOscillator12Mode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":36, "name":"6E_Undefined36", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":37, "name":"Osc1 Wavetable/Sync", "displayName":"Oscillator 1 Formant Spread", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":38, "name":"6E_Undefined38", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":39, "name":"6E_Undefined39", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":40, "name":"6E_Undefined40", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":41, "name":"6E_Undefined41", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":42, "name":"Osc1 Wavetable/FormantShift", "displayName":"Oscillator 1 Formant Shift", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":43, "name":"Osc1 Wavetable/Internal Detune", "displayName":"Oscillator 1 Local Detune", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":44, "name":"Osc1 Wavetable/Interpolation", "displayName":"Oscillator 1 Interpolation", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":45, "name":"6E_Undefined45", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":46, "name":"6E_Undefined46", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":47, "name":"6E_Undefined47", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":48, "name":"6E_Undefined48", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":49, "name":"6E_Undefined49", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":50, "name":"6E_Undefined50", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":51, "name":"6E_Undefined51", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":52, "name":"6E_Undefined52", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":53, "name":"6E_Undefined53", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":54, "name":"6E_Undefined54", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":55, "name":"6E_Undefined55", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":56, "name":"6E_Undefined56", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":57, "name":"Osc2 Wavetable/Sync", "displayName":"Oscillator 2 Formant Spread", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":58, "name":"6E_Undefined58", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":59, "name":"6E_Undefined59", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":60, "name":"6E_Undefined60", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":61, "name":"6E_Undefined61", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":62, "name":"Osc2 Wavetable/FormantShift", "displayName":"Oscillator 2 Formant Shift", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":63, "name":"Osc2 Wavetable/Interpolation", "displayName":"Oscillator 2 Local Detune", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":64, "name":"Osc2 Wavetable/Internal Detune", "displayName":"Oscillator 2 Interpolation", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":65, "name":"6E_Undefined65", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":66, "name":"6E_Undefined66", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":67, "name":"6E_Undefined67", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":68, "name":"6E_Undefined68", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":69, "name":"6E_Undefined69", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":70, "name":"Patch Distortion/Treble Booster", "displayName":"Distortion Treble Booster", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":71, "name":"Patch Distortion/High Cut", "displayName":"Distortion High Cut", "min":0, "max":127, "default":127, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":72, "name":"Patch Distortion/Mix", "displayName":"Distortion Mix", "min":0, "max":127, "default":127, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":73, "name":"Patch Distortion/Quality", "displayName":"Distortion Quality", "min":0, "max":127, "default":127, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":74, "name":"Patch Distortion/Tone127", "displayName":"Distortion Tone W", "min":0, "max":127, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":74, "name":"Patch Distortion/Tone64", "displayName":"Distortion Tone N", "min":0, "max":64, "default":64, "toText":"biPolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":75, "name":"6E_Undefined75", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":76, "name":"6E_Undefined76", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":77, "name":"6E_Undefined77", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":78, "name":"6E_Undefined78", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":79, "name":"6E_Undefined79", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":80, "name":"Envelope 3/Attack", "displayName":"Envelope 3/Attack", "min":0, "max":127, "default":20, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":81, "name":"Envelope 3/Decay", "displayName":"Envelope 3/Decay", "min":0, "max":127, "default":70, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":82, "name":"Envelope 3/Sustain", "displayName":"Envelope 3/Sustain", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":83, "name":"Envelope 3/Sustain Time", "displayName":"Envelope 3/Sustain Slope", "min":0, "max":127, "default":0, "toText":"envSustainTime", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":110, "index":84, "name":"Envelope 3/Release", "displayName":"Envelope 3/Release", "min":0, "max":127, "default":70, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":85, "name":"Envelope 4/Attack", "displayName":"Envelope 4/Attack", "min":0, "max":127, "default":20, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":86, "name":"Envelope 4/Decay", "displayName":"Envelope 4/Decay", "min":0, "max":127, "default":70, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":87, "name":"Envelope 4/Sustain", "displayName":"Envelope 4/Sustain", "min":0, "max":127, "default":0, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":88, "name":"Envelope 4/Sustain Time", "displayName":"Envelope 4/Sustain Slope", "min":0, "max":127, "default":0, "toText":"envSustainTime", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":110, "index":89, "name":"Envelope 4/Release", "displayName":"Envelope 4/Release", "min":0, "max":127, "default":70, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":90, "name":"Assign 1 Destination 2", "displayName":"Mod Matrix Slot 1/Dest 2", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":91, "name":"Assign 1 Amount 2", "displayName":"Mod Matrix Slot 1/Amount 2", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":92, "name":"Assign 1 Destination 3", "displayName":"Mod Matrix Slot 1/Dest 3", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":93, "name":"Assign 1 Amount 3", "displayName":"Mod Matrix Slot 1/Amount 3", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":94, "name":"Assign 2 Destination 3", "displayName":"Mod Matrix Slot 2/Dest 3", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":95, "name":"Assign 2 Amount 3", "displayName":"Mod Matrix Slot 2/Amount 3", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":96, "name":"Assign 4 Destination 2", "displayName":"Mod Matrix Slot 4/Dest 2", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":97, "name":"Assign 4 Amount 2", "displayName":"Mod Matrix Assign Slot 4/Amount 2", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":98, "name":"Assign 4 Destination 3", "displayName":"Mod Matrix Slot 4/Dest 3", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":99, "name":"Assign 4 Amount 3", "displayName":"Mod Matrix Slot 4/Amount 3", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":100, "name":"Assign 5 Destination 2", "displayName":"Mod Matrix Slot 5/Dest 2", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":101, "name":"Assign 5 Amount 2", "displayName":"Mod Matrix Slot 5/Amount 2", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":102, "name":"Assign 5 Destination 3", "displayName":"Mod Matrix Slot 5/Dest 3", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":103, "name":"Assign 5 Amount 3", "displayName":"Mod Matrix Slot 5/Amount 3", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":104, "name":"Assign 6 Destination 2", "displayName":"Mod Matrix Slot 6/Dest 2", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":105, "name":"Assign 6 Amount 2", "displayName":"Mod Matrix Slot 6/Amount 2", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":106, "name":"Assign 6 Destination 3", "displayName":"Mod Matrix Slot 6/Dest 3", "min":0, "max":127, "default":0, "toText":"modmatrixDest", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":107, "name":"Assign 6 Amount 3", "displayName":"Mod Matrix Slot 6/Amount 3", "min":0, "max":127, "default":64, "toText":"signedMidOff", "isPublic":true, "isDiscrete":true, "isBool":false, "isBipolar":true}, + {"page":110, "index":108, "name":"6E_Undefined108", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":109, "name":"6E_Undefined109", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":110, "name":"LFO 1/BackupShape", "displayName":"LFO 1/BackupShape", "min":0, "max":67, "default":0, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":111, "name":"LFO 2/BackupShape", "displayName":"LFO 2/BackupShape", "min":0, "max":67, "default":0, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":112, "name":"LFO 3/BackupShape", "displayName":"LFO 3/BackupShape", "min":0, "max":67, "default":0, "toText":"lfoShape", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":113, "name":"6E_Undefined113", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":114, "name":"6E_Undefined114", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":115, "name":"Assigns/Slot Select", "displayName":"Assigns/Slot Select", "min":0, "max":17, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":116, "name":"LFOs/Select", "displayName":"LFOs/Select", "min":0, "max":16, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":117, "name":"FX Upper/Select", "displayName":"FX Upper/Select", "min":0, "max":16, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":118, "name":"FX Lower/Select", "displayName":"FX Lower/Select", "min":0, "max":16, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":119, "name":"6E_Undefined119", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":120, "name":"6E_Undefined120", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":121, "name":"6E_Undefined121", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":122, "name":"Oscillators/BackupKeyMode", "displayName":"Oscillators/BackupKeyMode", "min":1, "max":4, "default":1, "toText":"keyMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":123, "name":"Arpeggiator/BackupMode", "displayName":"Arpeggiator/BackupMode", "min":1, "max":7, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":124, "name":"Osc 3/BackupMode", "displayName":"Oscillator 3/BackupMode", "min":1, "max":66, "default":1, "toText":"osc3Mode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":110, "index":125, "name":"6E_Undefined125", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":126, "name":"6E_Undefined126", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":110, "index":127, "name":"Arpeggiator/UserPatternLength", "displayName":"Arpeggiator Pattern Length", "min":0, "max":31, "default":31, "toText":"MIDIChannels", "isPublic":true, "isDiscrete":true, "isBool":false}, + + {"page":111, "index":0, "name":"Step 1 Length", "displayName":"Step 1 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":1, "name":"Step 1 Velocity", "displayName":"Step 1 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":2, "name":"Step 1 Bitfield", "displayName":"Step 1 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":3, "name":"Step 2 Length", "displayName":"Step 2 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":4, "name":"Step 2 Velocity", "displayName":"Step 2 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":5, "name":"Step 2 Bitfield", "displayName":"Step 2 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":6, "name":"Step 3 Length", "displayName":"Step 3 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":7, "name":"Step 3 Velocity", "displayName":"Step 3 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":8, "name":"Step 3 Bitfield", "displayName":"Step 3 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":9, "name":"Step 4 Length", "displayName":"Step 4 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":10, "name":"Step 4 Velocity", "displayName":"Step 4 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":11, "name":"Step 4 Bitfield", "displayName":"Step 4 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":12, "name":"Step 5 Length", "displayName":"Step 5 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":13, "name":"Step 5 Velocity", "displayName":"Step 5 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":14, "name":"Step 5 Bitfield", "displayName":"Step 5 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":15, "name":"Step 6 Length", "displayName":"Step 6 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":16, "name":"Step 6 Velocity", "displayName":"Step 6 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":17, "name":"Step 6 Bitfield", "displayName":"Step 6 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":18, "name":"Step 7 Length", "displayName":"Step 7 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":19, "name":"Step 7 Velocity", "displayName":"Step 7 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":20, "name":"Step 7 Bitfield", "displayName":"Step 7 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":21, "name":"Step 8 Length", "displayName":"Step 8 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":22, "name":"Step 8 Velocity", "displayName":"Step 8 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":23, "name":"Step 8 Bitfield", "displayName":"Step 8 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":24, "name":"Step 9 Length", "displayName":"Step 9 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":25, "name":"Step 9 Velocity", "displayName":"Step 9 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":26, "name":"Step 9 Bitfield", "displayName":"Step 9 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":27, "name":"Step 10 Length", "displayName":"Step 10 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":28, "name":"Step 10 Velocity", "displayName":"Step 10 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":29, "name":"Step 10 Bitfield", "displayName":"Step 10 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":30, "name":"Step 11 Length", "displayName":"Step 11 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":31, "name":"Step 11 Velocity", "displayName":"Step 11 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":32, "name":"Step 11 Bitfield", "displayName":"Step 11 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":33, "name":"Step 12 Length", "displayName":"Step 12 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":34, "name":"Step 12 Velocity", "displayName":"Step 12 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":35, "name":"Step 12 Bitfield", "displayName":"Step 12 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":36, "name":"Step 13 Length", "displayName":"Step 13 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":37, "name":"Step 13 Velocity", "displayName":"Step 13 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":38, "name":"Step 13 Bitfield", "displayName":"Step 13 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":39, "name":"Step 14 Length", "displayName":"Step 14 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":40, "name":"Step 14 Velocity", "displayName":"Step 14 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":41, "name":"Step 14 Bitfield", "displayName":"Step 14 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":42, "name":"Step 15 Length", "displayName":"Step 15 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":43, "name":"Step 15 Velocity", "displayName":"Step 15 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":44, "name":"Step 15 Bitfield", "displayName":"Step 15 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":45, "name":"Step 16 Length", "displayName":"Step 16 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":46, "name":"Step 16 Velocity", "displayName":"Step 16 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":47, "name":"Step 16 Bitfield", "displayName":"Step 16 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":48, "name":"Step 17 Length", "displayName":"Step 17 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":49, "name":"Step 17 Velocity", "displayName":"Step 17 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":50, "name":"Step 17 Bitfield", "displayName":"Step 17 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":51, "name":"Step 18 Length", "displayName":"Step 18 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":52, "name":"Step 18 Velocity", "displayName":"Step 18 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":53, "name":"Step 18 Bitfield", "displayName":"Step 18 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":54, "name":"Step 19 Length", "displayName":"Step 19 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":55, "name":"Step 19 Velocity", "displayName":"Step 19 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":56, "name":"Step 19 Bitfield", "displayName":"Step 19 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":57, "name":"Step 20 Length", "displayName":"Step 20 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":58, "name":"Step 20 Velocity", "displayName":"Step 20 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":59, "name":"Step 20 Bitfield", "displayName":"Step 20 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":60, "name":"Step 21 Length", "displayName":"Step 21 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":61, "name":"Step 21 Velocity", "displayName":"Step 21 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":62, "name":"Step 21 Bitfield", "displayName":"Step 21 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":63, "name":"Step 22 Length", "displayName":"Step 22 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":64, "name":"Step 22 Velocity", "displayName":"Step 22 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":65, "name":"Step 22 Bitfield", "displayName":"Step 22 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":66, "name":"Step 23 Length", "displayName":"Step 23 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":67, "name":"Step 23 Velocity", "displayName":"Step 23 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":68, "name":"Step 23 Bitfield", "displayName":"Step 23 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":69, "name":"Step 24 Length", "displayName":"Step 24 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":70, "name":"Step 24 Velocity", "displayName":"Step 24 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":71, "name":"Step 24 Bitfield", "displayName":"Step 24 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":72, "name":"Step 25 Length", "displayName":"Step 25 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":73, "name":"Step 25 Velocity", "displayName":"Step 25 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":74, "name":"Step 25 Bitfield", "displayName":"Step 25 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":75, "name":"Step 26 Length", "displayName":"Step 26 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":76, "name":"Step 26 Velocity", "displayName":"Step 26 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":77, "name":"Step 26 Bitfield", "displayName":"Step 26 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":78, "name":"Step 27 Length", "displayName":"Step 27 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":79, "name":"Step 27 Velocity", "displayName":"Step 27 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":80, "name":"Step 27 Bitfield", "displayName":"Step 27 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":81, "name":"Step 28 Length", "displayName":"Step 28 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":82, "name":"Step 28 Velocity", "displayName":"Step 28 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":83, "name":"Step 28 Bitfield", "displayName":"Step 28 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":84, "name":"Step 29 Length", "displayName":"Step 29 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":85, "name":"Step 29 Velocity", "displayName":"Step 29 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":86, "name":"Step 29 Bitfield", "displayName":"Step 29 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":87, "name":"Step 30 Length", "displayName":"Step 30 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":88, "name":"Step 30 Velocity", "displayName":"Step 30 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":89, "name":"Step 30 Bitfield", "displayName":"Step 30 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":90, "name":"Step 31 Length", "displayName":"Step 31 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":91, "name":"Step 31 Velocity", "displayName":"Step 31 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":92, "name":"Step 31 Bitfield", "displayName":"Step 31 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":93, "name":"Step 32 Length", "displayName":"Step 32 Length", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":94, "name":"Step 32 Velocity", "displayName":"Step 32 Velocity", "min":0, "max":127, "default":100, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":95, "name":"Step 32 Bitfield", "displayName":"Step 32 Bitfield", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":96, "name":"6F_Undefined96", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":97, "name":"6F_Undefined97", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":98, "name":"6F_Undefined98", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":99, "name":"6F_Undefined99", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":100, "name":"6F_Undefined100", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":101, "name":"6F_Undefined101", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":102, "name":"6F_Undefined102", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":103, "name":"6F_Undefined103", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":104, "name":"6F_Undefined104", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":105, "name":"6F_Undefined105", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":106, "name":"6F_Undefined106", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":107, "name":"6F_Undefined107", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":108, "name":"6F_Undefined108", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":109, "name":"6F_Undefined109", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":110, "name":"6F_Undefined110", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":111, "name":"6F_Undefined111", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":112, "name":"6F_Undefined112", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":113, "name":"6F_Undefined113", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":114, "name":"6F_Undefined114", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":115, "name":"6F_Undefined115", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":116, "name":"6F_Undefined116", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":117, "name":"6F_Undefined117", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":118, "name":"6F_Undefined118", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":119, "name":"6F_Undefined119", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":111, "index":120, "name":"Unison Mode", "displayName":"Unison Mode", "min":0, "max":7, "default":0, "toText":"unisonMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":121, "name":"Unison Detune", "displayName":"Unison Detune", "min":0, "max":127, "default":48, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":122, "name":"Unison Pan Spread", "displayName":"Unison Panorama Spread", "min":0, "max":127, "default":127, "toText":"unipolarPercent", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":123, "name":"Unison Lfo Phase", "displayName":"Unison LFO Phase Offset", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":124, "name":"Input Mode", "displayName":"Input Mode", "min":0, "max":2, "default":0, "toText":"nameInputMode", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":125, "name":"Input Select", "displayName":"Input Select", "min":0, "max":2, "default":1, "toText":"nameInputSelectLeftRight", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":126, "name":"Atomizer", "displayName":"Atomizer", "min":0, "max":16, "default":0, "toText":"0-16OnOff", "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":111, "index":127, "name":"6F_Undefined127", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + + {"page":114, "index":5, "name":"MultiName0", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":6, "name":"MultiName1", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":7, "name":"MultiName2", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":8, "name":"MultiName3", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":9, "name":"MultiName4", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":10, "name":"MultiName5", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":11, "name":"MultiName6", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":12, "name":"MultiName7", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":13, "name":"MultiName8", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":14, "name":"MultiName9", "min":0, "max":127, "toText":"unsignedZero", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":15, "name":"Parameters/Clock Tempo", "min":0, "max":127, "default":64, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":29, "name":"Parameters/Panel Part", "min":0, "max":15, "default":0, "toText":"MIDIChannels", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":32, "name":"Part Bank Select", "min":0, "max":29, "default":0, "toText":"locationRAM/ROM", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":33, "name":"Part Program Change", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":114, "index":34, "name":"Part Midi Channel", "min":0, "max":15, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":35, "name":"Part Low Key", "min":0, "max":127, "default":0, "toText":"filterKeytrackBase", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":36, "name":"Part High Key", "min":0, "max":127, "default":127, "toText":"filterKeytrackBase", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":37, "name":"Part Transpose", "min":16, "max":112, "default":64, "toText":"signed", "isPublic":false, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":114, "index":38, "name":"Part Detune", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":114, "index":39, "name":"Part Volume", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":true, "isDiscrete":false, "isBool":false, "isBipolar":true}, + {"page":114, "index":40, "name":"Part Midi Volume Init", "min":0, "max":127, "default":64, "toText":"unsignedOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":41, "name":"Part Output Select", "min":0, "max":17, "default":10, "toText":"nameOutputSelectWithoutOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":41, "name":"Part Output Select Control 2", "min":0, "max":17, "default":10, "toText":"nameOutputSelectWithoutOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":43, "name":"Part Parameter/Panorama", "min":0, "max":127, "default":64, "toText":"panPercent", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":114, "index":72, "name":"Part Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":114, "index":73, "name":"Part Midi Volume Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":114, "index":74, "name":"Part Hold Pedal Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":114, "index":75, "name":"Keyb To Midi", "min":0, "max":1, "default":0, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":114, "index":77, "name":"Note Steal Priority", "min":0, "max":1, "default":0, "toText":"nameVoiceStealMode", "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":114, "index":78, "name":"Part Prog Change Enable", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":false, "isBool":true}, + + {"page":115, "index":8, "class":"Global", "name":"Analog Input/Input Source", "min":0, "max":1, "default":0, "toText":"namesInputSource", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":9, "class":"Global", "name":"USB/Virus Control USB IO Configuration", "min":0, "max":2, "default":0, "toText":"nameUSBOutputConfiguration", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":10, "name":"Soft Knob Configuration/Value Softknob0", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false, "softknobTargetSelect":"Soft Knob-1 Single", "softknobTargetList":"softknobTargets"}, + {"page":115, "index":11, "name":"Soft Knob Configuration/Value Softknob1", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false, "softknobTargetSelect":"Soft Knob-2 Single", "softknobTargetList":"softknobTargets"}, + {"page":115, "index":12, "name":"Soft Knob Configuration/Value Softknob2", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":false, "isBool":false, "softknobTargetSelect":"Soft Knobs/Destination 3", "softknobTargetList":"softknobTargets"}, + {"page":115, "index":15, "class":"Global", "name":"System Clock/Standalone Frequency", "min":0, "max":1, "default":0, "toText":"nameClockFrequency", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":16, "class":"Global", "name":"System Clock/Frequency", "min":0, "max":1, "default":0, "toText":"nameClockFrequency", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":17, "class":"Global", "name":"System Clock/Mode", "min":0, "max":1, "default":0, "toText":"nameClockSource", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":20, "class":"Global", "name":"Settings/ValueKeys Repeat Delay", "min":0, "max":127, "default":1, "toText":"unsignedOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":21, "class":"Global", "name":"Settings/ValueKeys Repeat Rate", "min":0, "max":127, "default":1, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":22, "class":"Global", "name":"Settings/ValueKeys Default Counter", "min":0, "max":127, "default":1, "toText":"unsignedOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":25, "class":"Global", "name":"Intern Value Keys", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":25, "class":"Global", "name":"Switches/EQ Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":26, "class":"Global", "name":"Switches/Arpeggiator Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":27, "class":"Global", "name":"Switches/Delay Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":28, "class":"Global", "name":"Switches/Reverb Enable", "min":0, "max":1, "default":1, "toText":"disabledEnabled", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":29, "class":"Global", "name":"Analog Input/Phono Mode", "min":0, "max":1, "default":0, "toText":"namePhonoMode", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":31, "class":"Global", "name":"Analog Input/Gain", "min":0, "max":3, "default":0, "toText":"namesInputGain", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":40, "class":"Global", "name":"Settings/ParameterKeyMode", "min":0, "max":1, "default":0, "toText":"nameParameterKeyMode", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":41, "class":"Global", "name":"Settings/ValueKeyMode", "min":0, "max":1, "default":0, "toText":"OnOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":43, "class":"Global", "name":"SPDIF/Input Routing", "min":0, "max":1, "default":1, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":44, "class":"Global", "name":"SPDIF/Output Routing", "min":0, "max":18, "default":2, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":45, "class":"Global", "name":"SPDIF/Output Routing 2", "min":0, "max":18, "default":2, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":63, "class":"Global", "name":"Keyb Transpose Buttons", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":64, "class":"Global", "name":"Keyb Local", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":65, "class":"Global", "name":"Keyb Mode", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":66, "class":"Global", "name":"Keyb Transpose", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":67, "class":"Global", "name":"Keyb ModWheel Contr", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":68, "class":"Global", "name":"Keyb Pedal 1 Contr", "min":0, "max":127, "default":64, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":69, "class":"Global", "name":"Keyb Pedal 2 Contr", "min":0, "max":127, "default":0, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":70, "class":"Global", "name":"Keyb Pressure Sens", "min":0, "max":127, "default":64, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":85, "class":"Global", "name":"Glob Prog Change Enable", "min":0, "max":1, "default":1, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":86, "class":"Global", "name":"MultiProg Change Enable", "min":0, "max":1, "default":1, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":87, "class":"Global", "name":"Glob Midi Volume Enable", "min":0, "max":1, "default":1, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":90, "class":"Global", "name":"Input Thru Level", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":91, "class":"Global", "name":"Input Boost", "min":0, "max":127, "default":0, "toText":"unsignedOff", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":92, "class":"Global", "name":"Master Tune", "min":0, "max":127, "default":64, "toText":"signed", "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":93, "class":"Global", "name":"Device ID", "min":0, "max":16, "default":16, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":94, "class":"Global", "name":"Midi Control Low Page", "min":0, "max":1, "default":1, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":95, "class":"Global", "name":"Midi Control High Page", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":96, "class":"Global", "name":"Midi Arpeggiator Send", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":97, "class":"Global", "name":"Knob Display", "min":0, "max":3, "default":0, "toText":"unsignedOff", "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":98, "class":"Global", "name":"Midi Dump Tx", "min":0, "max":4, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":99, "class":"Global", "name":"Midi Dump Rx", "min":0, "max":4, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":106, "class":"Global", "name":"Midi Clock Rx", "min":0, "max":3, "default":2, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":110, "class":"Global", "name":"Soft Knob-1 Mode", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":111, "class":"Global", "name":"Soft Knob-2 Mode", "min":0, "max":1, "default":1, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":112, "class":"Global", "name":"Soft Knob-1 Dest", "toText":"softknobDest", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":113, "class":"Global", "name":"Soft Knob-2 Dest", "toText":"softknobDest", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":114, "class":"Global", "name":"Soft Knob-3 Mode", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":115, "class":"Global", "name":"Soft Knob-3 Dest", "toText":"softknobDest", "min":0, "max":127, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":116, "class":"Global", "name":"Edit Mode", "min":0, "max":2, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":117, "class":"Global", "name":"Knob Mode", "min":0, "max":3, "default":1, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":118, "class":"Global", "name":"Memory Protect", "min":0, "max":1, "default":1, "isPublic":false, "isDiscrete":false, "isBool":true}, + {"page":115, "index":120, "class":"Global", "name":"Soft Thru", "min":0, "max":1, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":121, "class":"Global", "name":"Panel Destination", "min":0, "max":2, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":122, "class":"Global", "name":"Play Mode", "min":0, "max":2, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":123, "class":"Global", "name":"Remote Channel", "min":0, "max":15, "default":0, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":124, "class":"Global", "name":"Midi Channel", "min":0, "max":15, "default":0, "isPublic":true, "isDiscrete":true, "isBool":false}, + {"page":115, "index":125, "class":"Global", "name":"Led Mode", "min":0, "max":6, "default":2, "isPublic":false, "isDiscrete":true, "isBool":false}, + {"page":115, "index":126, "class":"Global", "name":"LCD Contrast", "min":0, "max":127, "default":64, "isPublic":false, "isDiscrete":false, "isBool":false}, + {"page":115, "index":127, "class":"Global", "name":"Master Volume", "min":0, "max":127, "default":64, "isPublic":true, "isDiscrete":false, "isBool":false}, + ], + "regions": + [ + { "id":"oscA", "name": "Oscillator 1", + "parameters":[ "Osc1 HyperSaw/Density", "Osc1 Shape", "Osc1 Wavetable/WaveTableIndex", "Osc1 HyperSaw/DetuneSpread", "Osc1 Pulsewidth", "Osc1 Wave Select", "Osc1 Wavetable/WaveTableSelect", "Osc1 Semitone", "Osc1 Keyfollow", "Osc1 Shape Velocity", + "Osc1 Mode", "Osc1 Wavetable/Sync", "Osc1 Wavetable/FormantShift", "Osc1 Wavetable/Internal Detune", "Osc1 Wavetable/Interpolation" + ] + }, + { "id":"oscB", "name": "Oscillator 2", + "parameters":[ "Osc2 HyperSaw/Density", "Osc2 Shape", "Osc2 Wavetable/WaveTableIndex", "Osc2 HyperSaw/DetuneSpread", "Osc2 Pulsewidth", "Osc2 Wave Select", "Osc2 Wavetable/WaveTableSelect","Osc2 Semitone", "Osc2 Detune", "Osc2 HyperSaw/CrossOscSyncFreq", "Osc2 FM Amount", "Osc2 Wavetable/FM Amount", "Osc2 Sync", "Osc2 Filt Env Amt", "Osc2 HyperSaw/FilterEnv > Pitch", "Osc2 Wavetable/FilterEnv > Pitch", "FM Filt Env Amt", "Osc2 Wavetable/FilterEnv > FM", "Osc2 HyperSaw/FilterEnv > SyncFrequency", "Osc2 Keyfollow", "Osc FM Mode", "Osc2 Wavetable/FM Mode WaveTable", "Osc2 Shape Velocity", "Fm Amount Velocity", + "Osc2 Mode", "Osc2 Wavetable/Sync", "Osc2 Wavetable/FormantShift", "Osc2 Wavetable/Interpolation", "Osc2 Wavetable/Internal Detune" + ] + }, + { "id":"oscC", "name": "Oscillator 3", + "parameters":["Osc3 Mode", "Osc3 Volume", "Osc3 Semitone", "Osc3 Detune", "Osc 3/BackupMode"] + }, + { "id":"oscCommon", "name": "Osc Common", + "parameters":["Osc Balance", "Suboscillator Volume", "Suboscillator Shape", "Osc Mainvolume", "Ringmodulator Volume", "Osc Init Phase", "PulseWidth Velocity", "Oscillators/BackupKeyMode", "Oscillators/Select"] + }, + { "id":"noise", "name": "Noise", + "parameters":["Noise Volume", "Noise Color"] + }, + { "id":"filterA", "name": "Filter 1", + "parameters":["Cutoff", "Filter1 Resonance", "Filter1 Env Amt", "Filter1 Keyfollow", "Filter1 Mode", "Filter1 Env Polarity", "Flt1 EnvAmt Velocity", "Resonance1 Velocity"] + }, + { "id":"filterB", "name": "Filter 2", + "parameters":["Cutoff2", "Filter2 Resonance", "Filter2 Env Amt", "Filter2 Keyfollow", "Offset for FilterLink", "Filter2 Mode", "Filter2 Env Polarity", "Filter2 Cutoff Link", "Flt2 EnvAmt Velocity", "Resonance2 Velocity"] + }, + { "id":"filterCommon", "name": "Filters Common", + "parameters":["Filter Balance", "Saturation Curve", "Filter Routing", "Filter Keytrack Base"] + }, + { "id":"envFilter", "name": "Filter Env", + "parameters":["Filter Env Attack", "Filter Env Decay", "Filter Env Sustain", "Filter Env Sustain Time", "Filter Env Release"] + }, + { "id":"envAmp", "name": "Amp Env", + "parameters":["Amp Env Attack", "Amp Env Decay", "Amp Env Sustain", "Amp Env Sustain Time", "Amp Env Release"] + }, + { "id":"env3", "name": "Envelope 3", + "parameters":["Envelope 3/Attack", "Envelope 3/Decay", "Envelope 3/Sustain", "Envelope 3/Sustain Time", "Envelope 3/Release"] + }, + { "id":"env4", "name": "Envelope 4", + "parameters":["Envelope 4/Attack", "Envelope 4/Decay", "Envelope 4/Sustain", "Envelope 4/Sustain Time", "Envelope 4/Release"] + }, + { "id":"lfoA", "name": "LFO 1", + "parameters":["Lfo1 Rate", "Lfo1 Shape", "Lfo1 Env Mode", "Lfo1 Mode", "Lfo1 Symmetry", "Lfo1 Keyfollow", "Lfo1 Keytrigger", "Osc1 Lfo1 Amount", "Osc2 Lfo1 Amount", "PW Lfo1 Amount", "Reso Lfo1 Amount", "FiltGain Lfo1 Amount", "Lfo1 Clock", "LFO1 Assign Dest", "LFO1 Assign Amount", "LFO 1/BackupShape"] + }, + { "id":"lfoB", "name": "LFO 2", + "parameters":["Lfo2 Rate", "Lfo2 Shape", "Lfo2 Env Mode", "Lfo2 Mode", "Lfo2 Symmetry", "Lfo2 Keyfollow", "Lfo2 Keytrigger", "Shape Lfo2 Amount", "FM Lfo2 Amount", "Cutoff1 Lfo2 Amount", "Cutoff2 Lfo2 Amount", "Pan Lfo2 Amount", "Lfo2 Clock", "LFO2 Assign Dest", "LFO2 Assign Amount", "LFO 2/BackupShape"] + }, + { "id":"lfoC", "name": "LFO 3", + "parameters":["Lfo3 Rate", "Lfo3 Shape", "Lfo3 Mode", "Lfo3 Keyfollow", "Lfo3 Destination", "Osc Lfo3 Amount", "Lfo3 Fade-In Time", "Lfo3 Clock", "LFO 3/BackupShape"] + }, + { "id":"amp", "name": "Amp", + "parameters":["Patch Volume", "Amp Velocity", "Panorama Velocity", "Second Output Balance"] + }, + { "id":"common", "name": "Common", + "parameters":["Transpose", "Key Mode", "Control Smooth Mode", "Bender Range Up", "Bender Range Down", "Bender Scale"] + }, + { "id":"unison", "name": "Unison", + "parameters":["Unison Mode", "Unison Detune", "Unison Pan Spread", "Unison Lfo Phase"] + }, + { "id":"chorus", "name": "Chorus", + "parameters":["Chorus/Type", "Chorus/Mix2", "Chorus Mix", "Chorus Rate", "Chorus/Speed", "Chorus/Distance", "Chorus Depth", "Chorus/Amount", "Chorus Delay", "Chorus/Mic Angle", "Chorus Feedback", "Chorus/LowHigh Bal", "Chorus Lfo Shape", "Chorus/X Over"] + }, + { "id":"delay", "name": "Delay", + "parameters":[ "Delay Mode", "Delay Send", "Delay/Tape Delay Time", "Delay Time", "Delay Feedback", "Delay/Tape Delay Feedback", "Dly Rate / Rev Decay", "Dly Depth ", "Delay/Tape Delay Modulation", "Delay Lfo Shape", "Delay Color", "Delay/Tape Delay Center Frequency", "Delay Clock", + "Delay Type", "Delay Tape Delay Ratio", "Delay Tape Delay Left Clock", "Delay Tape Delay Right Clock", "Delay Tape Delay Bandwidth" + ] + }, + { "id":"reverb", "name": "Reverb", + "parameters":["Reverb Mode", "Reverb Send", "Reverb Type", "Reverb Time", "Reverb Damping", "Reverb Color", "Reverb Predelay", "Reverb Clock", "Reverb Feedback"] + }, + { "id":"arp", "name": "Arpeggiator", + "parameters":[ "Arp Mode", "Arp Pattern Selct", "Arp Octave Range", "Arp Hold Enable", "Arp Note Length", "Arp Swing", "Arp Clock", + "Arpeggiator/UserPatternLength", "Arpeggiator/BackupMode", + + "Step 1 Length", "Step 1 Velocity", "Step 1 Bitfield", "Step 2 Length", "Step 2 Velocity", "Step 2 Bitfield", "Step 3 Length", "Step 3 Velocity", "Step 3 Bitfield", "Step 4 Length", "Step 4 Velocity", "Step 4 Bitfield", + "Step 5 Length", "Step 5 Velocity", "Step 5 Bitfield", "Step 6 Length", "Step 6 Velocity", "Step 6 Bitfield", "Step 7 Length", "Step 7 Velocity", "Step 7 Bitfield", "Step 8 Length", "Step 8 Velocity", "Step 8 Bitfield", + "Step 9 Length", "Step 9 Velocity", "Step 9 Bitfield", "Step 10 Length", "Step 10 Velocity", "Step 10 Bitfield", "Step 11 Length", "Step 11 Velocity", "Step 11 Bitfield", "Step 12 Length", "Step 12 Velocity", "Step 12 Bitfield", + "Step 13 Length", "Step 13 Velocity", "Step 13 Bitfield", "Step 14 Length", "Step 14 Velocity", "Step 14 Bitfield", "Step 15 Length", "Step 15 Velocity", "Step 15 Bitfield", "Step 16 Length", "Step 16 Velocity", "Step 16 Bitfield", + "Step 17 Length", "Step 17 Velocity", "Step 17 Bitfield", "Step 18 Length", "Step 18 Velocity", "Step 18 Bitfield", "Step 19 Length", "Step 19 Velocity", "Step 19 Bitfield", "Step 20 Length", "Step 20 Velocity", "Step 20 Bitfield", + "Step 21 Length", "Step 21 Velocity", "Step 21 Bitfield", "Step 22 Length", "Step 22 Velocity", "Step 22 Bitfield", "Step 23 Length", "Step 23 Velocity", "Step 23 Bitfield", "Step 24 Length", "Step 24 Velocity", "Step 24 Bitfield", + "Step 25 Length", "Step 25 Velocity", "Step 25 Bitfield", "Step 26 Length", "Step 26 Velocity", "Step 26 Bitfield", "Step 27 Length", "Step 27 Velocity", "Step 27 Bitfield", "Step 28 Length", "Step 28 Velocity", "Step 28 Bitfield", + "Step 29 Length", "Step 29 Velocity", "Step 29 Bitfield", "Step 30 Length", "Step 30 Velocity", "Step 30 Bitfield", "Step 31 Length", "Step 31 Velocity", "Step 31 Bitfield", "Step 32 Length", "Step 32 Velocity", "Step 32 Bitfield" + ] + }, + { "id":"punch", "name": "Punch Intensity", + "parameters":["Punch Intensity"] + }, + { "id":"input", "name": "Input", + "parameters":["Input Mode", "Input Select", "Input Ringmodulator"] + }, + { "id":"assignA", "name": "Assign 1", + "parameters":[ "Assign1 Source", "Assign1 Destination", "Assign1 Amount", + "Assign 1 Destination 2", "Assign 1 Amount 2", "Assign 1 Destination 3", "Assign 1 Amount 3" + ] + }, + { "id":"assignB", "name": "Assign 2", + "parameters":[ "Assign2 Source", "Assign2 Destination1", "Assign2 Amount1", "Assign2 Destination2", "Assign2 Amount2", + "Assign 2 Destination 3", "Assign 2 Amount 3" + ] + }, + { "id":"assignC", "name": "Assign 3", + "parameters":["Assign3 Source", "Assign3 Destination1", "Assign3 Amount1", "Assign3 Destination2", "Assign3 Amount2", "Assign3 Destination3", "Assign3 Amount3"] + }, + { "id":"assignD", "name": "Assign 4", + "parameters":[ "Assign 4 Source", "Assign 4 Destination", "Assign 4 Amount", + "Assign 4 Destination 2", "Assign 4 Amount 2", "Assign 4 Destination 3", "Assign 4 Amount 3" + ] + }, + { "id":"assignE", "name": "Assign 5", + "parameters":[ "Assign 5 Source", "Assign 5 Destination", "Assign 5 Amount", + "Assign 5 Destination 2", "Assign 5 Amount 2", "Assign 5 Destination 3", "Assign 5 Amount 3"] + }, + { "id":"assignF", "name": "Assign 6", + "parameters":[ "Assign 6 Source", "Assign 6 Destination", "Assign 6 Amount", + "Assign 6 Destination 2", "Assign 6 Amount 2", "Assign 6 Destination 3", "Assign 6 Amount 3" + ] + }, + { "id":"phaser", "name": "Phaser", + "parameters":["Phaser Mode", "Phaser Mix", "Phaser Rate", "Phaser Depth", "Phaser Frequency", "Phaser Feedback", "Phaser Spread"] + }, + { "id":"eq", "name": "Equalizer", + "parameters":["LowEQ Gain", "LowEQ Frequency", "MidEQ Gain", "MidEQ Frequency", "MidEQ Q-Factor", "HighEQ Gain", "HighEQ Frequency"] + }, + { "id":"bassBoost", "name": "Analog Boost", + "parameters":["Bass Intensity", "Bass Tune"] + }, + { "id":"distortion", "name": "Distortion", + "parameters":["Distortion Curve", "Distortion Intensity", "Patch Distortion/Treble Booster", "Patch Distortion/High Cut", "Patch Distortion/Mix", "Patch Distortion/Quality", "Patch Distortion/Tone127", "Patch Distortion/Tone64"] + }, + { "id":"vocoder", "name": "Vocoder", + "parameters":["Vocoder Mode", "Filter Select", "Vocoder/Carrier Center Frequency", "Vocoder/Modulator Center Frequency", "Vocoder/Modulator Frequency Offset", "Vocoder/Carrier Q Factor", "Vocoder/Modulator Q Factor", "Carrier Frequency Spread", "Vocoder/Modulator Frequency Spread", "Vocoder/Balance", "Vocoder/Attack", "Vocoder/Release", "Vocoder/Spectral Balance", "Vocoder/Bands", "Vocoder Link"] + }, + { "id":"inputFollower", "name": "Input Follower", + "parameters":["Input Follower Mode", "Input Follower/Attack", "Input Follower/Level", "Input Follower/Release"] + }, + { "id":"filterBank", "name": "Filter Bank", + "parameters":["Filter Bank/Type", "Filter Bank/Mix", "Filter Bank/Comb Frequency", "Filter Bank/Filter Frequency", "Filter Bank/Frequency", "Filter Bank/Vowel Frequency", "Filter Bank/Stereo Phase", "Filter Bank/Filter Type", "Filter Bank/Poles", "Filter Bank/Shape L", "Filter Bank/Shape R", "Filter Bank/Slope", "Filter Bank/Resonance", "Character Type"] + }, + { "id":"atomizer", "name": "Atomizer", + "parameters":["Atomizer"] + }, + + { "id":"oscs", "name": "Oscillators", + "regions":["oscA", "oscB", "oscC", "oscCommon", "noise"] + }, + { "id":"filters", "name": "Filters", + "regions":["filterA", "filterB", "filterCommon", "envFilter"] + }, + { "id":"lfos", "name": "LFOs", + "regions":["lfoA", "lfoB", "lfoC"], + "parameters":["LFOs/Select"] + }, + { "id":"fx", "name": "Effects", + "regions":["delay", "reverb", "chorus", "phaser", "bassBoost", "distortion", "eq", "punch", "filterBank"], + "parameters":["FX Upper/Select", "FX Lower/Select"] + }, + { "id":"modmatrix", "name": "Modulation Slots", + "regions":["assignA", "assignB", "assignC", "assignD", "assignE", "assignF"], + "parameters":["Assigns/Slot Select"] + } + ], + "valuelists": + { + "unsignedZero": + [ + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127" + ], + "unsignedOne": + [ + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128" + ], + "nagativ": + [ + "0", "-1", "-2", "-3", "-4", "-5", "-6", "-7", "-8", "-9", "-10", "-11", "-12", "-13", "-14", "-15", "-16", "-17", "-18", "-19", "-20", "-21", "-22", "-23", "-24", "-25", "-26", "-27", "-28", "-29", "-30", "-31", "-32", "-33", "-34", "-35", "-36", "-37", "-38", "-39", "-40", "-41", "-42", "-43", "-44", "-45", "-46", "-47", "-48", "-49", "-50", "-51", "-52", "-53", "-54", "-55", "-56", "-57", "-58", "-59", "-60", "-61", "-62", "-63", "-64", "-65", "-66", "-67", "-68", "-69", "-70", "-71", "-72", "-73", "-74", "-75", "-76", "-77", "-78", "-79", "-80", "-81", "-82", "-83", "-84", "-85", "-86", "-87", "-88", "-89", "-90", "-91", "-92", "-93", "-94", "-95", "-96", "-97", "-98", "-99", "-100", "-101", "-102", "-103", "-104", "-105", "-106", "-107", "-108", "-109", "-110", "-111", "-112", "-113", "-114", "-115", "-116", "-117", "-118", "-119", "-120", "-121", "-122", "-123", "-124", "-125", "-126", "-127" + ], + "unsignedOff": + [ + "Off", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127" + ], + "signed": + [ + "-64", "-63", "-62", "-61", "-60", " -59", "-58", "-57", "-56", "-55", "-54", "-53", "-52", "-51", "-50", "-49", "-48", "-47", "-46", "-45", "-44", "-43", "-42", "-41", "-40", "-39", "-38", "-37", "-36", "-35", "-34", "-33", "-32", "-31", "-30", "-29", "-28", "-27", "-26", "-25", "-24", "-23", "-22", "-21", "-20", "-19", "-18", "-17", "-16", "-15", "-14", "-13", "-12", "-11", "-10", "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1", "0", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+10", "+11", "+12", "+13", "+14", "+15", "+16", "+17", "+18", "+19", "+20", "+21", "+22", "+23", "+24", "+25", "+26", "+27", "+28", "+29", "+30", "+31", "+32", "+33", "+34", "+35", "+36", "+37", "+38", "+39", "+40", "+41", "+42", "+43", "+44", "+45", "+46", "+47", "+48", "+49", "+50", "+51", "+52", "+53", "+54", "+55", "+56", "+57", "+58", "+59", "+60", "+61", "+62", "+63" + ], + "signedMidOff": + [ + "-64", "-63", "-62", "-61", "-60", " -59", "-58", "-57", "-56", "-55", "-54", "-53", "-52", "-51", "-50", "-49", "-48", "-47", "-46", "-45", "-44", "-43", "-42", "-41", "-40", "-39", "-38", "-37", "-36", "-35", "-34", "-33", "-32", "-31", "-30", "-29", "-28", "-27", "-26", "-25", "-24", "-23", "-22", "-21", "-20", "-19", "-18", "-17", "-16", "-15", "-14", "-13", "-12", "-11", "-10", "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1", "Off", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+10", "+11", "+12", "+13", "+14", "+15", "+16", "+17", "+18", "+19", "+20", "+21", "+22", "+23", "+24", "+25", "+26", "+27", "+28", "+29", "+30", "+31", "+32", "+33", "+34", "+35", "+36", "+37", "+38", "+39", "+40", "+41", "+42", "+43", "+44", "+45", "+46", "+47", "+48", "+49", "+50", "+51", "+52", "+53", "+54", "+55", "+56", "+57", "+58", "+59", "+60", "+61", "+62", "+63" + ], + "pan": + [ + "-64", "-63", "-62", "-61", "-60", "-59", "-58", "-57", "-56", "-55", "-54", "-53", "-52", "-51", "-50", "-49", "-48", "-47", "-46", "-45", "-44", "-43", "-42", "-41", "-40", "-39", "-38", "-37", "-36", "-35", "-34", "-33", "-32", "-31", "-30", "-29", "-28", "-27", "-26", "-25", "-24", "-23", "-22", "-21", "-20", "-19", "-18", "-17", "-16", "-15", "-14", "-13", "-12", "-11", "-10", "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1", "<0>", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+10", "+11", "+12", "+13", "+14", "+15", "+16", "+17", "+18", "+19", "+20", "+21", "+22", "+23", "+24", "+25", "+26", "+27", "+28", "+29", "+30", "+31", "+32", "+33", "+34", "+35", "+36", "+37", "+38", "+39", "+40", "+41", "+42", "+43", "+44", "+45", "+46", "+47", "+48", "+49", "+50", "+51", "+52", "+53", "+54", "+55", "+56", "+57", "+58", "+59", "+60", "+61", "+62", "+63" + ], + "panPercent": + [ + "L< 100.0 %", "L< 98.4 %", "L< 96.9 %", "L< 95.3 %", "L< 93.8 %", "L< 92.2 %", "L< 90.6 %", "L< 89.1 %", "L< 87.5 %", "L< 85.9 %", "L< 84.4 %", "L< 82.8 %", "L< 81.3 %", "L< 79.7 %", "L< 78.1 %", "L< 76.6 %", "L< 75.0 %", "L< 73.4 %", "L< 71.9 %", "L< 70.3 %", "L< 68.8 %", "L< 67.2 %", "L< 65.6 %", "L< 64.1 %", "L< 62.5 %", "L< 60.9 %", "L< 59.4 %", "L< 57.8 %", "L< 56.3 %", "L< 54.7 %", "L< 53.1 %", "L< 51.6 %", "L< 50.0 %", "L< 48.4 %", "L< 46.9 %", "L< 45.3 %", "L< 43.8 %", "L< 42.2 %", "L< 40.6 %", "L< 39.0 %", "L< 37.5 %", "L< 35.9 %", "L< 34.4 %", "L< 32.8 %", "L< 31.3 %", "L< 29.7 %", "L< 28.1 %", "L< 26.6 %", "L< 25.0 %", "L< 23.4 %", "L< 21.9 %", "L< 20.3 %", "L< 18.8 %", "L< 17.2 %", "L< 15.6 %", "L< 14.1 %", "L< 12.5 %", "L< 10.9 %", "L< 9.4 %", "L< 7.8 %", "L< 6.3 %", "L< 4.7 %", "L< 3.1 %", "L< 1.6 %", "< 0 ", "1.6 % >R", "3.1 % >R", "4.7 % >R", "6.3 % >R", "7.8 % >R", "9.4 % >R", "10.9 % >R", "12.5 % >R", "14.1 % >R", "15.6 % >R", "17.2 % >R", "18.8 % >R", "20.3 % >R", "21.9 % >R", "23.4 % >R", "25.0 % >R", "26.6 % >R", "28.1 % >R", "29.7 % >R", "31.3 % >R", "32.8 % >R", "34.4 % >R", "35.9 % >R", "37.5 % >R", "39.0 % >R", "40.6 % >R", "42.2 % >R", "43.8 % >R", "45.3 % >R", "46.9 % >R", "48.4 % >R", "50.0 % >R", "51.6 % >R", "53.1 % >R", "54.7 % >R", "56.3 % >R", "57.8 % >R", "59.4 % >R", "60.9 % >R", "62.5 % >R", "64.1 % >R", "65.6 % >R", "67.2 % >R", "68.8 % >R", "70.3 % >R", "71.9 % >R", "73.4 % >R", "75.0 % >R", "76.6 % >R", "78.1 % >R", "79.7 % >R", "81.3 % >R", "82.8 % >R", "84.4 % >R", "85.9 % >R", "87.5 % >R", "89.1 % >R", "90.6 % >R", "92.2 % >R", "93.8 % >R", "95.3 % >R", "96.9 % >R", "100.0 % >R" + ], + "version": + [ + "A", "A", "A", "A", "A", "B", "C", "TI", "TI", "TI", "TI", "TI", "TI2" + ], + "bank": + [ + "Edit", "RAM A", "RAM B", "ROM C", "ROM D", "ROM E", "ROM F", "ROM G", "ROM H" + ], + "oscShape": + [ + "Spectral Wave", "Wave>Saw 1 %", "Wave>Saw 2 % ", "Wave>Saw 3 % ", "Wave>Saw 5 % ", "Wave>Saw 6 % ", "Wave>Saw 8 % ", "Wave>Saw 10 %", "Wave>Saw 11 %", "Wave>Saw 13 %", "Wave>Saw 14 %", "Wave>Saw 16 %", "Wave>Saw 17 %", "Wave>Saw 19 %", "Wave>Saw 21 %", "Wave>Saw 22 %", "Wave>Saw 24 %", "Wave>Saw 25 %", "Wave>Saw 27 %", "Wave>Saw 29 %", "Wave>Saw 30 %", "Wave>Saw 32 %", "Wave>Saw 33 %", "Wave>Saw 35 %", "Wave>Saw 37 %", "Wave>Saw 38 %", "Wave>Saw 40 %", "Wave>Saw 41 %", "Wave>Saw 43 %", "Wave>Saw 44 %", "Wave>Saw 46 %", "Wave>Saw 48 %", "Wave>Saw 49 %", "Wave>Saw 51 %", "Wave>Saw 52 %", "Wave>Saw 54 %", "Wave>Saw 56 %", "Wave>Saw 57 %", "Wave>Saw 59 %", "Wave>Saw 60 %", "Wave>Saw 62 %", "Wave>Saw 63 %", "Wave>Saw 65 %", "Wave>Saw 67 %", "Wave>Saw 68 %", "Wave>Saw 70 %", "Wave>Saw 71 %", "Wave>Saw 73 %", "Wave>Saw 75 %", "Wave>Saw 76 %", "Wave>Saw 78 %", "Wave>Saw 79 %", "Wave>Saw 81 %", "Wave>Saw 83 %", "Wave>Saw 84 %", "Wave>Saw 86 %", "Wave>Saw 87 %", "Wave>Saw 89 %", "Wave>Saw 90 %", "Wave>Saw 92 %", "Wave>Saw 94 %", "Wave>Saw 95 %", "Wave>Saw 97 %", "Wave>Saw 98 %", "Sawtooth", "Saw>Pulse 2 % ", "Saw>Pulse 3 % ", "Saw>Pulse 5 % ", "Saw>Pulse 6 % ", "Saw>Pulse 8 % ", "Saw>Pulse 10 %", "Saw>Pulse 11 %", "Saw>Pulse 13 %", "Saw>Pulse 14 %", "Saw>Pulse 16 %", "Saw>Pulse 17 %", "Saw>Pulse 19 %", "Saw>Pulse 21 %", "Saw>Pulse 22 %", "Saw>Pulse 24 %", "Saw>Pulse 25 %", "Saw>Pulse 27 %", "Saw>Pulse 29 %", "Saw>Pulse 30 %", "Saw>Pulse 32 %", "Saw>Pulse 33 %", "Saw>Pulse 35 %", "Saw>Pulse 37 %", "Saw>Pulse 38 %", "Saw>Pulse 40 %", "Saw>Pulse 41 %", "Saw>Pulse 43 %", "Saw>Pulse 44 %", "Saw>Pulse 46 %", "Saw>Pulse 48 %", "Saw>Pulse 49 %", "Saw>Pulse 51 %", "Saw>Pulse 52 %", "Saw>Pulse 54 %", "Saw>Pulse 56 %", "Saw>Pulse 57 %", "Saw>Pulse 59 %", "Saw>Pulse 60 %", "Saw>Pulse 62 %", "Saw>Pulse 63 %", "Saw>Pulse 65 %", "Saw>Pulse 67 %", "Saw>Pulse 68 %", "Saw>Pulse 70 %", "Saw>Pulse 71 %", "Saw>Pulse 73 %", "Saw>Pulse 75 %", "Saw>Pulse 76 %", "Saw>Pulse 78 %", "Saw>Pulse 79 %", "Saw>Pulse 81 %", "Saw>Pulse 83 %", "Saw>Pulse 84 %", "Saw>Pulse 86 %", "Saw>Pulse 87 %", "Saw>Pulse 89 %", "Saw>Pulse 90 %", "Saw>Pulse 92 %", "Saw>Pulse 94 %", "Saw>Pulse 95 %", "Saw>Pulse 97 %", "Saw>Pulse 98 %", "Pulse" + ], + "suboscShape": + [ + "Square", "Triangle" + ], + "oscWave": + [ + "Sine", "Triangle", "Wave 3", "Wave 4", "Wave 5", "Wave 6", "Wave 7", "Wave 8", "Wave 9", "Wave 10", "Wave 11", "Wave 12", "Wave 13", "Wave 14", "Wave 15", "Wave 16", "Wave 17", "Wave 18", "Wave 19", "Wave 20", "Wave 21", "Wave 22", "Wave 23", "Wave 24", "Wave 25", "Wave 26", "Wave 27", "Wave 28", "Wave 29", "Wave 30", "Wave 31", "Wave 32", "Wave 33", "Wave 34", "Wave 35", "Wave 36", "Wave 37", "Wave 38", "Wave 39", "Wave 40", "Wave 41", "Wave 42", "Wave 43", "Wave 44", "Wave 45", "Wave 46", "Wave 47", "Wave 48", "Wave 49", "Wave 50", "Wave 51", "Wave 52", "Wave 53", "Wave 54", "Wave 55", "Wave 56", "Wave 57", "Wave 58", "Wave 59", "Wave 60", "Wave 61", "Wave 62", "Wave 63", "Wave 64", "Wave 65", "Wave 66", "Wave 67", "Wave 68", "Wave 69", "Wave 70", "Wave 71", "Wave 72", "Wave 73", "Wave 74", "Wave 75", "Wave 76", "Wave 77", "Wave 78", "Wave 79", "Wave 80", "Wave 81", "Wave 82", "Wave 83", "Wave 84", "Wave 85", "Wave 86", "Wave 87", "Wave 88", "Wave 89", "Wave 90", "Wave 91", "Wave 92", "Wave 93", "Wave 94", "Wave 95", "Wave 96", "Wave 97", "Wave 98", "Wave 99", "Wave 100", "Wave 101", "Wave 102", "Wave 103", "Wave 104", "Wave 105", "Wave 106", "Wave 107", "Wave 108", "Wave 109", "Wave 110", "Wave 111", "Wave 112", "Wave 113", "Wave 114", "Wave 115", "Wave 116", "Wave 117", "Wave 118", "Wave 119", "Wave 120", "Wave 121", "Wave 122", "Wave 123", "Wave 124", "Wave 125", "Wave 126", "Wave 127", "Wave 128" + ], + "satCurve": + [ + "Off", "Light", "Soft", "Middle", "Hard", "Digital", "Wave Shaper", "Rectifier", "Bit Reducer", "Rate Reducer", "Rate+Follow", "Low Pass", "Low+Follow", "High Pass", "High+Follow" + ], + "filter1Mode": + [ + "Low Pass", "High Pass", "Band Pass", "Band Stop", "Analog 1 Pole", "Analog 2 Pole", "Analog 3 Pole", "Analog 4 Pole" + ], + "filter2Mode": + [ + "Low Pass", "High Pass", "Band Pass", "Band Stop" + ], + "filterRouting": + [ + "Serial 4", "Serial 6", "Parallel 4", "Split Mode" + ], + "envSustainTime": + [ + "Infinite", "-63", "-62", "-61", "-60", "-59", "-58", "-57", "-56", "-55", "-54", "-53", "-52", "-51", "-50", "-49", "-48", "-47", "-46", "-45", "-44", "-43", "-42", "-41", "-40", "-39", "-38", "-37", "-36", "-35", "-34", "-33", "-32", "-31", "-30", "-29", "-28", "-27", "-26", "-25", "-24", "-23", "-22", "-21", "-20", "-19", "-18", "-17", "-16", "-15", "-14", "-13", "-12", "-11", "-10", "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1", "Fall", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+10", "+11", "+12", "+13", "+14", "+15", "+16", "+17", "+18", "+19", "+20", "+21", "+22", "+23", "+24", "+25", "+26", "+27", "+28", "+29", "+30", "+31", "+32", "+33", "+34", "+35", "+36", "+37", "+38", "+39", "+40", "+41", "+42", "+43", "+44", "+45", "+46", "+47", "+48", "+49", "+50", "+51", "+52", "+53", "+54", "+55", "+56", "+57", "+58", "+59", "+60", "+61", "+62", "Rise" + ], + "lfoShape": + [ + "Sine", "Triangle", "Saw", "Square", "S&H", "S&G", "Wave 3", "Wave 4", "Wave 5", "Wave 6", "Wave 7", "Wave 8", "Wave 9", "Wave 10", "Wave 11", "Wave 12", "Wave 13", "Wave 14", "Wave 15", "Wave 16", "Wave 17", "Wave 18", "Wave 19", "Wave 20", "Wave 21", "Wave 22", "Wave 23", "Wave 24", "Wave 25", "Wave 26", "Wave 27", "Wave 28", "Wave 29", "Wave 30", "Wave 31", "Wave 32", "Wave 33", "Wave 34", "Wave 35", "Wave 36", "Wave 37", "Wave 38", "Wave 39", "Wave 40", "Wave 41", "Wave 42", "Wave 43", "Wave 44", "Wave 45", "Wave 46", "Wave 47", "Wave 48", "Wave 49", "Wave 50", "Wave 51", "Wave 52", "Wave 53", "Wave 54", "Wave 55", "Wave 56", "Wave 57", "Wave 58", "Wave 59", "Wave 60", "Wave 61", "Wave 62", "Wave 63", "Wave 64" + ], + "osc3Mode": + [ + "Off", "Slave", "Saw", "Pulse", "Sine", "Triangle", "Wave 3", "Wave 4", "Wave 5", "Wave 6", "Wave 7", "Wave 8", "Wave 9", "Wave 10", "Wave 11", "Wave 12", "Wave 13", "Wave 14", "Wave 15", "Wave 16", "Wave 17", "Wave 18", "Wave 19", "Wave 20", "Wave 21", "Wave 22", "Wave 23", "Wave 24", "Wave 25", "Wave 26", "Wave 27", "Wave 28", "Wave 29", "Wave 30", "Wave 31", "Wave 32", "Wave 33", "Wave 34", "Wave 35", "Wave 36", "Wave 37", "Wave 38", "Wave 39", "Wave 40", "Wave 41", "Wave 42", "Wave 43", "Wave 44", "Wave 45", "Wave 46", "Wave 47", "Wave 48", "Wave 49", "Wave 50", "Wave 51", "Wave 52", "Wave 53", "Wave 54", "Wave 55", "Wave 56", "Wave 57", "Wave 58", "Wave 59", "Wave 60", "Wave 61", "Wave 62", "Wave 63", "Wave 64" + ], + "lfoMode": + [ + "Poly", "Mono" + ], + "keyMode": + [ + "Poly", "Mono 1", "Mono 2", "Mono 3", "Mono 4", "Hold" + ], + "inputMode": + [ + "Off", "Dynamic", "Static", "To Effects" + ], + "inputSelect": + [ + "IN L", "IN L+R", "IN R", "AUX 1 L", "AUX 1 L+R", "AUX 1 R", "AUX 2 L", "AUX 2 L+R", "AUX 2 R" + ], + "outputSelect": + [ + "OUT 1 L", "OUT 1 L+R", "OUT 1 R", "OUT 2 L", "OUT 2 L+R", "OUT 2 R", "OUT 3 L", "OUT 3 L+R", "OUT 3 R", "AUX 1 L", "AUX 1 L+R", "AUX 1 R", "AUX 2 L", "AUX 2 L+R", "AUX 2 R" + ], + "delayMode": + [ + "Off", "Simple Delay", "Ping Pong 2:1", "Ping Pong 4:3", "Ping Pong 4:1", "Ping Pong 8:7", "Pattern 1+1", "Pattern 2+1", "Pattern 3+1", "Pattern 4+1", "Pattern 5+1", "Pattern 2+3", "Pattern 2+5", "Pattern 3+2", "Pattern 3+3", "Pattern 3+4", "Pattern 3+5", "Pattern 4+3", "Pattern 4+5", "Pattern 5+2", "Pattern 5+3", "Pattern 5+4", "Pattern 5+5" + ], + "send": + [ + "Off", "-46.2dB", "-40.2dB", "-36.6dB", "-34.1dB", "-32.2dB", "-30.6dB", "-29.3dB", "-28.1dB", "-27.1dB", "-26.2dB", "-25.4dB", "-24.6dB", "-23.9dB", "-23.3dB", "-22.7dB", "-22.1dB", "-21.6dB", "-21.1dB", "-20.6dB", "-20.6dB", "-19.7dB", "-19.3dB", "-18.9dB", "-18.6dB", "-18.2dB", "-17.9dB", "-17.6dB", "-17.2dB", "-16.9dB", "-16.6dB", "-16.4dB", "-16.1dB", "-15.8dB", "-15.6dB", "-15.3dB", "-15.0dB", "-14.75dB", "-14.5dB", "-14.25dB", "-14.0dB", "-13.75dB", "-13.5dB", "-13.25dB", "-13.0dB", "-12.75dB", "-12.5dB", "-12.25dB", "-12.0dB", "-11.75dB", "-11.5dB", "-11.25dB", "-11.0dB", "-10.75dB", "-10.5dB", "-10.25dB", "-10.0dB", "-9.75dB", "-9.5dB", "-9.25dB", "-9.0dB", "-8.75dB", "-8.5dB", "-8.25dB", "-8.0dB", "-7.75dB", "-7.5dB", "-7.25dB", "-7.0dB", "-6.75dB", "-6.5dB", "-6.25dB", "-6.0dB", "-5.75dB", "-5.5dB", "-5.25dB", "-5.0dB", "-4.75dB", "-4.5dB", "-4.25dB", "-4.0dB", "-3.75dB", "-3.5dB", "-3.25dB", "-3.0dB", "-2.75dB", "-2.5dB", "-2.25dB", "-2.0dB", "-1.75dB", "-1.5dB", "-1.25dB", "-1.0dB", "-0.75dB", "-0.5dB", "-0.25dB", "0/0dB", "0/-0.3dB", "0/-0.6dB", "0/-0.9dB", "0/-1.2dB", "0/-1.5dB", "0/-1.8dB", "0/-2.1dB", "0/-2.5dB", "0/-2.9dB", "0/-3.3dB", "0/-3.7dB", "0/-4.1dB", "0/-4.5dB", "0/-5.0dB", "0/-5.5dB", "0/-6.0dB", "0/-6.6dB", "0/-7.2dB", "0/-7.8dB", "0/-8.5dB", "0/-9.3dB", "0/-10.1dB", "0/-11.0dB", "0/-12.0dB", "0/-13.2dB", "0/-14.5dB", "0/-16.1dB", "0/-18.1dB", "0/-20.6dB", "0/-24.0dB", "Effect" + ], + "delayTime": + [ + "0.0 ms", "5.5 ms", "10.1 ms", "16.4 ms", "21.8 ms", "27.3 ms", "32.8 ms", "38.2 ms", "43.7 ms", "49.2 ms", "54.6 ms", "60.1 ms", "65.5 ms", "71.0 ms", "76.5 ms", "81.9 ms", "87.4 ms", "92.8 ms", "98.3 ms", "103.8 ms", "109.2 ms", "114.7 ms", "120.1 ms", "125.6 ms", "131.1 ms", "136.5 ms", "142.0 ms", "147.5 ms", "152.9 ms", "158.4 ms", "163.8 ms", "169.3 ms", "174.8 ms", "180.2 ms", "185.7 ms", "191.1 ms", "196.6 ms", "202.1 ms", "207.5 ms", "213.0 ms", "218.5 ms", "223.9 ms", "229.4 ms", "234.8 ms", "240.3 ms", "245.8 ms", "251.2 ms", "256.7 ms", "262.1 ms", "267.6 ms", "273.1 ms", "278.5 ms", "284.0 ms", "289.5 ms", "295.0 ms", "300.4 ms", "305.8 ms", "311.3 ms", "316.8 ms", "322.2 ms", "327.7 ms", "333.1 ms", "338.6 ms", "344.1 ms", "349.5 ms", "355.0 ms", "360.4 ms", "365.9 ms", "371.4 ms", "376.8 ms", "382.3 ms", "387.8 ms", "393.2 ms", "398.7 ms", "404.1 ms", "409.6 ms", "415.1 ms", "420.2 ms", "426.0 ms", "431.4 ms", "436.9 ms", "442.4 ms", "447.8 ms", "453.3 ms", "458.8 ms", "464.2 ms", "469.7 ms", "475.1 ms", "480.6 ms", "486.1 ms", "491.5 ms", "497.0 ms", "502.4 ms", "507.9 ms", "513.4 ms", "518.8 ms", "524.3 ms", "529.7 ms", "535.2 ms", "540.7 ms", "546.1 ms", "551.6 ms", "557.1 ms", "562.5 ms", "568.0 ms", "573.4 ms", "578.9 ms", "584.4 ms", "589.8 ms", "595.3 ms", "600.7 ms", "606.2 ms", "611.7 ms", "617.1 ms", "622.6 ms", "628.1 ms", "633.5 ms", "639.0 ms", "644.4 ms", "650.0 ms", "655.4 ms", "660.8 ms", "666,3 ms", "671.7 ms", "677.2 ms", "682.7 ms", "688.1 ms", "693.6 ms" + ], + "delayLfoShape": + [ + "Sine", "Triangle", "Saw", "Square", "S&H", "S&G" + ], + "lfoDest": + [ + "Osc 1 Pitch", "Osc 1+2 Pitch", "Osc 2 Pitch", "Osc 1 Pulse Width", "Osc 1+2 Pulse Width", "Osc 2 Pulse Width", "Sync Phase" + ], + "bpm": + [ + "63 bpm", "64 bpm", "65 bpm", "66 bpm", "67 bpm", "68 bpm", "69 bpm", "70 bpm", "71 bpm", "72 bpm", "73 bpm", "74 bpm", "75 bpm", "76 bpm", "77 bpm", "78 bpm", "79 bpm", "80 bpm", "81 bpm", "82 bpm", "83 bpm", "84 bpm", "85 bpm", "86 bpm", "87 bpm", "88 bpm", "89 bpm", "90 bpm", "91 bpm", "92 bpm", "93 bpm", "94 bpm", "95 bpm", "96 bpm", "97 bpm", "98 bpm", "99 bpm", "100 bpm", "101 bpm", "102 bpm", "103 bpm", "104 bpm", "105 bpm", "106 bpm", "107 bpm", "108 bpm", "109 bpm", "110 bpm", "111 bpm", "112 bpm", "113 bpm", "114 bpm", "115 bpm", "116 bpm", "117 bpm", "118 bpm", "119 bpm", "120 bpm", "121 bpm", "122 bpm", "123 bpm", "124 bpm", "125 bpm", "126 bpm", "127 bpm", "128 bpm", "129 bpm", "130 bpm", "131 bpm", "132 bpm", "133 bpm", "134 bpm", "135 bpm", "136 bpm", "137 bpm", "138 bpm", "139 bpm", "140 bpm", "141 bpm", "142 bpm", "143 bpm", "144 bpm", "145 bpm", "146 bpm", "147 bpm", "148 bpm", "149 bpm", "150 bpm", "151 bpm", "152 bpm", "153 bpm", "154 bpm", "155 bpm", "156 bpm", "157 bpm", "158 bpm", "159 bpm", "160 bpm", "161 bpm", "162 bpm", "163 bpm", "164 bpm", "165 bpm", "166 bpm", "167 bpm", "168 bpm", "169 bpm", "170 bpm", "171 bpm", "172 bpm", "173 bpm", "174 bpm", "175 bpm", "176 bpm", "177 bpm", "178 bpm", "179 bpm", "180 bpm", "181 bpm", "182 bpm", "183 bpm", "184 bpm", "185 bpm", "186 bpm", "187 bpm", "188 bpm", "189 bpm", "190 bpm" + ], + "arpSwing": + [ + "Off", "50.2%", "50.4%", "50.6%", "50.8%", "51.0%", "51.2%", "51.4%", "51.6%", "51.8%", "52.0%", "52.2%", "52.4%", "52.6%", "52.8%", "53.0%", "53.1%", "53.3%", "53.5%", "53.7%", "53.9%", "16B", "54.3%", "54.5%", "54.7%", "54.9%", "55.1%", "55.3%", "55.5%", "55.7%", "55.9%", "56.1%", "56.3%", "56.5%", "56.7%", "56.9%", "57.1%", "57.3%", "57.5%", "57.7%", "57.9%", "16C", "58.3%", "58.5%", "58.7%", "58.9%", "59.1%", "59.3%", "59.4%", "59.6%", "59.8%", "60.0%", "60.2%", "60.4%", "60.6%", "60.8%", "61.0%", "61.2%", "61.4%", "61.6%", "61.8%", "62.0%", "62.2%", "62.4%", "62.6%", "62.8%", "16D", "63.2%", "63.4%", "63.6%", "63.8%", "64.0%", "64.2%", "64.4%", "64.6%", "64.8%", "65.0%", "65.2%", "65.4%", "65.6%", "65.7%", "65.9%", "66.1%", "66.3%", "66.5%", "66.7%", "66.9%", "16E", "67.3%", "67.5%", "67.7%", "67.9%", "68.1%", "68.3%", "68.5%", "68.7%", "68.9%", "69.1%", "69.3%", "69.5%", "69.7%", "69.9%", "70.1%", "70.3%", "70.5%", "70.7%", "70.9%", "16F", "71.3%", "71.5%", "71.7%", "71.9%", "72.0%", "72.2%", "72.4%", "72.6%", "72.8%", "73.0%", "73.2%", "73.4%", "73.6%", "73.8%", "74.0%", "74.2%", "74.4%", "74.6%", "74.8%", "75.0%" + ], + "controlSmoothMode": + [ + "Off", "On", "Auto", "Note", "Quantise 1/64", "Quantise 1/32", "Quantise 1/16", "Quantise 1/8", "Quantise 1/4", "Quantise 1/2", "Quantise 3/64", "Quantise 3/32", "Quantise 3/16", "Quantise 3/8", "Quantise 1/24", "Quantise 1/12", "Quantise 1/6", "Quantise 1/3", "Quantise 2/3", "Quantise 3/4", "Quantise 1/1" + ], + "negPos": + [ + "Negative", "Positive" + ], + "linExp": + [ + "Linear", "Exponential" + ], + "modmatrixSource": + [ + "> Off", "> Pitch Bend", "> Chan Pressure", "> Mod Wheel", "> Breath", "> Controller 3", "> Foot Pedal", "> Data Entry", "> Balance", "> Controller 9", "> Expression", "> Controller 12", "> Controller 13", "> Controller 14", "> Controller 15", "> Controller 16", "> Hold Pedal", "> Portamento Sw", "> Sost Pedal", "> Amp Envelope", "> Filter Envelope", "> LFO 1 bipolar", "> LFO 2 bipolar", "> LFO 3 bipolar", "> Velocity On", "> Velocity Off", "> Key Follow", "> Random", "> Arp Input", "> LFO 1 unipolar", "> LFO 2 unipolar", "> LFO 3 unipolar", "> 1% constant", "> 10% constant", "> AnaKey1 Fine", "> AnaKey2 Fine", "> AnaKey1Coarse", "> AnaKey2Coarse", "> Envelope 3", "> Envelope 4" + ], + "modmatrixDest": + [ + "Off", "Patch Volume", "Osc 1 Interpolation", "Panorama", "Transpose", "Portamento", "Osc 1 Shape/Index", "Osc 1 Pulse Width", "Osc 1 Wave Select", "Osc 1 Pitch", "Slot 6 Amount 3", "Osc 2 Shape/Index", "Osc 2 Pulse Width", "Osc 2 Wave Select", "Osc 2 Pitch", "Osc 2 Detune", "Osc 2 FM Amount", "FiltEnv > Osc 2 Pitch", "FiltEnv>FM/Sync", "Osc 2 Interpolation", "Osc Balance", "Sub Osc Volume", "Osc Volume", "Noise Volume", "Filter 1 Cutoff", "Filter 2 Cutoff", "Filter 1 Resonance", "Filter 2 Resonance", "Filter 1 Env Amount", "Filter 2 Env Amount", "Slot 5 Amount 2", "Slot 5 Amount 3", "Filter Balance", "Filter Env Attack", "Filter Env Decay", "Filter Env Sustain", "Filter Env Slope", "Filter Env Release", "Amp Env Attack", "Amp Env Decay", "Amp Env Sustain", "Amp Env Slope", "Amp Env Release", "LFO 1 Rate", "LFO 1 Contour", "LFO 1>Osc 1 Pitch", "LFO 1>Osc 2 Pitch", "LFO 1>Pulse Width", "LFO 1>Resonance", "LFO 1>Filter Gain", "LFO 2 Rate", "LFO 2 Contour", "LFO >Shape", "LFO >FM Amount", "LFO >Cutoff 1", "LFO >Cutoff 2", "LFO >Panorama", "LFO 3 Rate", "LFO 3 Assign Amt", "Unison Detune", "Pan Spread", "Unison LFO Phase", "Chorus Mix", "Chorus Mod Rate", "Chorus Mod Depth", "Chorus Delay", "Chorus Feedback", "Delay Send", "Delay Time", "Delay Feedback", "Delay Mod Rate", "Delay Mod Depth", "Reverb Send", "Osc 1 Wavetable Index", "Osc 2 Wavetable Index", "Slot 6 Amount 2", "Slot 4 Amount 2", "Slot 4 Amount 3", "Filterbank Reso", "Filterbank Poles", "Slot 2 Amount 3", "Filterbank Slope", "Slot 1 Amount 1", "Slot 2 Amount 1", "Slot 2 Amount 2", "Slot 3 Amount 1", "Slot 3 Amount 2", "Slot 3 Amount 3", "(88)", "Punch Intensity", "Ring Modulator", "Noise Color", "Delay Coloration", "Slot 1 Amount 2", "Slot 1 Amount 3", "Distortion Intensity", "Filterbank Freq", "Osc 3 Volume", "Osc 3 Pitch", "Osc 3 Detune", "LFO 1 Assign Amt", "LFO 2 Assign Amt", "Phaser Mix", "Phaser Mod Rate", "Phaser Mod Depth", "Phaser Frequency", "Phaser Feedback", "(107)", "Reverb Time", "Reverb Damping", "Reverb Color", "Reverb PreDelay", "(112)", "Surround Balance", "Arp Note Length", "Arp Swing Factor", "Arp Pattern", "EQ Mid Gain", "EQ Mid Frequency", "(119)", "Slot 4 Amount 1", "Slot 5 Amount 1", "Slot 6 Amount 1", "Osc 1 F-Shift", "Osc 2 F-Shift", "Osc 1 F-Spread", "Osc 2 F-Spread", "Distortion Mix" + ], + "softknobDest": + [ + "Off", "Modulation Wheel", "Breath", "Control 03", "Foot Pedal", "Data Entry", "Balance", "Control 09", "Expression", "Control 12", "Control 13", "Control 14", "Control 15", "Control 16", "Patch Volume", "Channel Volume", "Panorama", "Transpose", "Portamento", "Unison Detune", "Unison Spread", "Unison LFO Phase", "Chorus Mix", "Chorus Rate", "Chorus Depth", "Chorus Delay", "Chorus Feedback", "Effect Send (Delay)", "DelayTime", "Delay Feedback", "Delay Rate", "Delay Depth", "Osc 1 Wave Select", "Osc 1 Pulse Width", "Osc 1 Pitch", "Osc 1 Key Follow", "Osc 2 Wave Select", "Osc 2 Pulse Width", "FiltEnv > Osc 2 Pitch", "FiltEnv > FM Amount", "Osc 2 Key Follow", "Noise Volume", "Filter 1 Resonance", "Filter 2 Resonance", "Filter 1 Env Amount", "Filter 2 Env Amount", "Filter 1 Key Follow", "Filter 2 Key Follow", "LFO 1 Contour", "LFO 1 > Osc 1", "LFO 1 > Osc 2", "LFO 1 > Pulse Width", "LFO 1 > Resonance", "LFO 1 > Filter Gain", "LFO 2 Contour", "LFO 2 > Shape", "LFO 2 > Fm Amount", "LFO 2 > Cutoff 1", "LFO 2 > Cutoff 2", "LFO 2 > Panorama", "LFO 3 Rate", "LFO 3 > Assign Amt", "Bend Up", "Bend Down", "Aftertouch", "Velo > FM Amount", "Velo > Filt 1 Env Amt", "Velo > Filt 2 Env Amt", "Velo > Resonance 1", "Velo > Resonance 2", "Velo > Volume", "Velo > Panorama", "Assign 1 Amount 1", "Assign 2 Amount 1", "Assign 2 Amount 2", "Assign 3 Amount 1", "Assign 3 Amount 2", "Assign 3 Amount 3", "ClockTempo", "InputThru", "Osc Initial Phase", "Punch Intensity", "Ring Modulator", "Noise Color", "Delay Coloration", "Analog Boost Int", "Analog Boost Tune", "Distortion Intensity", "Filterbank Frequency", "Osc 3 Volume", "Osc 3 Pitch", "Osc 3 Detune", "LFO 1 > Assign Amt", "LFO 2 > Assign Amt", "Phaser Mix", "Phaser Rate", "Phaser Depth", "Phaser Frequency", "Phaser Feedback", "Phaser Spread", "Reverb Decay", "Reverb Damping", "Reverb Coloration", "Reverb Feedback", "Surround Balance", "Arp Mode", "Arp Pattern", "Arp Resolution", "Arp Note Length", "Arp Swing", "Arp Octaves", "Arp Hold", "EQ Mid Gain", "EQ Mid Frequency", "EQ Mid Q-Factor", "Assign 4 Amount 1", "Assign 5 Amount 1", "Assign 6 Amount 1", "Effect Send (Revb)", "Osc 1 Local Detune", "Osc 2 Local Detune", "Osc 1 F-Shift", "Osc 2 F-Shift", "Osc 1 F-Spread", "Osc 2 F-Spread", "Osc 1 Interpolation", "Osc 2 Interpolation", "Filter Bank Mix" + ], + "softknobTargets": + [ + "", "Modulation Wheel", "Breath Controller", "Contr 3", "Foot Controller", "Data Slider", "Balance", "Contr 9", "Expression", "Contr 12", "Contr 13", "Contr 14", "Contr 15", "Contr 16", "Patch Volume", "Channel Volume", "Panorama", "Transpose", "Portamento Time", "Unison Detune", "Unison Pan Spread", "Unison Lfo Phase", "Chorus Mix", "Chorus Rate", "Chorus Depth", "Chorus Delay", "Chorus Feedback", "Delay Send", "Delay Time", "Delay Feedback", "Dly Rate / Rev Decay", "Dly Depth ", "Osc1 Wave Select", "Osc1 Pulsewidth", "Osc1 Semitone", "Osc1 Keyfollow", "Osc2 Wave Select", "Osc2 Pulsewidth", "Osc2 Filt Env Amt", "FM Filt Env Amt", "Osc2 Keyfollow", "Noise Volume", "Filter1 Resonance", "Filter2 Resonance", "Filter1 Env Amt", "Filter2 Env Amt", "Filter1 Keyfollow", "Filter2 Keyfollow", "Lfo1 Symmetry", "Osc1 Lfo1 Amount", "Osc2 Lfo1 Amount", "PW Lfo1 Amount", "Reso Lfo1 Amount", "FiltGain Lfo1 Amount", "Lfo2 Symmetry", "Shape Lfo2 Amount", "FM Lfo2 Amount", "Cutoff1 Lfo2 Amount", "Cutoff2 Lfo2 Amount", "Pan Lfo2 Amount", "Lfo3 Rate", "Osc Lfo3 Amount", "Bender Range Up", "Bender Range Down", "", "Fm Amount Velocity", "Flt1 EnvAmt Velocity", "Flt2 EnvAmt Velocity", "Resonance1 Velocity", "Resonance2 Velocity", "Amp Velocity", "Panorama Velocity", "Assign1 Amount", "Assign2 Amount1", "Assign2 Amount2", "Assign3 Amount1", "Assign3 Amount2", "Assign3 Amount3", "Clock Tempo", "Input Thru Level", "Osc Init Phase", "Punch Intensity", "Ringmodulator Volume", "Noise Color", "Delay Color", "Bass Intensity", "Bass Tune", "Distortion Intensity", "Filter Bank/Frequency", "Osc3 Volume", "Osc3 Semitone", "Osc3 Detune", "LFO1 Assign Amount", "LFO2 Assign Amount", "Phaser Mix", "Phaser Rate", "Phaser Depth", "Phaser Frequency", "Phaser Feedback", "Phaser Spread", "Reverb Time", "Reverb Damping", "Reverb Color", "Reverb Feedback", "Second Output Balance", "Arp Mode", "Arp Pattern Selct", "Arp Clock", "Arp Note Length", "Arp Swing", "Arp Octave Range", "Arp Hold Enable", "MidEQ Gain", "MidEQ Frequency", "MidEQ Q-Factor", "Assign 4 Amount", "Assign 5 Amount", "Assign 6 Amount", "Reverb Send", "Osc1 HyperSaw/DetuneSpread", "Osc2 HyperSaw/DetuneSpread", "Osc1 Wavetable/FormantShift", "Osc2 Wavetable/FormantShift", "Osc1 Wavetable/Sync", "Osc2 Wavetable/Sync", "Osc1 Wavetable/Interpolation", "Osc2 Wavetable/Interpolation", "Filter Bank/Mix" + ], + "softknobName": + [ + "~Para", "+3rds", "+4ths", "+5ths", "+7ths", "+Octave", "Access", "ArpMode", "ArpOct", "Attack", "Balance", "Chorus", "Cutoff", "Decay", "Delay", "Depth", "Destroy", "Detune", "Disolve", "Distort", "Dive", "Effects", "Elevate", "Energy", "EqHigh", "EqLow", "EqMid", "Fast", "Fear", "Filter", "FM", "Glide", "Hold", "Hype", "Infect", "Length", "Mix", "Morph", "Mutate", "Noise", "Open", "Orbit", "Pan", "Phaser", "Phatter", "Pitch", "Pulsate", "Push", "PWM", "Rate", "Release", "Reso", "Reverb", "Scream", "Shape", "Sharpen", "Slow", "Soften", "Speed", "SubOsc", "Sustain", "Sweep", "Swing", "Tempo", "Thinner", "Tone", "Tremolo", "Vibrato", "WahWah", "Warmth", "Warp", "vf", "Bite", "Flanger", "RingMod", "Punch", "Fuzz", "Modulate", "Party!", "Interpolation", "F-Shift", "F-Spread", "Bush", "Muscle", "Sack", "Vowel", "Comb", "Speaker" + ], + "unisonMode": + [ + "Off", "Twin", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" + ], + "filterKeytrackBase": + [ + "C-1", "C#-1", "D-1", "D#-1", "E-1", "F-1", "F#-1", "G-1", "G#-1", "A-1", "A#-1", "B-1", "C0", "C#0", "D0", "D#0", "E0", "F0", "F#0", "G0", "G#0", "A0", "A#0", "B0", "C1", "C#1", "D1", "D#1", "E1", "F1", "F#1", "G1", "G#1", "A1", "A#1", "B1", "C2", "C#2", "D2", "D#2", "E2", "F2", "F#2", "G2", "G#2", "A2", "A#2", "B2", "C3", "C#3", "D3", "D#3", "E3", "F3", "F#3", "G3", "G#3", "A3", "A#3", "B3", "C4", "C#4", "D4", "D#4", "E4", "F4", "F#4", "G4", "G#4", "A4", "A#4", "B4", "C5", "C#5", "D5", "D#5", "E5", "F5", "F#5", "G5", "G#5", "A5", "A#5", "B5", "C6", "C#6", "D6", "D#6", "E6", "F6", "F#6", "G6", "G#6", "A6", "A#6", "B6", "C7", "C#7", "D7", "D#7", "E7", "F7", "F#7", "G7", "G#7", "A7", "A#7", "B7", "C8", "C#8", "D8", "D#8", "E8", "F8", "F#8", "G8", "G#8", "A8", "A#8", "B8", "C9", "C#9", "D9", "D#9", "E9", "F9", "F#9", "G9" + ], + "oscFMMode": + [ + "Pos Triangle", "Triangle", "Wave", "Noise", "In L", "In L+R", "In R" + ], + "oscFMModeWaveTable": + [ + "FreqMod", "PhaseMod" + ], + "vocoderMode": + [ + "Off", "Oscillator", "Osc Hold", "Noise", "In L", "In L+R", "In R" + ], + "inputFollowerMode": + [ + "Off", "In L", "In L+R", "In R", "Aux1 L", "Aux1 L+R" + ], + "numArpClockdividers": + [ + "", "1/128", "1/64", "1/32", "1/16", "1/8", "1/4", "3/128", "3/64", "3/32", "3/16", "1/48", "1/24", "1/12", "1/6", "1/3", "3/8", "1/2" + ], + "numLFOClockdividers": + [ + "Off", "1/64", "1/32", "1/16", "1/8", "1/4", "1/2", "3/64", "3/32", "3/16", "3/8", "1/24", "1/12", "1/6", "1/3", "2/3", "3/4", "1/1", "2/1", "4/1", "8/1", "16/1" + ], + "numDelayClockdividers": + [ + "Off", "1/64", "1/32", "1/16", "1/8", "1/4", "1/2", "3/64", "3/32", "3/16", "3/8", "1/24", "1/12", "1/6", "1/3", "2/3", "3/4" + ], + "phaserMode": + [ + "1 Stage", "2 Stages", "3 Stages", "4 Stages", "5 Stages", "6 Stages" + ], + "filterSelect": + [ + "Filter 1", "Filter 2", "Filter 1+2" + ], + "category": + [ + "--", "Lead", "Bass", "Pad", "Decay", "Pluck", "Acid", "Classic", "Arpeggiator", "Effects", "Drums", "Percussion", "Input", "Vocoder", "Favourite 1", "Favourite 2", "Favourite 3", "Organ", "Piano", "String", "FM", "Digital", "Atomizer" + ], + "reverbRoomSize": + [ + "Ambience", "Small Room", "Large Room", "Hall" + ], + "hyperSawDensity": + [ + "1.0", "1.1", "1.1", "1.1", "1.2", "1.2", "1.2", "1.3", "1.3", "1.3", "1.4", "1.4", "1.4", "1.5", "1.5", "1.5", "1.6", "1.6", "1.6", "1.7", "1.7", "1.7", "1.7", "1.8", "1.8", "1.8", "1.8", "1.9", "1.9", "1.9", "1.9", "2.0", "2.0", "2.1", "2.1", "2.1", "2.2", "2.2", "2.2", "2.3", "2.3", "2.3", "2.4", "2.4", "2.4", "2.5", "2.5", "2.5", "2.6", "2.6", "2.6", "2.7", "2.7", "2.7", "2.7", "2.8", "2.8", "2.8", "2.8", "2.9", "2.9", "2.9", "2.9", "3.0", "3.0", "3.1", "3.2", "3.3", "3.4", "3.5", "3.5", "3.6", "3.6", "3.7", "3.7", "3.8", "3.8", "3.9", "3.9", "4.0", "4.0", "4.1", "4.2", "4.3", "4.4", "4.5", "4.5", "4.6", "4.6", "4.7", "4.7", "4.8", "4.8", "4.9", "4.9", "5.0", "5.0", "5.1", "5.3", "5.5", "5.7", "5.8", "5.9", "6.0", "6.0", "6.1", "6.3", "6.5", "6.7", "6.8", "6.9", "7.0", "7.0", "7.1", "7.3", "7.5", "7.7", "7.8", "7.9", "8.0", "8.0", "8.1", "8.3", "8.5", "8.7", "8.8", "8.9", "9.0" + ], + "wavetablesNames": + [ + "Sine", "HarmncSweep", "Glass Sweep", "Draw Bars", "Clusters", "Insine Out", "Landing", "Liquid Metal", "Opposition", "Overtunes 1", "Overtunes 2", "Scale Trix", "Sine Rider", "Sqr Series", "Upsine Down", "Thumbs Up", "Waterphone", "E-Chime", "Tinkabell", "Bellfizz", "Bellentine", "Robot Wars", "Alternator", "Finger Bass", "Fizzybar", "Flutes", "HP Love", "Majestix", "Hotch Potch", "Resynater", "Smooth Rough", "Sawsalito", "Bells 1", "Bells 2", "SportReport", "Metal Guru", "Bat Cave", "Acetate", "Buzzbizz", "Buzzpartout", "Vanish", "Overbones", "Pulsechecker", "Stratosfear", "Sooty Sweep", "Throaty", "Didgitalis", "Evil", "Chords", "FM Grit", "Bellsarnie", "Octavius", "Eat Pulse", "Sinzin", "Sine System", "Clip Sweep", "Roughage", "Waving", "Pling Saw", "E-Peas", "Bump Sweep", "Filter Sqr", "Fourmant", "Formantera", "Sundial 1", "Sundial 2", "Sundial 3", "Clipdial 1", "Clipdial 2", "Voxonix", "Solenoid", "KlingKlang", "Violator", "Potassium", "Pile Up", "Tincanali", "Sniper", "Squeezy", "Decomposer", "Morfants", "Pingvox", "Adenoids", "Nasal", "Partialism", "TableDance", "Cascade", "Prismism", "Friction", "Robotix", "Whizzfizz", "Spangly", "Fluxbin", "Fiboglide", "Fibonice", "Fibonasty", "Penetrator", "Blinder", "Element 5", "Bad Signs", "Domina7rix" + ], + "unipolarPercent": + [ + "0 %", "0.8 %", "1.6 %", "2.3 %", "3.9 %", "3.1 %", "4.7 %", "5.5 %", "6.3 %", "7.0 %", "7.8 %", "8.6 %", "9.4 %", "10.2 %", "10.9 %", "11.7 %", "12.5 %", "13.3 %", "14.1 %", "14.8 %", "15.6 %", "16.4 %", "17.2 %", "18.0 %", "18.8 %", "19.5 %", "20.3 %", "21.1 %", "21.9 %", "22.7 %", "23.4 %", "24.2 %", "25.0 %", "25.8 %", "26.6 %", "27.3 %", "28.1 %", "28.9 %", "29.7 %", "30.5 %", "31.3 %", "32.0 %", "32.8 %", "33.6 %", "34.4 %", "35.2 %", "35.9 %", "36.7 %", "37.5 %", "38.3 %", "39.0 %", "39.8 %", "40.6 %", "41.4 %", "42.2 %", "43.0 %", "43.8 %", "44.5 %", "45.3 %", "46.1 %", "46.9 %", "47.7 %", "48.4 %", "49.2 %", "50.0 %", "50.8 %", "51.6 %", "52.3 %", "53.1 %", "53.9 %", "54.7 %", "55.5 %", "56.3 %", "57.0 %", "57.8 %", "58.6 %", "59.4 %", "60.2 %", "60.9 %", "61.7 %", "62.5 %", "63.3 %", "64.1 %", "64.8 %", "65.6 %", "66.4 %", "67.2 %", "68.0 %", "68.8 %", "69.5 %", "70.3 %", "71.1 %", "71.9 %", "72.7 %", "73.4 %", "74.2 %", "75.0 %", "75.8 %", "76.6 %", "77.3 %", "78.1 %", "78.9 %", "79.7 %", "80.5 %", "81.3 %", "82.0 %", "82.8 %", "83.6 %", "84.4 %", "85.2 %", "85.9 %", "86.7 %", "87.5 %", "88.3 %", "89.1 %", "89.8 %", "90.6 %", "91.4 %", "92.2 %", "93.0 %", "93.8 %", "94.5 %", "95.3 %", "96.1 %", "96.9 %", "97.7 %", "98.4 %", "100.0 %" + ], + "biPolarPercent": + [ + "-100.0 %", "-98.4 %", "-96.9 %", "-95.3 %", "-93.8 %", "-92.2 %", "-90.6 %", "-89.1 %", "-87.5 %", "-85.9 %", "-84.4 %", "-82.8 %", "-81.3 %", "-79.7 %", "-78.1 %", "-76.6 %", "-75.0 %", "-73.4 %", "-71.9 %", "-70.3 %", "-68.8 %", "-67.2 %", "-65.6 %", "-64.1 %", "-62.5 %", "-60.9 %", "-59.4 %", "-57.8 %", "-56.3 %", "-54.7 %", "-53.1 %", "-51.6 %", "-50.0 %", "-48.4 %", "-46.9 %", "-45.3 %", "-43.8 %", "-42.2 %", "-40.6 %", "-39.0 %", "-37.5 %", "-35.9 %", "-34.4 %", "-32.8 %", "-31.3 %", "-29.7 %", "-28.1 %", "-26.6 %", "-25.0 %", "-23.4 %", "-21.9 %", "-20.3 %", "-18.8 %", "-17.2 %", "-15.6 %", "-14.1 %", "-12.5 %", "-10.9 %", "-9.4 %", "-7.8 %", "-6.3 %", "-4.7 %", "-3.1 %", "-1.6 %", "+0 %", "+1.6 %", "+3.1 %", "+4.7 %", "+6.3 %", "+7.8 %", "+9.4 %", "+10.9 %", "+12.5 %", "+14.1 %", "+15.6 %", "+17.2 %", "+18.8 %", "+20.3 %", "+21.9 %", "+23.4 %", "+25.0 %", "+26.6 %", "+28.1 %", "+29.7 %", "+31.3 %", "+32.8 %", "+34.4 %", "+35.9 %", "+37.5 %", "+39.0 %", "+40.6 %", "+42.2 %", "+43.8 %", "+45.3 %", "+46.9 %", "+48.4 %", "+50.0 %", "+51.6 %", "+53.1 %", "+54.7 %", "+56.3 %", "+57.8 %", "+59.4 %", "+60.9 %", "+62.5 %", "+64.1 %", "+65.6 %", "+67.2 %", "+68.8 %", "+70.3 %", "+71.9 %", "+73.4 %", "+75.0 %", "+76.6 %", "+78.1 %", "+79.7 %", "+81.3 %", "+82.8 %", "+84.4 %", "+85.9 %", "+87.5 %", "+89.1 %", "+90.6 %", "+92.2 %", "+93.8 %", "+95.3 %", "+96.9 %", "+100.0 %" + ], + "unipolarPercentOff": + [ + "Off", "0.8 %", "1.6 %", "2.3 %", "3.9 %", "3.1 %", "4.7 %", "5.5 %", "6.3 %", "7.0 %", "7.8 %", "8.6 %", "9.4 %", "10.2 %", "10.9 %", "11.7 %", "12.5 %", "13.3 %", "14.1 %", "14.8 %", "15.6 %", "16.4 %", "17.2 %", "18.0 %", "18.8 %", "19.5 %", "20.3 %", "21.1 %", "21.9 %", "22.7 %", "23.4 %", "24.2 %", "25.0 %", "25.8 %", "26.6 %", "27.3 %", "28.1 %", "28.9 %", "29.7 %", "30.5 %", "31.3 %", "32.0 %", "32.8 %", "33.6 %", "34.4 %", "35.2 %", "35.9 %", "36.7 %", "37.5 %", "38.3 %", "39.0 %", "39.8 %", "40.6 %", "41.4 %", "42.2 %", "43.0 %", "43.8 %", "44.5 %", "45.3 %", "46.1 %", "46.9 %", "47.7 %", "48.4 %", "49.2 %", "50.0 %", "50.8 %", "51.6 %", "52.3 %", "53.1 %", "53.9 %", "54.7 %", "55.5 %", "56.3 %", "57.0 %", "57.8 %", "58.6 %", "59.4 %", "60.2 %", "60.9 %", "61.7 %", "62.5 %", "63.3 %", "64.1 %", "64.8 %", "65.6 %", "66.4 %", "67.2 %", "68.0 %", "68.8 %", "69.5 %", "70.3 %", "71.1 %", "71.9 %", "72.7 %", "73.4 %", "74.2 %", "75.0 %", "75.8 %", "76.6 %", "77.3 %", "78.1 %", "78.9 %", "79.7 %", "80.5 %", "81.3 %", "82.0 %", "82.8 %", "83.6 %", "84.4 %", "85.2 %", "85.9 %", "86.7 %", "87.5 %", "88.3 %", "89.1 %", "89.8 %", "90.6 %", "91.4 %", "92.2 %", "93.0 %", "93.8 %", "94.5 %", "95.3 %", "96.1 %", "96.9 %", "97.7 %", "98.4 %", "100.0 %" + ], + "signedNorm": + [ + "-64", "-63", "-62", "-61", "-60", "-59", "-58", "-57", "-56", "-55", "-54", "-53", "-52", "-51", "-50", "-49", "-48", "-47", "-46", "-45", "-44", "-43", "-42", "-41", "-40", "-39", "-38", "-37", "-36", "-35", "-34", "-33", "-32", "-31", "-30", "-29", "-28", "-27", "-26", "-25", "-24", "-23", "-22", "-21", "-20", "-19", "-18", "-17", "-16", "-15", "-14", "-13", "-12", "-11", "-10", "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1", "0", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+10", "+11", "+12", "+13", "+14", "+15", "+16", "+17", "+18", "+19", "+20", "+21", "+22", "+23", "+24", "+25", "+26", "+27", "+28", "+29", "+30", "+31", "Norm", "+33", "+34", "+35", "+36", "+37", "+38", "+39", "+40", "+41", "+42", "+43", "+44", "+45", "+46", "+47", "+48", "+49", "+50", "+51", "+52", "+53", "+54", "+55", "+56", "+57", "+58", "+59", "+60", "+61", "+62", "+63" + ], + "0-16OnOff": + [ + "Off", "On", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" + ], + "MIDIChannels": + [ + "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", + ], + "chorusType": + [ + "Off", "Classic", "Vintage", "Hyper Chorus", "Air Chorus", "Vibrato", "Rotary Speaker" + ], + "slowFast": + [ + "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Slow", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast", "Fast" + ], + "chorusDistance": + [ + "4.0 cm", "4.1 cm", "4.3 cm", "4.4 cm", "4.5 cm", "4.6 cm", "4.8 cm", "4.9 cm", "5.0 cm", "5.1 cm", "5.3 cm", "5.4 cm", "5.5 cm", "5.6 cm", "5.8 cm", "5.9 cm", "6.0 cm", "6.1 cm", "6.3 cm", "6.4 cm", "6.5 cm", "6.6 cm", "6.8 cm", "6.9 cm", "7.0 cm", "7.1 cm", "7.3 cm", "7.4 cm", "7.5 cm", "7.6 cm", "7.8 cm", "7.9 cm", "8.0 cm", "8.1 cm", "8.3 cm", "8.4 cm", "8.5 cm", "8.6 cm", "8.8 cm", "8.9 cm", "9.0 cm", "9.1 cm", "9.3 cm", "9.4 cm", "9.5 cm", "9.6 cm", "9.8 cm", "9.9 cm", "10.0 cm", "10.1 cm", "10.3 cm", "10.4 cm", "10.5 cm", "10.6 cm", "10.8 cm", "10.9 cm", "11.0 cm", "11.1 cm", "11.3 cm", "11.4 cm", "11.5 cm", "11.6 cm", "11.8 cm", "11.9 cm", "12.0 cm", "12.2 cm", "12.4 cm", "12.6 cm", "12.8 cm", "12.9 cm", "13.1 cm", "13.3 cm", "13.5 cm", "13.7 cm", "13.9 cm", "14.1 cm", "14.3 cm", "14.4 cm", "14.6 cm", "14.8 cm", "15.0 cm", "15.3 cm", "15.5 cm", "15.8 cm", "16.0 cm", "16.3 cm", "16.5 cm", "16.8 cm", "17.0 cm", "17.3 cm", "17.5 cm", "17.8 cm", "18.0 cm", "18.3 cm", "18.5 cm", "18.8 cm", "19.0 cm", "19.3 cm", "19.6 cm", "19.9 cm", "20.3 cm", "20.6 cm", "20.9 cm", "21.2 cm", "21.5 cm", "21.8 cm", "22.1 cm", "22.4 cm", "22.8 cm", "23.1 cm", "23.4 cm", "23.7 cm", "24.0 cm", "24.4 cm", "24.8 cm", "25.1 cm", "25.5 cm", "25.9 cm", "26.3 cm", "26.6 cm", "27.0 cm", "27.4 cm", "27.8 cm", "28.1 cm", "28.5 cm", "28.9 cm", "29.3 cm", "30.0 cm" + ], + "chorusAmount": + [ + "1.00", "1.02", "1.03", "1.05", "1.06", "1.08", "1.09", "1.11", "1.13", "1.14", "1.16", "1.17", "1.19", "1.20", "1.22", "1.23", "1.25", "1.27", "1.28", "1.30", "1.31", "1.33", "1.34", "1.36", "1.38", "1.39", "1.41", "1.42", "1.44", "1.45", "1.47", "1.48", "1.50", "1.52", "1.53", "1.55", "1.56", "1.58", "1.59", "1.61", "1.63", "1.64", "1.66", "1.67", "1.69", "1.70", "1.72", "1.73", "1.75", "1.77", "1.78", "1.80", "1.81", "1.83", "1.84", "1.86", "1.88", "1.89", "1.91", "1.92", "1.94", "1.95", "1.97", "1.98", "2.00", "2.02", "2.03", "2.05", "2.06", "2.08", "2.09", "2.11", "2.13", "2.14", "2.16", "2.17", "2.19", "2.20", "2.22", "2.23", "2.25", "2.27", "2.28", "2.30", "2.31", "2.33", "2.34", "2.36", "2.38", "2.39", "2.41", "2.42", "2.44", "2.45", "2.47", "2.48", "2.50", "2.52", "2.53", "2.55", "2.56", "2.58", "2.59", "2.61", "2.63", "2.64", "2.66", "2.67", "2.69", "2.70", "2.72", "2.73", "2.75", "2.77", "2.78", "2.80", "2.81", "2.83", "2.84", "2.86", "2.88", "2.89", "2.91", "2.92", "2.94", "2.95", "2.97", "3.00" + ], + "-180Degree+180Degree": + [ + "-180^", "-177^", "-174^", "-172^", "-169^", "-166^", "-163^", "-160^", "-158^", "-155^", "-152^", "-149^", "-146^", "-143^", "-141^", "-138^", "-135^", "-132^", "-129^", "-127^", "-124^", "-121^", "-118^", "-115^", "-113^", "-110^", "-107^", "-104^", "-101^", "-98^", "-96^", "-93^", "-90^", "-87^", "-84^", "-82^", "-79^", "-76^", "-73^", "-70^", "-68^", "-65^", "-62^", "-59^", "-56^", "-53^", "-51^", "-48^", "-45^", "-42^", "-39^", "-37^", "-34^", "-31^", "-28^", "-25^", "-23^", "-20^", "-17^", "-14^", "-11^", "-8^", "-6^", "-3^", "+0^", "+3^", "+6^", "+8^", "+11^", "+14^", "+17^", "+20^", "+23^", "+25^", "+28^", "+31^", "+34^", "+37^", "+39^", "+42^", "+45^", "+48^", "+51^", "+53^", "+56^", "+59^", "+62^", "+65^", "+68^", "+70^", "+73^", "+76^", "+79^", "+82^", "+84^", "+87^", "+90^", "+93^", "+96^", "+98^", "+101^", "+104^", "+107^", "+110^", "+113^", "+115^", "+118^", "+121^", "+124^", "+127^", "+129^", "+132^", "+135^", "+138^", "+141^", "+143^", "+146^", "+149^", "+152^", "+155^", "+158^", "+160^", "+163^", "+166^", "+169^", "+172^", "+174^", "+180^" + ], + "unipolarPercentFeedback": + [ + "0 %", "1.6 %", "3.1 %", "4.7 %", "6.3 %", "7.8 %", "9.4 %", "10.9 %", "12.5 %", "14.1 %", "15.6 %", "17.2 %", "18.8 %", "20.3 %", "21.9 %", "23.4 %", "25.0 %", "26.6 %", "28.1 %", "29.7 %", "31.3 %", "32.8 %", "34.4 %", "35.9 %", "37.5 %", "39.0 %", "40.6 %", "42.2 %", "43.8 %", "45.3 %", "46.9 %", "48.4 %", "50.0 %", "51.6 %", "53.1 %", "54.7 %", "56.3 %", "57.8 %", "59.4 %", "60.9 %", "62.5 %", "64.1 %", "65.6 %", "67.2 %", "68.8 %", "70.3 %", "71.9 %", "73.4 %", "75.0 %", "76.6 %", "78.1 %", "79.7 %", "81.3 %", "82.8 %", "84.4 %", "85.9 %", "87.5 %", "89.1 %", "90.6 %", "92.2 %", "93.8 %", "95.3 %", "96.9 %", "98.4 %", "100.0 %", "100.1 %", "100.2 %", "100.3 %", "100.4 %", "100.6 %", "100.9 %", "101.2 %", "101.6 %", "102.0 %", "102.5 %", "103.0 %", "103.5 %", "104.1 %", "104.8 %", "105.5 %", "106.3 %", "107.1 %", "107.9 %", "108.8 %", "109.8 %", "110.8 %", "111.8 %", "112.9 %", "114.1 %", "115.3 %", "116.5 %", "117.8 %", "119.1 %", "120.5 %", "122.0 %", "123.5 %", "125.0 %", "126.6 %", "128.2 %", "129.9 %", "131.6 %", "133.4 %", "135.3 %", "137.1 %", "139.1 %", "141.0 %", "143.1 %", "145.1 %", "147.3 %", "149.4 %", "151.7 %", "153.9 %", "156.3 %", "158.6 %", "161.0 %", "163.5 %", "166.0 %", "168.6 %", "171.2 %", "173.9 %", "176.6 %", "179.3 %", "182.1 %", "185.0 %", "187.9 %", "190.8 %", "193.8 %", "200.0 %" + ], + "User1-64": + [ + "User", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64" + ], + "arpModes": + [ + "Off", "Up", "Down", "Up&Down", "As Played", "Random", "Chord", "Arp>Matrix" + ], + "numEQLowFrequency": + [ + "32", "32", "33", "33", "35", "35", "36", "36", "38", "38", "40", "40", "41", "41", "43", "43", "45", "45", "47", "47", "49", "49", "51", "51", "53", "53", "56", "56", "58", "58", "61", "61", "63", "63", "66", "66", "69", "69", "72", "72", "75", "75", "78", "78", "82", "82", "85", "85", "89", "89", "93", "93", "97", "97", "101", "101", "105", "105", "110", "110", "114", "114", "119", "119", "124", "124", "130", "130", "135", "135", "141", "141", "147", "147", "153", "153", "160", "160", "167", "167", "174", "174", "182", "182", "189", "189", "198", "198", "206", "206", "215", "215", "224", "224", "234", "234", "244", "244", "254", "254", "265", "265", "277", "277", "288", "288", "301", "301", "314", "314", "327", "327", "341", "341", "356", "356", "371", "371", "387", "387", "404", "404", "421", "421", "439", "439", "458", "458" + ], + "numEQMidFrequency": + [ + "19", "20", "22", "23", "24", "26", "27", "29", "30", "32", "34", "36", "38", "40", "43", "45", "48", "50", "53", "57", "60", "63", "67", "71", "75", "79", "84", "89", "94", "99", "105", "111", "118", "124", "132", "139", "147", "156", "165", "174", "184", "195", "206", "218", "230", "244", "258", "273", "288", "305", "323", "314", "361", "382", "404", "427", "451", "477", "505", "534", "565", "597", "632", "668", "707", "747", "790", "836", "884", "935", "989", "1046", "1106", "1170", "1237", "1309", "1384", "1464", "1548", "1637", "1731", "1831", "1936", "2047", "2165", "2290", "2422", "2561", "2708", "2864", "3029", "3204", "3388", "3583", "3789", "4007", "4238", "4482", "4740", "5012", "5301", "5606", "5929", "6270", "6631", "7012", "7416", "7843", "8294", "8771", "9276", "9810", "10.3", "11.6", "12.2", "12.9", "13.7", "14.5", "15.3", "16.2", "17.1", "18.1", "19.2", "20.3", "21.4", "22.7", "23.9", "24.0" + ], + "numEQHighFrequency": + [ + "1831", "1831", "1909", "1909", "1991", "1991", "2076", "2076", "2165", "2165", "2258", "2258", "2355", "2355", "2456", "2456", "2561", "2561", "2671", "2671", "2785", "2785", "2905", "2905", "3029", "3029", "3159", "3159", "3294", "3294", "3436", "3436", "3583", "3583", "3736", "3736", "3897", "3897", "4064", "4064", "4238", "4238", "4419", "4419", "4609", "4609", "4806", "4806", "5012", "5012", "5227", "5227", "5451", "5451", "5684", "5684", "5929", "5929", "6183", "6183", "6448", "6448", "6724", "6724", "7012", "7012", "7313", "7313", "7626", "7626", "7953", "7953", "8294", "8294", "8649", "8649", "9020", "9020", "9407", "9407", "9810", "9810", "10.2", "10.2", "10.6", "10.6", "11.1", "11.1", "11.6", "11.6", "12.1", "12.1", "12.6", "12.6", "13.1", "13.1", "13.7", "13.7", "14.3", "14.3", "14.9", "14.9", "15.5", "15.5", "16.2", "16.2", "16.9", "16.9", "17.6", "17.6", "18.4", "18.4", "19.2", "19.2", "20.0", "20.0", "20.8", "20.8", "21.7", "21.7", "22.7", "22.7", "23.6", "23.6", "23.9", "23.9", "24.0", "24.0" + ], + "NumEqInDB": + [ + "-16 dB", "-15.75 dB", "-15.5 dB", "-15.25 dB", "-15 dB", "-14.75 dB", "-14.5 dB", "-14.25 dB", "-14 dB", "-13.75 dB", "-13.5 dB", "-13.25 dB", "-13 dB", "-12.75 dB", "-12.5 dB", "-12.25 dB", "-12 dB", "-11.75 dB", "-11.5 dB", "-11.25 dB", "-11 dB", "-10.75 dB", "-10.5 dB", "-10.25 dB", "-10 dB", "-9.75 dB", "-9.5 dB", "-9.25 dB", "-9 dB", "-8.75 dB", "-8.5 dB", "-8.25 dB", "-8 dB", "-7.75 dB", "-7.5 dB", "-7.25 dB", "-7 dB", "-6.75 dB", "-6.5 dB", "-6.25 dB", "-6 dB", "-5.75 dB", "-5.5 dB", "-5.25 dB", "-5 dB", "-4.75 dB", "-4.5 dB", "-4.25 dB", "-4 dB", "-3.75 dB", "-3.5 dB", "-3.25 dB", "-3 dB", "-2.75 dB", "-2.5 dB", "-2.25 dB", "-2 dB", "-1.75 dB", "-1.5 dB", "-1.25 dB", "-1 dB", "-0.75 dB", "-0.5 dB", "-0.25 dB", "Off", "+0.25 dB", "+0.5 dB", "+0.75 dB", "+1 dB", "+1.25 dB", "+1.5 dB", "+1.75 dB", "+2 dB", "+2.25 dB", "+2.5 dB", "+2.75 dB", "+3 dB", "+3.25 dB", "+3.5 dB", "+3.75 dB", "+4 dB", "+4.25 dB", "+4.5 dB", "+4.75 dB", "+5 dB", "+5.25 dB", "+5.5 dB", "+5.75 dB", "+6 dB", "+6.25 dB", "+6.5 dB", "+6.75 dB", "+7 dB", "+7.25 dB", "+7.5 dB", "+7.75 dB", "+8 dB", "+8.25 dB", "+8.5 dB", "+8.75 dB", "+9 dB", "+9.25 dB", "+9.5 dB", "+9.75 dB", "+10 dB", "+10.25 dB", "+10.5 dB", "+10.75 dB", "+11 dB", "+11.25 dB", "+11.5 dB", "+11.75 dB", "+12 dB", "+12.25 dB", "+12.5 dB", "+12.75 dB", "+13 dB", "+13.25 dB", "+13.5 dB", "+13.75 dB", "+14 dB", "+14.25 dB", "+14.5 dB", "+14.75 dB", "+15 dB", "+15.25 dB", "+15.5 dB", "+16 dB" + ], + "NumEQQ-factor": + [ + "0.28", "0.29", "0.30", "0.31", "0.32", "0.33", "0.34", "0.35", "0.36", "0.37", "0.38", "0.39", "0.40", "0.42", "0.43", "0.44", "0.45", "0.46", "0.48", "0.49", "0.51", "0.53", "0.54", "0.56", "0.58", "0.59", "0.61", "0.62", "0.64", "0.66", "0.67", "0.69", "0.71", "0.72", "0.73", "0.74", "0.76", "0.77", "0.78", "0.79", "0.80", "0.81", "0.82", "0.83", "0.85", "0.86", "0.87", "0.88", "0.89", "0.93", "0.98", "1.02", "1.06", "1.11", "1.15", "1.19", "1.23", "1.28", "1.32", "1.36", "1.41", "1.45", "1.49", "1.54", "1.58", "1.66", "1.74", "1.81", "1.89", "1.97", "2.05", "2.12", "2.20", "2.28", "2.36", "2.43", "2.51", "2.59", "2.67", "2.74", "2.82", "2.96", "3.09", "3.23", "3.38", "3.50", "3.64", "3.78", "3.92", "4.05", "4.19", "4.33", "4.46", "4.60", "4.74", "4.87", "5.01", "5.25", "5.50", "5.74", "5.99", "6.23", "6.47", "6.72", "6.96", "7.20", "7.45", "7.69", "7.94", "8.18", "8.42", "8.67", "8.91", "9.34", "9.78", "10.2", "10.6", "11.0", "11.5", "11.9", "12.3", "12.8", "13.2", "13.6", "14.1", "14.5", "14.9", "15.4" + ], + "NameDistortionModes": + [ + "Off", "Light", "Soft", "Medium", "Hard", "Digital", "Wave Shaper", "Rectifier", "Bit Reducer Old", "Rate Reducer Old", "Low Pass", "High Pass", "Wide", "Soft Bounce", "Hard Bounce", "Sine Fold ", "Triangle Fold", "Sawtooth Fold", "Rate Reducer", "Bit Reducer", "Mint Overdrive", "Curry Overdrive", "Saffron Overdrive", "Onion Overdrive", "Pepper Overdrive", "Chili Overdrive" + ], + "reverbMode": + [ + "Off", "Reverb", "Feedback 1", "Feedback 2" + ], + "reverbType": + [ + "Ambience", "Small Room", "Large Room", "Hall" + ], + "numDelay500": + [ + "0.0", "5.5", "10.1", "16.4", "21.8", "27.3", "32.8", "38.2", "43.7", "49.2", "54.6", "60.1", "65.5", "71.0", "76.5", "81.9", "87.4", "92.8", "98.3", "103.8", "109.2", "114.7", "120.1", "125.6", "131.1", "136.5", "142.0", "147.5", "152.9", "158.4", "163.8", "169.3", "174.8", "180.2", "185.7", "191.1", "196.6", "202.1", "207.5", "213.0", "218.5", "223.9", "229.4", "234.8", "240.3", "245.8", "251.2", "256.7", "262.1", "267.6", "273.1", "278.5", "284.0", "289.5", "295.0", "300.4", "305.8", "311.3", "316.8", "322.2", "327.7", "333.1", "338.6", "344.1", "349.5", "355.0", "360.4", "365.9", "371.4", "376.8", "382.3", "387.8", "393.2", "398.7", "404.1", "409.6", "415.1", "420.2", "426.0", "431.4", "436.9", "442.4", "447.8", "453.3", "458.8", "464.2", "469.7", "475.1", "480.6", "486.1", "491.5", "497.0", "500.0" + ], + "delayType": + [ + "Classic", "Tape Clocked", "Tape Free", "Tape Doppler" + ], + "delayRatio": + [ + "1/4", "2/4", "3/4", "4/4", "4/3", "4/2", "4/1" + ], + "tapeDelayClock": + [ + "1/32", "1/16", "2/16", "3/16", "4/16", "5/16", "6/16", "7/16", "8/16" + ], + "filterBankType": + [ + "Off", "Ring Modulator", "Frequency Shifter", "Vowel Filter", "Comb Filter", "1 Pole XFade", "2 Pole XFade", "4 Pole XFade", "6 Pole XFade", "LP VariSlope", "HP VariSlope", "BP VariSlope" + ], + "nameCombFilter": + [ + "C0", "C#0", "D0", "D#0", "E0", "F0", "F#0", "G0", "G#0", "A0", "A#0", "B0", "C1", "C#1", "D1", "D#1", "E1", "F1", "F#1", "G1", "G#1", "A1", "A#1", "B1", "C2", "C#2", "D2", "D#2", "E2", "F2", "F#2", "G2", "G#2", "A2", "A#2", "B2", "C3", "C#3", "D3", "D#3", "E3", "F3", "F#3", "G3", "G#3", "A3", "A#3", "B3", "C4", "C#4", "D4", "D#4", "E4", "F4", "F#4", "G4", "G#4", "A4", "A#4", "B4", "C5", "C#5", "D5", "D#5", "E5", "F5", "F#5", "G5", "G#5", "A5", "A#5", "B5", "C6", "C#6", "D6", "D#6", "E6", "F6", "F#6", "G6", "G#6", "A6", "A#6", "B6", "C7", "C#7", "D7", "D#7", "E7", "F7", "F#7", "G7", "G#7", "A7", "A#7", "B7", "C8" + ], + "filterBankFilterType": + [ + "Low Pass", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "Band Pass", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "High Pass" + ], + "filterBankPoles": + [ + "2.00", "2.03", "2.06", "2.09", "2.13", "2.16", "2.19", "2.22", "2.25", "2.28", "2.31", "2.34", "2.38", "2.41", "2.44", "2.47", "2.50", "2.53", "2.56", "2.59", "2.63", "2.66", "2.69", "2.72", "2.75", "2.78", "2.81", "2.84", "2.88", "2.91", "2.94", "2.97", "3.00", "3.03", "3.06", "3.09", "3.13", "3.16", "3.19", "3.22", "3.25", "3.28", "3.31", "3.34", "3.38", "3.41", "3.44", "3.47", "3.50", "3.53", "3.56", "3.59", "3.63", "3.66", "3.69", "3.72", "3.75", "3.78", "3.81", "3.84", "3.88", "3.91", "3.94", "3.97", "4.00", "4.03", "4.06", "4.09", "4.13", "4.16", "4.19", "4.22", "4.25", "4.28", "4.31", "4.34", "4.38", "4.41", "4.44", "4.47", "4.50", "4.53", "4.56", "4.59", "4.63", "4.66", "4.69", "4.72", "4.75", "4.78", "4.81", "4.84", "4.88", "4.91", "4.94", "4.97", "5.00", "5.03", "5.06", "5.09", "5.13", "5.16", "5.19", "5.22", "5.25", "5.28", "5.31", "5.34", "5.38", "5.41", "5.44", "5.47", "5.50", "5.53", "5.56", "5.59", "5.63", "5.66", "5.69", "5.72", "5.75", "5.78", "5.81", "5.84", "5.88", "5.91", "5.94", "6.00" + ], + "characters": + [ + "Analog Boost", "Vintage 1", "Vintage 2", "Vintage 3", "Pad Opener", "Lead Enhancer", "Bass Enhancer", "Stereo Widener", "Speaker Cabinet" + ], + "nameOscillator12Mode": + [ + "Classic", "HyperSaw", "Wavetable", "Wave PWM", "Grain Simple", "Grain Complex", "Formant Simple", "Formant Complex" + ], + "nameInputMode": + [ + "Off", "Dynamic", "Static" + ], + "nameInputSelectLeftRight": + [ + "Left", "L + R", "Right" + ], + "locationRAM/ROM": + [ + "RAM-A", "RAM-B", "RAM-C", "RAM-D", "ROM-A", "ROM-B", "ROM-C", "ROM-D", "ROM-E", "ROM-F", "ROM-G", "ROM-H", "ROM-I", "ROM-J", "ROM-K", "ROM-L", "ROM-M", "ROM-N", "ROM-O", "ROM-P", "ROM-Q", "ROM-R", "ROM-S", "ROM-T", "ROM-U", "ROM-V", "ROM-W", "ROM-X", "ROM-Y", "ROM-Z" + ], + "locationRAM/ROM": + [ + "RAM-A", "RAM-B", "RAM-C", "RAM-D", "ROM-A", "ROM-B", "ROM-C", "ROM-D", "ROM-E", "ROM-F", "ROM-G", "ROM-H", "ROM-I", "ROM-J", "ROM-K", "ROM-L", "ROM-M", "ROM-N", "ROM-O", "ROM-P", "ROM-Q", "ROM-R", "ROM-S", "ROM-T", "ROM-U", "ROM-V", "ROM-W", "ROM-X", "ROM-Y", "ROM-Z" + ], + "nameOutputSelectWithoutOff": + [ + "Out1 L", "Out1 L+R", "Out1 R", + "Out2 L", "Out2 L+R", "Out2 R", + "Out3 L", "Out3 L+R", "Out3 R", + + "USB1 L", "USB1 L+R", "USB1 R", + "USB2 L", "USB2 L+R", "USB2 R", + "USB3 L", "USB3 L+R", "USB3 R" + ], + "disabledEnabled": + [ + "Disabled", "Enabled" + ], + "nameVoiceStealMode": + [ + "Low", "High" + ], + "namesInputSource": + [ + "Default", "USB" + ], + "nameUSBOutputConfiguration": + [ + "2 Outs / No Input", "3 Outs / No Input", "3 Outs / 1 Input" + ], + "nameClockFrequency": + [ + "44.1 kHz", "48.0 kHz" + ], + "nameClockSource": + [ + "Auto", "Internal" + ], + "namePhonoMode": + [ + "Linear", "Phono" + ], + "namesInputGain": + [ + "+16 dBV", "+5 dBV", "-8 dBV", "-16 dBV" + ], + "nameParameterKeyMode": + [ + "By Page", "By Parameter" + ], + "OnOff": + [ + "Off", "On" + ], + "namesInputSelect": + [ + "Analog", "S/PDIF" + ], + "ascii": + [ + "NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS","HT","LF","VT","FF","CR","SO","SI","DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM","SUB","ESC","FS","GS","RS","US", + ", ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/", + "0","1","2","3","4","5","6","7","8","9", + ":",";","<","=",">","?","@", + "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z", + "[","\\","]","^","_","`", + "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", + "{","|","}","~","DEL" + ] + }, + "midipackets": + { + "requestsingle": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "30"}, + {"type": "bank"}, + {"type": "program"}, + {"type": "byte", "value": "f7"} + ], + "requestmulti": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "31"}, + {"type": "bank"}, + {"type": "program"}, + {"type": "byte", "value": "f7"} + ], + "requestsinglebank": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "32"}, + {"type": "bank"}, + {"type": "byte", "value": "f7"} + ], + "requestmultibank": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "33"}, + {"type": "bank"}, + {"type": "byte", "value": "f7"} + ], + "requestarrangement": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "34"}, + {"type": "byte", "value": "f7"} + ], + "requestglobal": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "35"}, + {"type": "byte", "value": "f7"} + ], + "requesttotal": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "36"}, + {"type": "byte", "value": "f7"} + ], + "requestcontrollerdump": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "37"}, + {"type": "byte", "value": "f7"} + ], + "parameterchange": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "page"}, + {"type": "part"}, + {"type": "paramindex"}, + {"type": "paramvalue"}, + {"type": "byte", "value": "f7"} + ], + "singledump": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "10"}, + {"type": "bank"}, + {"type": "program"}, + + {"type": "param", "name":"Version"}, // 0 + {"type": "param", "name":"Modulation Wheel"}, // 1 + {"type": "param", "name":"Breath Controller"}, // 2 + {"type": "param", "name":"Contr 3"}, // 3 + {"type": "param", "name":"Foot Controller"}, // 4 + {"type": "param", "name":"Portamento Time"}, // 5 + {"type": "param", "name":"Data Slider"}, // 6 + {"type": "param", "name":"Channel Volume"}, // 7 + {"type": "param", "name":"Balance"}, // 8 + {"type": "param", "name":"Contr 9"}, // 9 + {"type": "param", "name":"Panorama"}, // 10 + {"type": "param", "name":"Expression"}, // 11 + {"type": "param", "name":"Contr 12"}, // 12 + {"type": "param", "name":"Contr 13"}, // 13 + {"type": "param", "name":"Contr 14"}, // 14 + {"type": "param", "name":"Contr 15"}, // 15 + {"type": "param", "name":"Contr 16"}, // 16 + {"type": "param", "name":"Osc1 Shape"}, // 17 + {"type": "param", "name":"Osc1 Pulsewidth"}, // 18 + {"type": "param", "name":"Osc1 Wave Select"}, // 19 + {"type": "param", "name":"Osc1 Semitone"}, // 20 + {"type": "param", "name":"Osc1 Keyfollow"}, // 21 + {"type": "param", "name":"Osc2 Shape"}, // 22 + {"type": "param", "name":"Osc2 Pulsewidth"}, // 23 + {"type": "param", "name":"Osc2 Wave Select"}, // 24 + {"type": "param", "name":"Osc2 Semitone"}, // 25 + {"type": "param", "name":"Osc2 Detune"}, // 26 + {"type": "param", "name":"Osc2 FM Amount"}, // 27 + {"type": "param", "name":"Osc2 Sync"}, // 28 + {"type": "param", "name":"Osc2 Filt Env Amt"}, // 29 + {"type": "param", "name":"FM Filt Env Amt"}, // 30 + {"type": "param", "name":"Osc2 Keyfollow"}, // 31 + {"type": "param", "name":"Bank Select"}, // 32 + {"type": "param", "name":"Osc Balance"}, // 33 + {"type": "param", "name":"Suboscillator Volume"}, // 34 + {"type": "param", "name":"Suboscillator Shape"}, // 35 + {"type": "param", "name":"Osc Mainvolume"}, // 36 + {"type": "param", "name":"Noise Volume"}, // 37 + {"type": "null"}, // 38 + {"type": "param", "name":"Noise Color"}, // 39 + {"type": "param", "name":"Cutoff"}, // 40 + {"type": "param", "name":"Cutoff2"}, // 41 + {"type": "param", "name":"Filter1 Resonance"}, // 42 + {"type": "param", "name":"Filter2 Resonance"}, // 43 + {"type": "param", "name":"Filter1 Env Amt"}, // 44 + {"type": "param", "name":"Filter2 Env Amt"}, // 45 + {"type": "param", "name":"Filter1 Keyfollow"}, // 46 + {"type": "param", "name":"Filter2 Keyfollow"}, // 47 + {"type": "param", "name":"Filter Balance"}, // 48 + {"type": "param", "name":"Saturation Curve"}, // 49 + {"type": "param", "name":"Ringmodulator Volume"}, // 50 + {"type": "param", "name":"Filter1 Mode"}, // 51 + {"type": "param", "name":"Filter2 Mode"}, // 52 + {"type": "param", "name":"Filter Routing"}, // 53 + {"type": "param", "name":"Filter Env Attack"}, // 54 + {"type": "param", "name":"Filter Env Decay"}, // 55 + {"type": "param", "name":"Filter Env Sustain"}, // 56 + {"type": "param", "name":"Filter Env Sustain Time"}, // 57 + {"type": "param", "name":"Filter Env Release"}, // 58 + {"type": "param", "name":"Amp Env Attack"}, // 59 + {"type": "param", "name":"Amp Env Decay"}, // 60 + {"type": "param", "name":"Amp Env Sustain"}, // 61 + {"type": "param", "name":"Amp Env Sustain Time"}, // 62 + {"type": "param", "name":"Amp Env Release"}, // 63 + {"type": "param", "name":"Hold Pedal"}, // 64 + {"type": "param", "name":"Portamento Pedal"}, // 65 + {"type": "param", "name":"Sostenuto Pedal"}, // 66 + {"type": "param", "name":"Lfo1 Rate"}, // 67 + {"type": "param", "name":"Lfo1 Shape"}, // 68 + {"type": "param", "name":"Lfo1 Env Mode"}, // 69 + {"type": "param", "name":"Lfo1 Mode"}, // 70 + {"type": "param", "name":"Lfo1 Symmetry"}, // 71 + {"type": "param", "name":"Lfo1 Keyfollow"}, // 72 + {"type": "param", "name":"Lfo1 Keytrigger"}, // 73 + {"type": "param", "name":"Osc1 Lfo1 Amount"}, // 74 + {"type": "param", "name":"Osc2 Lfo1 Amount"}, // 75 + {"type": "param", "name":"PW Lfo1 Amount"}, // 76 + {"type": "param", "name":"Reso Lfo1 Amount"}, // 77 + {"type": "param", "name":"FiltGain Lfo1 Amount"}, // 78 + {"type": "param", "name":"Lfo2 Rate"}, // 79 + {"type": "param", "name":"Lfo2 Shape"}, // 80 + {"type": "param", "name":"Lfo2 Env Mode"}, // 81 + {"type": "param", "name":"Lfo2 Mode"}, // 82 + {"type": "param", "name":"Lfo2 Symmetry"}, // 83 + {"type": "param", "name":"Lfo2 Keyfollow"}, // 84 + {"type": "param", "name":"Lfo2 Keytrigger"}, // 85 + {"type": "param", "name":"Shape Lfo2 Amount"}, // 86 + {"type": "param", "name":"FM Lfo2 Amount"}, // 87 + {"type": "param", "name":"Cutoff1 Lfo2 Amount"}, // 88 + {"type": "param", "name":"Cutoff2 Lfo2 Amount"}, // 89 + {"type": "param", "name":"Pan Lfo2 Amount"}, // 90 + {"type": "param", "name":"Patch Volume"}, // 91 + {"type": "param", "name":"A_Undefined92"}, // 92 + {"type": "param", "name":"Transpose"}, // 93 + {"type": "param", "name":"Key Mode"}, // 94 + {"type": "param", "name":"A_Undefined95"}, // 95 + {"type": "param", "name":"A_Undefined96"}, // 96 + {"type": "param", "name":"A_Undefined97"}, // 97 + {"type": "param", "name":"A_Undefined98"}, // 98 + {"type": "param", "name":"A_Undefined99"}, // 99 + {"type": "param", "name":"A_Undefined100"}, // 100 + {"type": "param", "name":"A_Undefined101"}, // 101 + {"type": "param", "name":"A_Undefined102"}, // 102 + {"type": "param", "name":"Chorus/Type"}, // 103 + {"type": "param", "name":"Chorus/Mix2"}, // 104 + {"type": "param", "name":"Chorus Mix"}, // 105 + {"type": "param", "name":"Chorus Rate"}, // 106 + {"type": "param", "name":"Chorus Depth"}, // 107 + {"type": "param", "name":"Chorus Delay"}, // 108 + {"type": "param", "name":"Chorus Feedback"}, // 109 + {"type": "param", "name":"Chorus Lfo Shape"}, // 110 + {"type": "param", "name":"Chorus/X Over"}, // 111 + {"type": "param", "name":"Delay Mode"}, // 112 + {"type": "param", "name":"Delay Send"}, // 113 + {"type": "param", "name":"Delay Time"}, // 114 + {"type": "param", "name":"Delay Feedback"}, // 115 + {"type": "param", "name":"Dly Rate / Rev Decay"}, // 116 + {"type": "param", "name":"Dly Depth "}, // 117 + {"type": "param", "name":"Reverb Damping"}, // 118 + {"type": "param", "name":"Delay Color"}, // 119 + {"type": "param", "name":"A_Undefined120"}, // 120 + {"type": "param", "name":"A_Undefined121"}, // 121 + {"type": "param", "name":"Keyb Local"}, // 122 + {"type": "param", "name":"All Notes Off"}, // 123 + {"type": "param", "name":"A_Undefined124"}, // 124 + {"type": "param", "name":"A_Undefined125"}, // 125 + {"type": "param", "name":"A_Undefined126"}, // 126 + {"type": "param", "name":"A_Undefined127"}, // 127 + + {"type": "param", "name":"B_Undefined0"}, // 0 + {"type": "param", "name":"B_Undefined1"}, // 1 + {"type": "param", "name":"Arp Pattern Selct"}, // 2 + {"type": "param", "name":"Arp Octave Range"}, // 3 + {"type": "param", "name":"Arp Hold Enable"}, // 4 + {"type": "param", "name":"Arp Note Length"}, // 5 + {"type": "param", "name":"Arp Swing"}, // 6 + {"type": "param", "name":"Lfo3 Rate"}, // 7 + {"type": "param", "name":"Lfo3 Shape"}, // 8 + {"type": "param", "name":"Lfo3 Mode"}, // 9 + {"type": "param", "name":"Lfo3 Keyfollow"}, // 10 + {"type": "param", "name":"Lfo3 Destination"}, // 11 + {"type": "param", "name":"Osc Lfo3 Amount"}, // 12 + {"type": "param", "name":"Lfo3 Fade-In Time"}, // 13 + {"type": "param", "name":"B_Undefined14"}, // 14 + {"type": "param", "name":"Arp Mode"}, // 15 + {"type": "param", "name":"Clock Tempo"}, // 16 + {"type": "param", "name":"Arp Clock"}, // 17 + {"type": "param", "name":"Lfo1 Clock"}, // 18 + {"type": "param", "name":"Lfo2 Clock"}, // 19 + {"type": "param", "name":"Delay Clock"}, // 20 + {"type": "param", "name":"Lfo3 Clock"}, // 21 + {"type": "param", "name":"B_Undefined22"}, // 22 + {"type": "param", "name":"B_Undefined23"}, // 23 + {"type": "param", "name":"B_Undefined24"}, // 24 + {"type": "param", "name":"Control Smooth Mode"}, // 25 + {"type": "param", "name":"Bender Range Up"}, // 26 + {"type": "param", "name":"Bender Range Down"}, // 27 + {"type": "param", "name":"Bender Scale"}, // 28 + {"type": "param", "name":"B_Undefined29"}, // 29 + {"type": "param", "name":"Filter1 Env Polarity"}, // 30 + {"type": "param", "name":"Filter2 Env Polarity"}, // 31 + {"type": "param", "name":"Filter2 Cutoff Link"}, // 32 + {"type": "param", "name":"Filter Keytrack Base"}, // 33 + {"type": "param", "name":"Osc FM Mode"}, // 34 + {"type": "param", "name":"Osc Init Phase"}, // 35 + {"type": "param", "name":"Punch Intensity"}, // 36 + {"type": "param", "name":"B_Undefined37"}, // 37 + {"type": "param", "name":"Input Follower Mode"}, // 38 + {"type": "param", "name":"Vocoder Mode"}, // 39 + {"type": "param", "name":"B_Undefined40"}, // 40 + {"type": "param", "name":"Osc3 Mode"}, // 41 + {"type": "param", "name":"Osc3 Volume"}, // 42 + {"type": "param", "name":"Osc3 Semitone"}, // 43 + {"type": "param", "name":"Osc3 Detune"}, // 44 + {"type": "param", "name":"LowEQ Frequency"}, // 45 + {"type": "param", "name":"HighEQ Frequency"}, // 46 + {"type": "param", "name":"Osc1 Shape Velocity"}, // 47 + {"type": "param", "name":"Osc2 Shape Velocity"}, // 48 + {"type": "param", "name":"PulseWidth Velocity"}, // 49 + {"type": "param", "name":"Fm Amount Velocity"}, // 50 + {"type": "param", "name":"Soft Knob1 ShortName"}, // 51 + {"type": "param", "name":"Soft Knob2 ShortName"}, // 52 + {"type": "param", "name":"Soft Knob3 ShortName"}, // 53 + {"type": "param", "name":"Flt1 EnvAmt Velocity"}, // 54 + {"type": "param", "name":"Flt2 EnvAmt Velocity"}, // 55 + {"type": "param", "name":"Resonance1 Velocity"}, // 56 + {"type": "param", "name":"Resonance2 Velocity"}, // 57 + {"type": "param", "name":"Second Output Balance"}, // 58 + {"type": "param", "name":"B_Undefined59"}, // 59 + {"type": "param", "name":"Amp Velocity"}, // 60 + {"type": "param", "name":"Panorama Velocity"}, // 61 + {"type": "param", "name":"Soft Knob-1 Single"}, // 62 + {"type": "param", "name":"Soft Knob-2 Single"}, // 63 + {"type": "param", "name":"Assign1 Source"}, // 64 + {"type": "param", "name":"Assign1 Destination"}, // 65 + {"type": "param", "name":"Assign1 Amount"}, // 66 + {"type": "param", "name":"Assign2 Source"}, // 67 + {"type": "param", "name":"Assign2 Destination1"}, // 68 + {"type": "param", "name":"Assign2 Amount1"}, // 69 + {"type": "param", "name":"Assign2 Destination2"}, // 70 + {"type": "param", "name":"Assign2 Amount2"}, // 71 + {"type": "param", "name":"Assign3 Source"}, // 72 + {"type": "param", "name":"Assign3 Destination1"}, // 73 + {"type": "param", "name":"Assign3 Amount1"}, // 74 + {"type": "param", "name":"Assign3 Destination2"}, // 75 + {"type": "param", "name":"Assign3 Amount2"}, // 76 + {"type": "param", "name":"Assign3 Destination3"}, // 77 + {"type": "param", "name":"Assign3 Amount3"}, // 78 + {"type": "param", "name":"LFO1 Assign Dest"}, // 79 + {"type": "param", "name":"LFO1 Assign Amount"}, // 80 + {"type": "param", "name":"LFO2 Assign Dest"}, // 81 + {"type": "param", "name":"LFO2 Assign Amount"}, // 82 + {"type": "param", "name":"B_Undefined83"}, // 83 + {"type": "param", "name":"Phaser Mode"}, // 84 + {"type": "param", "name":"Phaser Mix"}, // 85 + {"type": "param", "name":"Phaser Rate"}, // 86 + {"type": "param", "name":"Phaser Depth"}, // 87 + {"type": "param", "name":"Phaser Frequency"}, // 88 + {"type": "param", "name":"Phaser Feedback"}, // 89 + {"type": "param", "name":"Phaser Spread"}, // 90 + {"type": "param", "name":"B_Undefined91"}, // 91 + {"type": "param", "name":"MidEQ Gain"}, // 92 + {"type": "param", "name":"MidEQ Frequency"}, // 93 + {"type": "param", "name":"MidEQ Q-Factor"}, // 94 + {"type": "param", "name":"LowEQ Gain"}, // 95 + {"type": "param", "name":"HighEQ Gain"}, // 96 + {"type": "param", "name":"Bass Intensity"}, // 97 + {"type": "param", "name":"Bass Tune"}, // 98 + {"type": "param", "name":"Input Ringmodulator"}, // 99 + {"type": "param", "name":"Distortion Curve"}, // 100 + {"type": "param", "name":"Distortion Intensity"}, // 101 + {"type": "param", "name":"B_Undefined102"}, // 102 + {"type": "param", "name":"Assign 4 Source"}, // 103 + {"type": "param", "name":"Assign 4 Destination"}, // 104 + {"type": "param", "name":"Assign 4 Amount"}, // 105 + {"type": "param", "name":"Assign 5 Source"}, // 106 + {"type": "param", "name":"Assign 5 Destination"}, // 107 + {"type": "param", "name":"Assign 5 Amount"}, // 108 + {"type": "param", "name":"Assign 6 Source"}, // 109 + {"type": "param", "name":"Assign 6 Destination"}, // 110 + {"type": "param", "name":"Assign 6 Amount"}, // 111 + {"type": "param", "name":"SingleName0"}, // 112 + {"type": "param", "name":"SingleName1"}, // 113 + {"type": "param", "name":"SingleName2"}, // 114 + {"type": "param", "name":"SingleName3"}, // 115 + {"type": "param", "name":"SingleName4"}, // 116 + {"type": "param", "name":"SingleName5"}, // 117 + {"type": "param", "name":"SingleName6"}, // 118 + {"type": "param", "name":"SingleName7"}, // 119 + {"type": "param", "name":"SingleName8"}, // 120 + {"type": "param", "name":"SingleName9"}, // 121 + {"type": "param", "name":"Filter Select"}, // 122 + {"type": "param", "name":"Category1"}, // 123 + {"type": "param", "name":"Category2"}, // 124 + {"type": "param", "name":"B_Undefined125"}, // 125 + {"type": "param", "name":"B_Undefined126"}, // 126 + {"type": "param", "name":"Oscillators/Select"}, // 127 + {"type": "checksum", "first": 5, "last": 264 }, + + {"type": "param", "name":"6E_Undefined0"}, // 0 + {"type": "param", "name":"Reverb Mode"}, // 1 + {"type": "param", "name":"Reverb Send"}, // 2 + {"type": "param", "name":"Reverb Type"}, // 3 + {"type": "param", "name":"Reverb Time"}, // 4 + {"type": "param", "name":"Reverb Damping"}, // 5 + {"type": "param", "name":"Reverb Color"}, // 6 + {"type": "param", "name":"Reverb Predelay"}, // 7 + {"type": "param", "name":"Reverb Clock"}, // 8 + {"type": "param", "name":"Reverb Feedback"}, // 9 + {"type": "param", "name":"Delay Type"}, // 10 + {"type": "param", "name":"6E_Undefined11"}, // 11 + {"type": "param", "name":"Delay Tape Delay Ratio"}, // 12 + {"type": "param", "name":"Delay Tape Delay Left Clock"}, // 13 + {"type": "param", "name":"Delay Tape Delay Right Clock"}, // 14 + {"type": "param", "name":"6E_Undefined15"}, // 15 + {"type": "param", "name":"6E_Undefined16"}, // 16 + {"type": "param", "name":"Delay Tape Delay Bandwidth"}, // 17 + {"type": "param", "name":"6E_Undefined18"}, // 18 + {"type": "param", "name":"Filter Bank/Type"}, // 19 + {"type": "param", "name":"Filter Bank/Mix"}, // 20 + {"type": "param", "name":"Filter Bank/Comb Frequency"}, // 21 + {"type": "param", "name":"Filter Bank/Stereo Phase"}, // 22 + {"type": "param", "name":"Filter Bank/Shape L"}, // 23 + {"type": "param", "name":"Filter Bank/Shape R"}, // 24 + {"type": "param", "name":"Filter Bank/Resonance"}, // 25 + {"type": "param", "name":"Character Type"}, // 26 + {"type": "param", "name":"6E_Undefined27"}, // 27 + {"type": "param", "name":"Soft Knobs/Destination 3"}, // 28 + {"type": "param", "name":"6E_Undefined29"}, // 29 + {"type": "param", "name":"Osc1 Mode"}, // 30 + {"type": "param", "name":"6E_Undefined31"}, // 31 + {"type": "param", "name":"6E_Undefined32"}, // 32 + {"type": "param", "name":"6E_Undefined33"}, // 33 + {"type": "param", "name":"6E_Undefined34"}, // 34 + {"type": "param", "name":"Osc2 Mode"}, // 35 + {"type": "param", "name":"6E_Undefined36"}, // 36 + {"type": "param", "name":"Osc1 Wavetable/Sync"}, // 37 + {"type": "param", "name":"6E_Undefined38"}, // 38 + {"type": "param", "name":"6E_Undefined39"}, // 39 + {"type": "param", "name":"6E_Undefined40"}, // 40 + {"type": "param", "name":"6E_Undefined41"}, // 41 + {"type": "param", "name":"Osc1 Wavetable/FormantShift"}, // 42 + {"type": "param", "name":"Osc1 Wavetable/Internal Detune"}, // 43 + {"type": "param", "name":"Osc1 Wavetable/Interpolation"}, // 44 + {"type": "param", "name":"6E_Undefined45"}, // 45 + {"type": "param", "name":"6E_Undefined46"}, // 46 + {"type": "param", "name":"6E_Undefined47"}, // 47 + {"type": "param", "name":"6E_Undefined48"}, // 48 + {"type": "param", "name":"6E_Undefined49"}, // 49 + {"type": "param", "name":"6E_Undefined50"}, // 50 + {"type": "param", "name":"6E_Undefined51"}, // 51 + {"type": "param", "name":"6E_Undefined52"}, // 52 + {"type": "param", "name":"6E_Undefined53"}, // 53 + {"type": "param", "name":"6E_Undefined54"}, // 54 + {"type": "param", "name":"6E_Undefined55"}, // 55 + {"type": "param", "name":"6E_Undefined56"}, // 56 + {"type": "param", "name":"Osc2 Wavetable/Sync"}, // 57 + {"type": "param", "name":"6E_Undefined58"}, // 58 + {"type": "param", "name":"6E_Undefined59"}, // 59 + {"type": "param", "name":"6E_Undefined60"}, // 60 + {"type": "param", "name":"6E_Undefined61"}, // 61 + {"type": "param", "name":"Osc2 Wavetable/FormantShift"}, // 62 + {"type": "param", "name":"Osc2 Wavetable/Internal Detune"}, // 63 + {"type": "param", "name":"Osc2 Wavetable/Interpolation"}, // 64 + {"type": "param", "name":"6E_Undefined65"}, // 65 + {"type": "param", "name":"6E_Undefined66"}, // 66 + {"type": "param", "name":"6E_Undefined67"}, // 67 + {"type": "param", "name":"6E_Undefined68"}, // 68 + {"type": "param", "name":"6E_Undefined69"}, // 69 + {"type": "param", "name":"Patch Distortion/Treble Booster"}, // 70 + {"type": "param", "name":"Patch Distortion/High Cut"}, // 71 + {"type": "param", "name":"Patch Distortion/Mix"}, // 72 + {"type": "param", "name":"Patch Distortion/Quality"}, // 73 + {"type": "param", "name":"Patch Distortion/Tone127"}, // 74 + {"type": "param", "name":"6E_Undefined75"}, // 75 + {"type": "param", "name":"6E_Undefined76"}, // 76 + {"type": "param", "name":"6E_Undefined77"}, // 77 + {"type": "param", "name":"6E_Undefined78"}, // 78 + {"type": "param", "name":"6E_Undefined79"}, // 79 + {"type": "param", "name":"Envelope 3/Attack"}, // 80 + {"type": "param", "name":"Envelope 3/Decay"}, // 81 + {"type": "param", "name":"Envelope 3/Sustain"}, // 82 + {"type": "param", "name":"Envelope 3/Sustain Time"}, // 83 + {"type": "param", "name":"Envelope 3/Release"}, // 84 + {"type": "param", "name":"Envelope 4/Attack"}, // 85 + {"type": "param", "name":"Envelope 4/Decay"}, // 86 + {"type": "param", "name":"Envelope 4/Sustain"}, // 87 + {"type": "param", "name":"Envelope 4/Sustain Time"}, // 88 + {"type": "param", "name":"Envelope 4/Release"}, // 89 + {"type": "param", "name":"Assign 1 Destination 2"}, // 90 + {"type": "param", "name":"Assign 1 Amount 2"}, // 91 + {"type": "param", "name":"Assign 1 Destination 3"}, // 92 + {"type": "param", "name":"Assign 1 Amount 3"}, // 93 + {"type": "param", "name":"Assign 2 Destination 3"}, // 94 + {"type": "param", "name":"Assign 2 Amount 3"}, // 95 + {"type": "param", "name":"Assign 4 Destination 2"}, // 96 + {"type": "param", "name":"Assign 4 Amount 2"}, // 97 + {"type": "param", "name":"Assign 4 Destination 3"}, // 98 + {"type": "param", "name":"Assign 4 Amount 3"}, // 99 + {"type": "param", "name":"Assign 5 Destination 2"}, // 100 + {"type": "param", "name":"Assign 5 Amount 2"}, // 101 + {"type": "param", "name":"Assign 5 Destination 3"}, // 102 + {"type": "param", "name":"Assign 5 Amount 3"}, // 103 + {"type": "param", "name":"Assign 6 Destination 2"}, // 104 + {"type": "param", "name":"Assign 6 Amount 2"}, // 105 + {"type": "param", "name":"Assign 6 Destination 3"}, // 106 + {"type": "param", "name":"Assign 6 Amount 3"}, // 107 + {"type": "param", "name":"6E_Undefined108"}, // 108 + {"type": "param", "name":"6E_Undefined109"}, // 109 + {"type": "param", "name":"LFO 1/BackupShape"}, // 110 + {"type": "param", "name":"LFO 2/BackupShape"}, // 111 + {"type": "param", "name":"LFO 3/BackupShape"}, // 112 + {"type": "param", "name":"6E_Undefined113"}, // 113 + {"type": "param", "name":"6E_Undefined114"}, // 114 + {"type": "param", "name":"Assigns/Slot Select"}, // 115 + {"type": "param", "name":"LFOs/Select"}, // 116 + {"type": "param", "name":"FX Upper/Select"}, // 117 + {"type": "param", "name":"FX Lower/Select"}, // 118 + {"type": "param", "name":"Oscillators/BackupKeyMode"}, // 119 + {"type": "param", "name":"6E_Undefined120"}, // 120 + {"type": "param", "name":"6E_Undefined121"}, // 121 + {"type": "param", "name":"Oscillators/BackupKeyMode"}, // 122 + {"type": "param", "name":"Arpeggiator/BackupMode"}, // 123 + {"type": "param", "name":"Osc 3/BackupMode"}, // 124 + {"type": "param", "name":"6E_Undefined125"}, // 125 + {"type": "param", "name":"6E_Undefined126"}, // 126 + {"type": "param", "name":"Arpeggiator/UserPatternLength"}, // 127 + + {"type": "param", "name":"Step 1 Length"}, // 0 + {"type": "param", "name":"Step 1 Velocity"}, // 1 + {"type": "param", "name":"Step 1 Bitfield"}, // 2 + {"type": "param", "name":"Step 2 Length"}, // 3 + {"type": "param", "name":"Step 2 Velocity"}, // 4 + {"type": "param", "name":"Step 2 Bitfield"}, // 5 + {"type": "param", "name":"Step 3 Length"}, // 6 + {"type": "param", "name":"Step 3 Velocity"}, // 7 + {"type": "param", "name":"Step 3 Bitfield"}, // 8 + {"type": "param", "name":"Step 4 Length"}, // 9 + {"type": "param", "name":"Step 4 Velocity"}, // 10 + {"type": "param", "name":"Step 4 Bitfield"}, // 11 + {"type": "param", "name":"Step 5 Length"}, // 12 + {"type": "param", "name":"Step 5 Velocity"}, // 13 + {"type": "param", "name":"Step 5 Bitfield"}, // 14 + {"type": "param", "name":"Step 6 Length"}, // 15 + {"type": "param", "name":"Step 6 Velocity"}, // 16 + {"type": "param", "name":"Step 6 Bitfield"}, // 17 + {"type": "param", "name":"Step 7 Length"}, // 18 + {"type": "param", "name":"Step 7 Velocity"}, // 19 + {"type": "param", "name":"Step 7 Bitfield"}, // 20 + {"type": "param", "name":"Step 8 Length"}, // 21 + {"type": "param", "name":"Step 8 Velocity"}, // 22 + {"type": "param", "name":"Step 8 Bitfield"}, // 23 + {"type": "param", "name":"Step 9 Length"}, // 24 + {"type": "param", "name":"Step 9 Velocity"}, // 25 + {"type": "param", "name":"Step 9 Bitfield"}, // 26 + {"type": "param", "name":"Step 10 Length"}, // 27 + {"type": "param", "name":"Step 10 Velocity"}, // 28 + {"type": "param", "name":"Step 10 Bitfield"}, // 29 + {"type": "param", "name":"Step 11 Length"}, // 30 + {"type": "param", "name":"Step 11 Velocity"}, // 31 + {"type": "param", "name":"Step 11 Bitfield"}, // 32 + {"type": "param", "name":"Step 12 Length"}, // 33 + {"type": "param", "name":"Step 12 Velocity"}, // 34 + {"type": "param", "name":"Step 12 Bitfield"}, // 35 + {"type": "param", "name":"Step 13 Length"}, // 36 + {"type": "param", "name":"Step 13 Velocity"}, // 37 + {"type": "param", "name":"Step 13 Bitfield"}, // 38 + {"type": "param", "name":"Step 14 Length"}, // 39 + {"type": "param", "name":"Step 14 Velocity"}, // 40 + {"type": "param", "name":"Step 14 Bitfield"}, // 41 + {"type": "param", "name":"Step 15 Length"}, // 42 + {"type": "param", "name":"Step 15 Velocity"}, // 43 + {"type": "param", "name":"Step 15 Bitfield"}, // 44 + {"type": "param", "name":"Step 16 Length"}, // 45 + {"type": "param", "name":"Step 16 Velocity"}, // 46 + {"type": "param", "name":"Step 16 Bitfield"}, // 47 + {"type": "param", "name":"Step 17 Length"}, // 48 + {"type": "param", "name":"Step 17 Velocity"}, // 49 + {"type": "param", "name":"Step 17 Bitfield"}, // 50 + {"type": "param", "name":"Step 18 Length"}, // 51 + {"type": "param", "name":"Step 18 Velocity"}, // 52 + {"type": "param", "name":"Step 18 Bitfield"}, // 53 + {"type": "param", "name":"Step 19 Length"}, // 54 + {"type": "param", "name":"Step 19 Velocity"}, // 55 + {"type": "param", "name":"Step 19 Bitfield"}, // 56 + {"type": "param", "name":"Step 20 Length"}, // 57 + {"type": "param", "name":"Step 20 Velocity"}, // 58 + {"type": "param", "name":"Step 20 Bitfield"}, // 59 + {"type": "param", "name":"Step 21 Length"}, // 60 + {"type": "param", "name":"Step 21 Velocity"}, // 61 + {"type": "param", "name":"Step 21 Bitfield"}, // 62 + {"type": "param", "name":"Step 22 Length"}, // 63 + {"type": "param", "name":"Step 22 Velocity"}, // 64 + {"type": "param", "name":"Step 22 Bitfield"}, // 65 + {"type": "param", "name":"Step 23 Length"}, // 66 + {"type": "param", "name":"Step 23 Velocity"}, // 67 + {"type": "param", "name":"Step 23 Bitfield"}, // 68 + {"type": "param", "name":"Step 24 Length"}, // 69 + {"type": "param", "name":"Step 24 Velocity"}, // 70 + {"type": "param", "name":"Step 24 Bitfield"}, // 71 + {"type": "param", "name":"Step 25 Length"}, // 72 + {"type": "param", "name":"Step 25 Velocity"}, // 73 + {"type": "param", "name":"Step 25 Bitfield"}, // 74 + {"type": "param", "name":"Step 26 Length"}, // 75 + {"type": "param", "name":"Step 26 Velocity"}, // 76 + {"type": "param", "name":"Step 26 Bitfield"}, // 77 + {"type": "param", "name":"Step 27 Length"}, // 78 + {"type": "param", "name":"Step 27 Velocity"}, // 79 + {"type": "param", "name":"Step 27 Bitfield"}, // 80 + {"type": "param", "name":"Step 28 Length"}, // 81 + {"type": "param", "name":"Step 28 Velocity"}, // 82 + {"type": "param", "name":"Step 28 Bitfield"}, // 83 + {"type": "param", "name":"Step 29 Length"}, // 84 + {"type": "param", "name":"Step 29 Velocity"}, // 85 + {"type": "param", "name":"Step 29 Bitfield"}, // 86 + {"type": "param", "name":"Step 30 Length"}, // 87 + {"type": "param", "name":"Step 30 Velocity"}, // 88 + {"type": "param", "name":"Step 30 Bitfield"}, // 89 + {"type": "param", "name":"Step 31 Length"}, // 90 + {"type": "param", "name":"Step 31 Velocity"}, // 91 + {"type": "param", "name":"Step 31 Bitfield"}, // 92 + {"type": "param", "name":"Step 32 Length"}, // 93 + {"type": "param", "name":"Step 32 Velocity"}, // 94 + {"type": "param", "name":"Step 32 Bitfield"}, // 95 + {"type": "param", "name":"6F_Undefined96"}, // 96 + {"type": "param", "name":"6F_Undefined97"}, // 97 + {"type": "param", "name":"6F_Undefined98"}, // 98 + {"type": "param", "name":"6F_Undefined99"}, // 99 + {"type": "param", "name":"6F_Undefined100"}, // 100 + {"type": "param", "name":"6F_Undefined101"}, // 101 + {"type": "param", "name":"6F_Undefined102"}, // 102 + {"type": "param", "name":"6F_Undefined103"}, // 103 + {"type": "param", "name":"6F_Undefined104"}, // 104 + {"type": "param", "name":"6F_Undefined105"}, // 105 + {"type": "param", "name":"6F_Undefined106"}, // 106 + {"type": "param", "name":"6F_Undefined107"}, // 107 + {"type": "param", "name":"6F_Undefined108"}, // 108 + {"type": "param", "name":"6F_Undefined109"}, // 109 + {"type": "param", "name":"6F_Undefined110"}, // 110 + {"type": "param", "name":"6F_Undefined111"}, // 111 + {"type": "param", "name":"6F_Undefined112"}, // 112 + {"type": "param", "name":"6F_Undefined113"}, // 113 + {"type": "param", "name":"6F_Undefined114"}, // 114 + {"type": "param", "name":"6F_Undefined115"}, // 115 + {"type": "param", "name":"6F_Undefined116"}, // 116 + {"type": "param", "name":"6F_Undefined117"}, // 117 + {"type": "param", "name":"6F_Undefined118"}, // 118 + {"type": "param", "name":"6F_Undefined119"}, // 119 + {"type": "param", "name":"Unison Mode"}, // 120 + {"type": "param", "name":"Unison Detune"}, // 121 + {"type": "param", "name":"Unison Pan Spread"}, // 122 + {"type": "param", "name":"Unison Lfo Phase"}, // 123 + {"type": "param", "name":"Input Mode"}, // 124 + {"type": "param", "name":"Input Select"}, // 125 + {"type": "param", "name":"Atomizer"}, // 126 + {"type": "param", "name":"6F_Undefined127"}, // 127 + {"type": "checksum", "first": 5, "last": 521 }, + {"type": "byte", "value": "f7"} + ], + "multidump": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "11"}, + {"type": "bank"}, + {"type": "program"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "param", "name":"MultiName0"}, + {"type": "param", "name":"MultiName1"}, + {"type": "param", "name":"MultiName2"}, + {"type": "param", "name":"MultiName3"}, + {"type": "param", "name":"MultiName4"}, + {"type": "param", "name":"MultiName5"}, + {"type": "param", "name":"MultiName6"}, + {"type": "param", "name":"MultiName7"}, + {"type": "param", "name":"MultiName8"}, + {"type": "param", "name":"MultiName9"}, + {"type": "null"}, + {"type": "param", "name":"Clock Tempo"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "param", "name":"Part Bank Select", "part":0}, + {"type": "param", "name":"Part Bank Select", "part":1}, + {"type": "param", "name":"Part Bank Select", "part":2}, + {"type": "param", "name":"Part Bank Select", "part":3}, + {"type": "param", "name":"Part Bank Select", "part":4}, + {"type": "param", "name":"Part Bank Select", "part":5}, + {"type": "param", "name":"Part Bank Select", "part":6}, + {"type": "param", "name":"Part Bank Select", "part":7}, + {"type": "param", "name":"Part Bank Select", "part":8}, + {"type": "param", "name":"Part Bank Select", "part":9}, + {"type": "param", "name":"Part Bank Select", "part":10}, + {"type": "param", "name":"Part Bank Select", "part":11}, + {"type": "param", "name":"Part Bank Select", "part":12}, + {"type": "param", "name":"Part Bank Select", "part":13}, + {"type": "param", "name":"Part Bank Select", "part":14}, + {"type": "param", "name":"Part Bank Select", "part":15}, + {"type": "param", "name":"Part Program Change", "part":0}, + {"type": "param", "name":"Part Program Change", "part":1}, + {"type": "param", "name":"Part Program Change", "part":2}, + {"type": "param", "name":"Part Program Change", "part":3}, + {"type": "param", "name":"Part Program Change", "part":4}, + {"type": "param", "name":"Part Program Change", "part":5}, + {"type": "param", "name":"Part Program Change", "part":6}, + {"type": "param", "name":"Part Program Change", "part":7}, + {"type": "param", "name":"Part Program Change", "part":8}, + {"type": "param", "name":"Part Program Change", "part":9}, + {"type": "param", "name":"Part Program Change", "part":10}, + {"type": "param", "name":"Part Program Change", "part":11}, + {"type": "param", "name":"Part Program Change", "part":12}, + {"type": "param", "name":"Part Program Change", "part":13}, + {"type": "param", "name":"Part Program Change", "part":14}, + {"type": "param", "name":"Part Program Change", "part":15}, + {"type": "param", "name":"Part Midi Channel", "part":0}, + {"type": "param", "name":"Part Midi Channel", "part":1}, + {"type": "param", "name":"Part Midi Channel", "part":2}, + {"type": "param", "name":"Part Midi Channel", "part":3}, + {"type": "param", "name":"Part Midi Channel", "part":4}, + {"type": "param", "name":"Part Midi Channel", "part":5}, + {"type": "param", "name":"Part Midi Channel", "part":6}, + {"type": "param", "name":"Part Midi Channel", "part":7}, + {"type": "param", "name":"Part Midi Channel", "part":8}, + {"type": "param", "name":"Part Midi Channel", "part":9}, + {"type": "param", "name":"Part Midi Channel", "part":10}, + {"type": "param", "name":"Part Midi Channel", "part":11}, + {"type": "param", "name":"Part Midi Channel", "part":12}, + {"type": "param", "name":"Part Midi Channel", "part":13}, + {"type": "param", "name":"Part Midi Channel", "part":14}, + {"type": "param", "name":"Part Midi Channel", "part":15}, + {"type": "param", "name":"Part Low Key", "part":0}, + {"type": "param", "name":"Part Low Key", "part":1}, + {"type": "param", "name":"Part Low Key", "part":2}, + {"type": "param", "name":"Part Low Key", "part":3}, + {"type": "param", "name":"Part Low Key", "part":4}, + {"type": "param", "name":"Part Low Key", "part":5}, + {"type": "param", "name":"Part Low Key", "part":6}, + {"type": "param", "name":"Part Low Key", "part":7}, + {"type": "param", "name":"Part Low Key", "part":8}, + {"type": "param", "name":"Part Low Key", "part":9}, + {"type": "param", "name":"Part Low Key", "part":10}, + {"type": "param", "name":"Part Low Key", "part":11}, + {"type": "param", "name":"Part Low Key", "part":12}, + {"type": "param", "name":"Part Low Key", "part":13}, + {"type": "param", "name":"Part Low Key", "part":14}, + {"type": "param", "name":"Part Low Key", "part":15}, + {"type": "param", "name":"Part High Key", "part":0}, + {"type": "param", "name":"Part High Key", "part":1}, + {"type": "param", "name":"Part High Key", "part":2}, + {"type": "param", "name":"Part High Key", "part":3}, + {"type": "param", "name":"Part High Key", "part":4}, + {"type": "param", "name":"Part High Key", "part":5}, + {"type": "param", "name":"Part High Key", "part":6}, + {"type": "param", "name":"Part High Key", "part":7}, + {"type": "param", "name":"Part High Key", "part":8}, + {"type": "param", "name":"Part High Key", "part":9}, + {"type": "param", "name":"Part High Key", "part":10}, + {"type": "param", "name":"Part High Key", "part":11}, + {"type": "param", "name":"Part High Key", "part":12}, + {"type": "param", "name":"Part High Key", "part":13}, + {"type": "param", "name":"Part High Key", "part":14}, + {"type": "param", "name":"Part High Key", "part":15}, + {"type": "param", "name":"Part Transpose", "part":0}, + {"type": "param", "name":"Part Transpose", "part":1}, + {"type": "param", "name":"Part Transpose", "part":2}, + {"type": "param", "name":"Part Transpose", "part":3}, + {"type": "param", "name":"Part Transpose", "part":4}, + {"type": "param", "name":"Part Transpose", "part":5}, + {"type": "param", "name":"Part Transpose", "part":6}, + {"type": "param", "name":"Part Transpose", "part":7}, + {"type": "param", "name":"Part Transpose", "part":8}, + {"type": "param", "name":"Part Transpose", "part":9}, + {"type": "param", "name":"Part Transpose", "part":10}, + {"type": "param", "name":"Part Transpose", "part":11}, + {"type": "param", "name":"Part Transpose", "part":12}, + {"type": "param", "name":"Part Transpose", "part":13}, + {"type": "param", "name":"Part Transpose", "part":14}, + {"type": "param", "name":"Part Transpose", "part":15}, + {"type": "param", "name":"Part Detune", "part":0}, + {"type": "param", "name":"Part Detune", "part":1}, + {"type": "param", "name":"Part Detune", "part":2}, + {"type": "param", "name":"Part Detune", "part":3}, + {"type": "param", "name":"Part Detune", "part":4}, + {"type": "param", "name":"Part Detune", "part":5}, + {"type": "param", "name":"Part Detune", "part":6}, + {"type": "param", "name":"Part Detune", "part":7}, + {"type": "param", "name":"Part Detune", "part":8}, + {"type": "param", "name":"Part Detune", "part":9}, + {"type": "param", "name":"Part Detune", "part":10}, + {"type": "param", "name":"Part Detune", "part":11}, + {"type": "param", "name":"Part Detune", "part":12}, + {"type": "param", "name":"Part Detune", "part":13}, + {"type": "param", "name":"Part Detune", "part":14}, + {"type": "param", "name":"Part Detune", "part":15}, + {"type": "param", "name":"Part Volume", "part":0}, + {"type": "param", "name":"Part Volume", "part":1}, + {"type": "param", "name":"Part Volume", "part":2}, + {"type": "param", "name":"Part Volume", "part":3}, + {"type": "param", "name":"Part Volume", "part":4}, + {"type": "param", "name":"Part Volume", "part":5}, + {"type": "param", "name":"Part Volume", "part":6}, + {"type": "param", "name":"Part Volume", "part":7}, + {"type": "param", "name":"Part Volume", "part":8}, + {"type": "param", "name":"Part Volume", "part":9}, + {"type": "param", "name":"Part Volume", "part":10}, + {"type": "param", "name":"Part Volume", "part":11}, + {"type": "param", "name":"Part Volume", "part":12}, + {"type": "param", "name":"Part Volume", "part":13}, + {"type": "param", "name":"Part Volume", "part":14}, + {"type": "param", "name":"Part Volume", "part":15}, + {"type": "param", "name":"Part Midi Volume Init", "part":0}, + {"type": "param", "name":"Part Midi Volume Init", "part":1}, + {"type": "param", "name":"Part Midi Volume Init", "part":2}, + {"type": "param", "name":"Part Midi Volume Init", "part":3}, + {"type": "param", "name":"Part Midi Volume Init", "part":4}, + {"type": "param", "name":"Part Midi Volume Init", "part":5}, + {"type": "param", "name":"Part Midi Volume Init", "part":6}, + {"type": "param", "name":"Part Midi Volume Init", "part":7}, + {"type": "param", "name":"Part Midi Volume Init", "part":8}, + {"type": "param", "name":"Part Midi Volume Init", "part":9}, + {"type": "param", "name":"Part Midi Volume Init", "part":10}, + {"type": "param", "name":"Part Midi Volume Init", "part":11}, + {"type": "param", "name":"Part Midi Volume Init", "part":12}, + {"type": "param", "name":"Part Midi Volume Init", "part":13}, + {"type": "param", "name":"Part Midi Volume Init", "part":14}, + {"type": "param", "name":"Part Midi Volume Init", "part":15}, + {"type": "param", "name":"Part Output Select", "part":0}, + {"type": "param", "name":"Part Output Select", "part":1}, + {"type": "param", "name":"Part Output Select", "part":2}, + {"type": "param", "name":"Part Output Select", "part":3}, + {"type": "param", "name":"Part Output Select", "part":4}, + {"type": "param", "name":"Part Output Select", "part":5}, + {"type": "param", "name":"Part Output Select", "part":6}, + {"type": "param", "name":"Part Output Select", "part":7}, + {"type": "param", "name":"Part Output Select", "part":8}, + {"type": "param", "name":"Part Output Select", "part":9}, + {"type": "param", "name":"Part Output Select", "part":10}, + {"type": "param", "name":"Part Output Select", "part":11}, + {"type": "param", "name":"Part Output Select", "part":12}, + {"type": "param", "name":"Part Output Select", "part":13}, + {"type": "param", "name":"Part Output Select", "part":14}, + {"type": "param", "name":"Part Output Select", "part":15}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "param", "name":"Part Parameter/Panorama", "part":0}, + {"type": "param", "name":"Part Parameter/Panorama", "part":1}, + {"type": "param", "name":"Part Parameter/Panorama", "part":2}, + {"type": "param", "name":"Part Parameter/Panorama", "part":3}, + {"type": "param", "name":"Part Parameter/Panorama", "part":4}, + {"type": "param", "name":"Part Parameter/Panorama", "part":5}, + {"type": "param", "name":"Part Parameter/Panorama", "part":6}, + {"type": "param", "name":"Part Parameter/Panorama", "part":7}, + {"type": "param", "name":"Part Parameter/Panorama", "part":8}, + {"type": "param", "name":"Part Parameter/Panorama", "part":9}, + {"type": "param", "name":"Part Parameter/Panorama", "part":10}, + {"type": "param", "name":"Part Parameter/Panorama", "part":11}, + {"type": "param", "name":"Part Parameter/Panorama", "part":12}, + {"type": "param", "name":"Part Parameter/Panorama", "part":13}, + {"type": "param", "name":"Part Parameter/Panorama", "part":14}, + {"type": "param", "name":"Part Parameter/Panorama", "part":15}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "null"}, + {"type": "param", "name":"Part Enable", "part":0, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":0, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":0, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":0, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":0, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":0, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":1, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":1, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":1, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":1, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":1, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":1, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":2, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":2, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":2, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":2, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":2, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":2, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":3, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":3, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":3, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":3, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":3, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":3, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":4, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":4, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":4, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":4, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":4, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":4, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":5, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":5, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":5, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":5, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":5, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":5, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":6, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":6, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":6, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":6, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":6, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":6, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":7, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":7, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":7, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":7, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":7, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":7, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":8, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":8, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":8, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":8, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":8, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":8, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":9, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":9, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":9, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":9, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":9, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":9, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":10, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":10, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":10, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":10, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":10, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":10, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":11, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":11, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":11, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":11, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":11, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":11, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":12, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":12, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":12, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":12, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":12, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":12, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":13, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":13, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":13, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":13, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":13, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":13, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":14, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":14, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":14, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":14, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":14, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":14, "mask":"01", "shift":"6"}, + + {"type": "param", "name":"Part Enable", "part":15, "mask":"01", "shift":"0"}, + {"type": "param", "name":"Part Midi Volume Enable", "part":15, "mask":"01", "shift":"1"}, + {"type": "param", "name":"Part Hold Pedal Enable", "part":15, "mask":"01", "shift":"2"}, + {"type": "param", "name":"Keyb To Midi", "part":15, "mask":"01", "shift":"3"}, + {"type": "param", "name":"Note Steal Priority", "part":15, "mask":"01", "shift":"5"}, + {"type": "param", "name":"Part Prog Change Enable", "part":15, "mask":"01", "shift":"6"}, + + {"type": "checksum", "first": 5, "last": 264 }, + {"type": "byte", "value": "f7"} + ], + "singledump_C": [ + {"type": "byte", "value": "f0"}, + {"type": "byte", "value": "00"}, + {"type": "byte", "value": "20"}, + {"type": "byte", "value": "33"}, + {"type": "byte", "value": "01"}, + {"type": "deviceid"}, + {"type": "byte", "value": "10"}, + {"type": "bank"}, + {"type": "program"}, + + {"type": "param", "name":"Version"}, // 0 + {"type": "param", "name":"Modulation Wheel"}, // 1 + {"type": "param", "name":"Breath Controller"}, // 2 + {"type": "param", "name":"Contr 3"}, // 3 + {"type": "param", "name":"Foot Controller"}, // 4 + {"type": "param", "name":"Portamento Time"}, // 5 + {"type": "param", "name":"Data Slider"}, // 6 + {"type": "param", "name":"Channel Volume"}, // 7 + {"type": "param", "name":"Balance"}, // 8 + {"type": "param", "name":"Contr 9"}, // 9 + {"type": "param", "name":"Panorama"}, // 10 + {"type": "param", "name":"Expression"}, // 11 + {"type": "param", "name":"Contr 12"}, // 12 + {"type": "param", "name":"Contr 13"}, // 13 + {"type": "param", "name":"Contr 14"}, // 14 + {"type": "param", "name":"Contr 15"}, // 15 + {"type": "param", "name":"Contr 16"}, // 16 + {"type": "param", "name":"Osc1 Shape"}, // 17 + {"type": "param", "name":"Osc1 Pulsewidth"}, // 18 + {"type": "param", "name":"Osc1 Wave Select"}, // 19 + {"type": "param", "name":"Osc1 Semitone"}, // 20 + {"type": "param", "name":"Osc1 Keyfollow"}, // 21 + {"type": "param", "name":"Osc2 Shape"}, // 22 + {"type": "param", "name":"Osc2 Pulsewidth"}, // 23 + {"type": "param", "name":"Osc2 Wave Select"}, // 24 + {"type": "param", "name":"Osc2 Semitone"}, // 25 + {"type": "param", "name":"Osc2 Detune"}, // 26 + {"type": "param", "name":"Osc2 FM Amount"}, // 27 + {"type": "param", "name":"Osc2 Sync"}, // 28 + {"type": "param", "name":"Osc2 Filt Env Amt"}, // 29 + {"type": "param", "name":"FM Filt Env Amt"}, // 30 + {"type": "param", "name":"Osc2 Keyfollow"}, // 31 + {"type": "param", "name":"Bank Select"}, // 32 + {"type": "param", "name":"Osc Balance"}, // 33 + {"type": "param", "name":"Suboscillator Volume"}, // 34 + {"type": "param", "name":"Suboscillator Shape"}, // 35 + {"type": "param", "name":"Osc Mainvolume"}, // 36 + {"type": "param", "name":"Noise Volume"}, // 37 + {"type": "param", "name":"Ringmodulator Volume"}, // 38 + {"type": "param", "name":"Noise Color"}, // 39 + {"type": "param", "name":"Cutoff"}, // 40 + {"type": "param", "name":"Cutoff2"}, // 41 + {"type": "param", "name":"Filter1 Resonance"}, // 42 + {"type": "param", "name":"Filter2 Resonance"}, // 43 + {"type": "param", "name":"Filter1 Env Amt"}, // 44 + {"type": "param", "name":"Filter2 Env Amt"}, // 45 + {"type": "param", "name":"Filter1 Keyfollow"}, // 46 + {"type": "param", "name":"Filter2 Keyfollow"}, // 47 + {"type": "param", "name":"Filter Balance"}, // 48 + {"type": "param", "name":"Saturation Curve"}, // 49 + {"type": "null"}, // 50 + {"type": "param", "name":"Filter1 Mode"}, // 51 + {"type": "param", "name":"Filter2 Mode"}, // 52 + {"type": "param", "name":"Filter Routing"}, // 53 + {"type": "param", "name":"Filter Env Attack"}, // 54 + {"type": "param", "name":"Filter Env Decay"}, // 55 + {"type": "param", "name":"Filter Env Sustain"}, // 56 + {"type": "param", "name":"Filter Env Sustain Time"}, // 57 + {"type": "param", "name":"Filter Env Release"}, // 58 + {"type": "param", "name":"Amp Env Attack"}, // 59 + {"type": "param", "name":"Amp Env Decay"}, // 60 + {"type": "param", "name":"Amp Env Sustain"}, // 61 + {"type": "param", "name":"Amp Env Sustain Time"}, // 62 + {"type": "param", "name":"Amp Env Release"}, // 63 + {"type": "param", "name":"Hold Pedal"}, // 64 + {"type": "param", "name":"Portamento Pedal"}, // 65 + {"type": "param", "name":"Sostenuto Pedal"}, // 66 + {"type": "param", "name":"Lfo1 Rate"}, // 67 + {"type": "param", "name":"Lfo1 Shape"}, // 68 + {"type": "param", "name":"Lfo1 Env Mode"}, // 69 + {"type": "param", "name":"Lfo1 Mode"}, // 70 + {"type": "param", "name":"Lfo1 Symmetry"}, // 71 + {"type": "param", "name":"Lfo1 Keyfollow"}, // 72 + {"type": "param", "name":"Lfo1 Keytrigger"}, // 73 + {"type": "param", "name":"Osc1 Lfo1 Amount"}, // 74 + {"type": "param", "name":"Osc2 Lfo1 Amount"}, // 75 + {"type": "param", "name":"PW Lfo1 Amount"}, // 76 + {"type": "param", "name":"Reso Lfo1 Amount"}, // 77 + {"type": "param", "name":"FiltGain Lfo1 Amount"}, // 78 + {"type": "param", "name":"Lfo2 Rate"}, // 79 + {"type": "param", "name":"Lfo2 Shape"}, // 80 + {"type": "param", "name":"Lfo2 Env Mode"}, // 81 + {"type": "param", "name":"Lfo2 Mode"}, // 82 + {"type": "param", "name":"Lfo2 Symmetry"}, // 83 + {"type": "param", "name":"Lfo2 Keyfollow"}, // 84 + {"type": "param", "name":"Lfo2 Keytrigger"}, // 85 + {"type": "param", "name":"Shape Lfo2 Amount"}, // 86 + {"type": "param", "name":"FM Lfo2 Amount"}, // 87 + {"type": "param", "name":"Cutoff1 Lfo2 Amount"}, // 88 + {"type": "param", "name":"Cutoff2 Lfo2 Amount"}, // 89 + {"type": "param", "name":"Pan Lfo2 Amount"}, // 90 + {"type": "param", "name":"Patch Volume"}, // 91 + {"type": "param", "name":"A_Undefined92"}, // 92 + {"type": "param", "name":"Transpose"}, // 93 + {"type": "param", "name":"Key Mode"}, // 94 + {"type": "param", "name":"A_Undefined95"}, // 95 + {"type": "param", "name":"A_Undefined96"}, // 96 + {"type": "param", "name":"Unison Mode"}, // 97 + {"type": "param", "name":"Unison Detune"}, // 98 + {"type": "param", "name":"Unison Pan Spread"}, // 99 + {"type": "param", "name":"Unison Lfo Phase"}, // 100 + {"type": "param", "name":"Input Mode"}, // 101 + {"type": "param", "name":"Input Select"}, // 102 + {"type": "null"}, // 103 + {"type": "null"}, // 104 + {"type": "param", "name":"Chorus Mix"}, // 105 + {"type": "param", "name":"Chorus Rate"}, // 106 + {"type": "param", "name":"Chorus Depth"}, // 107 + {"type": "param", "name":"Chorus Delay"}, // 108 + {"type": "param", "name":"Chorus Feedback"}, // 109 + {"type": "param", "name":"Chorus Lfo Shape"}, // 110 + {"type": "null"}, // 111 + {"type": "param", "name":"Reverb Mode"}, // 112 + {"type": "param", "name":"Reverb Send"}, // 113 + {"type": "param", "name":"Delay Time"}, // 114 + {"type": "param", "name":"Delay Feedback"}, // 115 + {"type": "param", "name":"Dly Rate / Rev Decay"}, // 116 + {"type": "param", "name":"Dly Depth "}, // 117 + {"type": "param", "name":"Reverb Damping"}, // 118 + {"type": "param", "name":"Delay Color"}, // 119 + {"type": "param", "name":"A_Undefined120"}, // 120 + {"type": "param", "name":"A_Undefined121"}, // 121 + {"type": "param", "name":"Keyb Local"}, // 122 + {"type": "param", "name":"All Notes Off"}, // 123 + {"type": "param", "name":"A_Undefined124"}, // 124 + {"type": "param", "name":"A_Undefined125"}, // 125 + {"type": "param", "name":"A_Undefined126"}, // 126 + {"type": "param", "name":"A_Undefined127"}, // 127 + + {"type": "param", "name":"B_Undefined0"}, // 0 + {"type": "param", "name":"Arp Mode"}, // 1 + {"type": "param", "name":"Arp Pattern Selct"}, // 2 + {"type": "param", "name":"Arp Octave Range"}, // 3 + {"type": "param", "name":"Arp Hold Enable"}, // 4 + {"type": "param", "name":"Arp Note Length"}, // 5 + {"type": "param", "name":"Arp Swing"}, // 6 + {"type": "param", "name":"Lfo3 Rate"}, // 7 + {"type": "param", "name":"Lfo3 Shape"}, // 8 + {"type": "param", "name":"Lfo3 Mode"}, // 9 + {"type": "param", "name":"Lfo3 Keyfollow"}, // 10 + {"type": "param", "name":"Lfo3 Destination"}, // 11 + {"type": "param", "name":"Osc Lfo3 Amount"}, // 12 + {"type": "param", "name":"Lfo3 Fade-In Time"}, // 13 + {"type": "param", "name":"B_Undefined14"}, // 14 + { "type": "null" }, // 15 + {"type": "param", "name":"Clock Tempo"}, // 16 + {"type": "param", "name":"Arp Clock"}, // 17 + {"type": "param", "name":"Lfo1 Clock"}, // 18 + {"type": "param", "name":"Lfo2 Clock"}, // 19 + {"type": "param", "name":"Delay Clock"}, // 20 + {"type": "param", "name":"Lfo3 Clock"}, // 21 + {"type": "param", "name":"B_Undefined22"}, // 22 + {"type": "param", "name":"B_Undefined23"}, // 23 + {"type": "param", "name":"B_Undefined24"}, // 24 + {"type": "param", "name":"Control Smooth Mode"}, // 25 + {"type": "param", "name":"Bender Range Up"}, // 26 + {"type": "param", "name":"Bender Range Down"}, // 27 + {"type": "param", "name":"Bender Scale"}, // 28 + {"type": "param", "name":"B_Undefined29"}, // 29 + {"type": "param", "name":"Filter1 Env Polarity"}, // 30 + {"type": "param", "name":"Filter2 Env Polarity"}, // 31 + {"type": "param", "name":"Filter2 Cutoff Link"}, // 32 + {"type": "param", "name":"Filter Keytrack Base"}, // 33 + {"type": "param", "name":"Osc FM Mode"}, // 34 + {"type": "param", "name":"Osc Init Phase"}, // 35 + {"type": "param", "name":"Punch Intensity"}, // 36 + {"type": "param", "name":"B_Undefined37"}, // 37 + {"type": "param", "name":"Input Follower Mode"}, // 38 + {"type": "param", "name":"Vocoder Mode"}, // 39 + {"type": "param", "name":"B_Undefined40"}, // 40 + {"type": "param", "name":"Osc3 Mode"}, // 41 + {"type": "param", "name":"Osc3 Volume"}, // 42 + {"type": "param", "name":"Osc3 Semitone"}, // 43 + {"type": "param", "name":"Osc3 Detune"}, // 44 + {"type": "param", "name":"LowEQ Frequency"}, // 45 + {"type": "param", "name":"HighEQ Frequency"}, // 46 + {"type": "param", "name":"Osc1 Shape Velocity"}, // 47 + {"type": "param", "name":"Osc2 Shape Velocity"}, // 48 + {"type": "param", "name":"PulseWidth Velocity"}, // 49 + {"type": "param", "name":"Fm Amount Velocity"}, // 50 + {"type": "param", "name":"Soft Knob1 ShortName"}, // 51 + {"type": "param", "name":"Soft Knob2 ShortName"}, // 52 + { "type": "null" }, // 53 + {"type": "param", "name":"Flt1 EnvAmt Velocity"}, // 54 + {"type": "param", "name":"Flt2 EnvAmt Velocity"}, // 55 + {"type": "param", "name":"Resonance1 Velocity"}, // 56 + {"type": "param", "name":"Resonance2 Velocity"}, // 57 + {"type": "param", "name":"Second Output Balance"}, // 58 + {"type": "param", "name":"B_Undefined59"}, // 59 + {"type": "param", "name":"Amp Velocity"}, // 60 + {"type": "param", "name":"Panorama Velocity"}, // 61 + {"type": "param", "name":"Soft Knob-1 Single"}, // 62 + {"type": "param", "name":"Soft Knob-2 Single"}, // 63 + {"type": "param", "name":"Assign1 Source"}, // 64 + {"type": "param", "name":"Assign1 Destination"}, // 65 + {"type": "param", "name":"Assign1 Amount"}, // 66 + {"type": "param", "name":"Assign2 Source"}, // 67 + {"type": "param", "name":"Assign2 Destination1"}, // 68 + {"type": "param", "name":"Assign2 Amount1"}, // 69 + {"type": "param", "name":"Assign2 Destination2"}, // 70 + {"type": "param", "name":"Assign2 Amount2"}, // 71 + {"type": "param", "name":"Assign3 Source"}, // 72 + {"type": "param", "name":"Assign3 Destination1"}, // 73 + {"type": "param", "name":"Assign3 Amount1"}, // 74 + {"type": "param", "name":"Assign3 Destination2"}, // 75 + {"type": "param", "name":"Assign3 Amount2"}, // 76 + {"type": "param", "name":"Assign3 Destination3"}, // 77 + {"type": "param", "name":"Assign3 Amount3"}, // 78 + {"type": "param", "name":"LFO1 Assign Dest"}, // 79 + {"type": "param", "name":"LFO1 Assign Amount"}, // 80 + {"type": "param", "name":"LFO2 Assign Dest"}, // 81 + {"type": "param", "name":"LFO2 Assign Amount"}, // 82 + {"type": "param", "name":"B_Undefined83"}, // 83 + {"type": "param", "name":"Phaser Mode"}, // 84 + {"type": "param", "name":"Phaser Mix"}, // 85 + {"type": "param", "name":"Phaser Rate"}, // 86 + {"type": "param", "name":"Phaser Depth"}, // 87 + {"type": "param", "name":"Phaser Frequency"}, // 88 + {"type": "param", "name":"Phaser Feedback"}, // 89 + {"type": "param", "name":"Phaser Spread"}, // 90 + {"type": "param", "name":"B_Undefined91"}, // 91 + {"type": "param", "name":"MidEQ Gain"}, // 92 + {"type": "param", "name":"MidEQ Frequency"}, // 93 + {"type": "param", "name":"MidEQ Q-Factor"}, // 94 + {"type": "param", "name":"LowEQ Gain"}, // 95 + {"type": "param", "name":"HighEQ Gain"}, // 96 + {"type": "param", "name":"Bass Intensity"}, // 97 + {"type": "param", "name":"Bass Tune"}, // 98 + {"type": "param", "name":"Input Ringmodulator"}, // 99 + {"type": "param", "name":"Distortion Curve"}, // 100 + {"type": "param", "name":"Distortion Intensity"}, // 101 + {"type": "param", "name":"B_Undefined102"}, // 102 + {"type": "param", "name":"Assign 4 Source"}, // 103 + {"type": "param", "name":"Assign 4 Destination"}, // 104 + {"type": "param", "name":"Assign 4 Amount"}, // 105 + {"type": "param", "name":"Assign 5 Source"}, // 106 + {"type": "param", "name":"Assign 5 Destination"}, // 107 + {"type": "param", "name":"Assign 5 Amount"}, // 108 + {"type": "param", "name":"Assign 6 Source"}, // 109 + {"type": "param", "name":"Assign 6 Destination"}, // 110 + {"type": "param", "name":"Assign 6 Amount"}, // 111 + {"type": "param", "name":"SingleName0"}, // 112 + {"type": "param", "name":"SingleName1"}, // 113 + {"type": "param", "name":"SingleName2"}, // 114 + {"type": "param", "name":"SingleName3"}, // 115 + {"type": "param", "name":"SingleName4"}, // 116 + {"type": "param", "name":"SingleName5"}, // 117 + {"type": "param", "name":"SingleName6"}, // 118 + {"type": "param", "name":"SingleName7"}, // 119 + {"type": "param", "name":"SingleName8"}, // 120 + {"type": "param", "name":"SingleName9"}, // 121 + {"type": "param", "name":"Filter Select"}, // 122 + {"type": "param", "name":"Category1"}, // 123 + {"type": "param", "name":"Category2"}, // 124 + {"type": "param", "name":"B_Undefined125"}, // 125 + {"type": "param", "name":"B_Undefined126"}, // 126 + { "type": "null" }, // 127 + {"type": "checksum", "first": 5, "last": 264 }, + {"type": "byte", "value": "f7"} + ] + } +} diff --git a/source/jucePlugin/skins/TrancyTI/Digital.ttf b/source/jucePlugin/skins/TrancyTI/Digital.ttf Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/VirusTI_Trancy.json b/source/jucePlugin/skins/TrancyTI/VirusTI_Trancy.json @@ -0,0 +1,1398 @@ +{ + "name" : "Root", + "root" : { "x" : "0", "y" : "0", "width" : "2638", "height" : "1301", "scale" : "0.5"}, + "tabgroup": { + "name": "pages", + "buttons": ["button_1_main", "button_2_browser", "button_3_osc", "button_4_filter", "button_5_lfo", "button_6_matrix", "button_7_arp", "button_8_fx1", "button_9_fx2", "button_common"], + "pages": ["page_1_main", "page_2_browser", "page_3_osc", "page_4_filter", "page_5_lfo", "page_6_matrix", "page_7_arp", "page_8_fx1", "page_9_fx2", "page_common"] + }, + "children" : [ + + {"name":"bg","image":{"x":"0","y":"0","width":"2638","height":"1301","texture":"background"}}, + + {"name":"logolight","image":{"x":"65","y":"15","width":"475","height":"95","texture":"logo_light"}}, + {"name":"logo","image":{"x":"77","y":"25","width":"449","height":"71","texture":"logo"}}, + + + + {"name":"ContainerChannel16Enable","component" : { "x" : "80", "y" : "90", "width" : "472", "height" : "1093"}, "condition": { "enableOnParameter": "Play Mode", "enableOnValues": "1,2,3" }, + "children" : [ + { + "name":"ContainerChannel4","image" : { "x" : "0", "y" : "0", "width" : "472", "height" : "1093", "texture" : "background_channels_4" }, + "condition": { "enableOnKey": "deviceModel", "enableOnValues": "Snow" } + }, + { + "name":"ContainerChannel16","image" : { "x" : "0", "y" : "0", "width" : "472", "height" : "1093", "texture" : "background_channels_16" }, + "condition": { "enableOnKey": "deviceModel", "enableOnValues": "TI,TI2" } + } + + ] + }, + + {"name":"ContainerChannel16Enable","component" : { "x" : "80", "y" : "90", "width" : "472", "height" : "1093"}, "condition": { "enableOnParameter": "Play Mode", "enableOnValues": "0" }, + "children" : [ + { + "name":"ContainerChannel4","image" : { "x" : "0", "y" : "0", "width" : "472", "height" : "1093", "texture" : "background_channels_disable_4" }, + "condition": { "enableOnKey": "deviceModel", "enableOnValues": "Snow" } + }, + { + "name":"ContainerChannel16","image" : { "x" : "0", "y" : "0", "width" : "472", "height" : "1093", "texture" : "background_channels_disable_16" }, + "condition": { "enableOnKey": "deviceModel", "enableOnValues": "TI,TI2" } + } + + ] + }, + + { + "name":"ContainerChannel4","image" : { "x" : "103", "y" : "53", "width" : "29", "height" : "31", "texture" : "snow" }, + "condition": { "enableOnKey": "deviceModel", "enableOnValues": "Snow" } + }, + + + + {"name":"PatchName", "label":{"text":"Osc1Shape","textHeight":"25","alignH":"L","alignV":"C","fontFile":"Digital","fontName":"Register","x":"594","y":"1188","width":"400","height":"52"}}, + {"name":"FocusedParameterValue", "label":{"text":"-42","textHeight":"25","alignH":"R","alignV":"C","fontFile":"Digital","fontName":"Register","x":"1400","y":"1188","width":"256.7","height":"52"}}, + {"name":"FocusedParameterName", "label":{"text":"Osc","textHeight":"25","alignH":"L","alignV":"C","fontFile":"Digital","fontName":"Register","x":"830","y":"1188","width":"600","height":"52"}}, + {"name":"Menu", "button":{"normalImage":"0","overImage":"0","downImage":"1","disabledImage":"0","normalImageOn":"0","overImageOn":"0","downImageOn":"0","disabledImageOn":"0","x":"2314","y":"1175","width":"213","height":"69.5","texture":"button_menu","tileSizeX":"213","tileSizeY":"69.5"}}, + {"name":"PlayModeSingle", "button":{"isToggle":"1","radioGroupId":"5","normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"91","y":"1199","width":"213","height":"48","texture":"button_single","tileSizeX":"213","tileSizeY":"48"}}, + {"name":"PlayModeMulti", "button":{"isToggle":"1","radioGroupId":"5","normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"307","y":"1199","width":"213","height":"48","texture":"button_multi","tileSizeX":"213","tileSizeY":"48"}}, + {"name":"PresetPrev", "button":{"normalImage":"0","overImage":"0","downImage":"1","disabledImage":"0","normalImageOn":"0","overImageOn":"0","downImageOn":"0","disabledImageOn":"0","x":"1686","y":"1175","width":"88","height":"69.5","texture":"button_prev","tileSizeX":"88","tileSizeY":"69.5"}}, + {"name":"PresetNext", "button":{"normalImage":"0","overImage":"0","downImage":"1","disabledImage":"0","normalImageOn":"0","overImageOn":"0","downImageOn":"0","disabledImageOn":"0","x":"1783","y":"1175","width":"88","height":"69.5","texture":"button_next","tileSizeX":"88","tileSizeY":"69.5"}}, + {"name":"PresetSave", "button":{"normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"2097","y":"1175","width":"213","height":"69.5","texture":"button_save","tileSizeX":"218","tileSizeY":"69.5"}}, + {"name":"PresetLoad", "button":{"normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"1880","y":"1175","width":"213","height":"69.5","texture":"button_load","tileSizeX":"218","tileSizeY":"69.5"}}, + {"name":"button_1_main", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"576","y":"30","width":"191","height":"69.5","texture":"mainbutton_main","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_2_browser", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"773","y":"30","width":"191","height":"69.5","texture":"mainbutton_browser","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_3_osc", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"969","y":"30","width":"191","height":"69.5","texture":"mainbutton_osc","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_4_filter", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"1165","y":"30","width":"191","height":"69.5","texture":"mainbutton_filter","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_5_lfo", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"1360","y":"30","width":"191","height":"69.5","texture":"mainbutton_lfo","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_6_matrix", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"1556","y":"30","width":"191","height":"69.5","texture":"mainbutton_matrix","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_7_arp", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"1752","y":"30","width":"191","height":"69.5","texture":"mainbutton_arp","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_8_fx1", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"1948","y":"30","width":"191","height":"69.5","texture":"mainbutton_fx1","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_9_fx2", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"2144","y":"30","width":"191","height":"69.5","texture":"mainbutton_fx2","tileSizeX":"191","tileSizeY":"69.5",}}, + {"name":"button_common", "button":{"isToggle":"1","radioGroupId":"42","normalImage":"0","overImage":"1","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"2340","y":"30","width":"191","height":"69.5","texture":"mainbutton_common","tileSizeX":"191","tileSizeY":"69.5",}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"121","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"121","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"129","width":"58","height":"56.5","texture":"button_channel_1","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"136","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"129","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"187","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"187","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"195","width":"58","height":"56.5","texture":"button_channel_2","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"202","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"195","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"253","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"253","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"261","width":"58","height":"56.5","texture":"button_channel_3","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"268","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"261","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"319","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"319","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"327","width":"58","height":"56.5","texture":"button_channel_4","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"334","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"327","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"385","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"385","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"393","width":"58","height":"56.5","texture":"button_channel_5","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"400","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"393","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"451","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"451","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"459","width":"58","height":"56.5","texture":"button_channel_6","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"466","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"459","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"517","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"517","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"525","width":"58","height":"56.5","texture":"button_channel_7","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"532","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"525","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"583","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"583","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"591","width":"58","height":"56.5","texture":"button_channel_8","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"598","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"591","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"649","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"649","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"657","width":"58","height":"56.5","texture":"button_channel_9","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"664","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"657","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"715","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"715","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"723","width":"58","height":"56.5","texture":"button_channel_10","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"730","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"723","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"781","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"781","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"789","width":"58","height":"56.5","texture":"button_channel_11","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"796","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"789","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"847","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"847","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"855","width":"58","height":"56.5","texture":"button_channel_12","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"862","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"855","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"913","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"913","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"921","width":"58","height":"56.5","texture":"button_channel_13","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"928","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"921","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"979","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"979","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"987","width":"58","height":"56.5","texture":"button_channel_14","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"994","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"987","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"1045","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"1045","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"1053","width":"58","height":"56.5","texture":"button_channel_15","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"1060","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"1053","width":"58","height":"57","texture":"part_activity"}}, + + {"name":"PartVolume", "rotary":{},"spritesheet":{"x":"390","y":"1111","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"PartPan", "rotary":{},"spritesheet":{"x":"457","y":"1111","width":"70","height":"70","texture":"knob_small","tileSizeX":"70","tileSizeY":"70"}}, + {"name":"SelectPart", "button":{"isToggle":"1","radioGroupId":"16","normalImage":"0","downImage":"0","normalImageOn":"1","downImageOn":"1","x":"88","y":"1119","width":"58","height":"56.5","texture":"button_channel_16","tileSizeX":"58","tileSizeY":"56.5"}}, + {"name":"PresetName", "textbutton":{"text":"OvertureCK","textHeight":"28","x":"150","y":"1126","width":"176","height":"41", "alignH" : "L"}}, + {"name":"PartActive", "image":{"x":"88","y":"1119","width":"58","height":"57","texture":"part_activity"}}, + { + + "name" : "page_1_main", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_1_easy_edit" }, + "children" : [ + { "name" : "SoftKnob1Name", "parameterAttachment" : { "parameter" : "Soft Knob1 ShortName Main" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "173", "y" : "814", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SoftKnob2Name", "parameterAttachment" : { "parameter" : "Soft Knob2 ShortName Main" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "590", "y" : "814", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SoftKnob3Name", "parameterAttachment" : { "parameter" : "Soft Knob3 ShortName Main" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1007", "y" : "814", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "OscLevel", "parameterAttachment" : { "parameter" : "Osc Mainvolume" }, "rotary" : { }, "spritesheet" : { "x" : "149", "y" : "244", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "SubLevel", "parameterAttachment" : { "parameter" : "Suboscillator Volume" }, "rotary" : { }, "spritesheet" : { "x" : "397", "y" : "244", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "RingModLevel", "parameterAttachment" : { "parameter" : "Ringmodulator Volume" }, "rotary" : { }, "spritesheet" : { "x" : "643", "y" : "244", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "Cutoff", "parameterAttachment" : { "parameter" : "Cutoff" }, "rotary" : { }, "spritesheet" : { "x" : "974", "y" : "244", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "Resonance", "parameterAttachment" : { "parameter" : "Filter1 Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "1219", "y" : "244", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "SoftKnob1Value", "parameterAttachment" : { "parameter" : "Soft Knob Configuration/Value Softknob0" }, "rotary" : { }, "spritesheet" : { "x" : "59", "y" : "788", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "SoftKnob2Value", "parameterAttachment" : { "parameter" : "Soft Knob Configuration/Value Softknob1" }, "rotary" : { }, "spritesheet" : { "x" : "475", "y" : "788", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "SoftKnob3Value", "parameterAttachment" : { "parameter" : "Soft Knob Configuration/Value Softknob2" }, "rotary" : { }, "spritesheet" : { "x" : "891", "y" : "788", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + + { "name" : "Attack", "parameterAttachment" : { "parameter" : "Filter Env Attack" }, "rotary" : { }, "spritesheet" : { "x" : "1567", "y" : "263", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Decay", "parameterAttachment" : { "parameter" : "Filter Env Decay" }, "rotary" : { }, "spritesheet" : { "x" : "1723", "y" : "263", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "DelaySend", "parameterAttachment" : { "parameter" : "Delay Send" }, "rotary" : { }, "spritesheet" : { "x" : "1455", "y" : "789", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "DelayReverbSend", "parameterAttachment" : { "parameter" : "Reverb Send" }, "rotary" : { }, "spritesheet" : { "x" : "1613", "y" : "789", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "ChorusMix", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "0,1,4,5" }, + "parameterAttachment" : { "parameter" : "Chorus Mix" }, "rotary" : { }, "spritesheet" : { "x" : "1772", "y" : "789", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } + }, + { "name" : "ChorusMix", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "2,3,6" }, + "parameterAttachment" : { "parameter" : "Chorus/Mix2" }, "rotary" : { }, "spritesheet" : { "x" : "1772", "y" : "789", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } + }, + ] + }, + { + "name" : "page_2_browser", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_2_browser" }, + "children" : [ + { + "name" : "ContainerPatchManager", + "component" : { + "x" : "20", + "y" : "45", + "width" : "1925", + "height" : "960" + } + }, + ] + }, + { + "name" : "page_3_osc", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_3_osc" }, + "children" : [ + + { + "name" : "ContainerOsc2ModeHyperSaw", + "image" : { "x" : "658", "y" : "13", "width" : "660", "height" : "580", "texture" : "panel_3_osc_common_hs" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "1" }, + }, + { + "name" : "ContainerOsc2ModeHyperSaw", + "image" : { "x" : "658", "y" : "13", "width" : "660", "height" : "580", "texture" : "panel_3_osc_common" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "0,2,3,4,5,6,7,8" }, + }, + { + "name" : "ContainerOsc1ModeClassic", + "image" : { "x" : "24", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_classic" }, + "condition": { "enableOnParameter": "Osc1 Mode", "enableOnValues": "0" }, + "children" : [ + { "name" : "WaveSelect", "parameterAttachment" : { "parameter" : "Osc1 Wave Select" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "PulseWidth", "parameterAttachment" : { "parameter" : "Osc1 Pulsewidth" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Shape", "parameterAttachment" : { "parameter" : "Osc1 Shape" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + { + "name" : "ContainerOsc1ModeHyperSaw", + "image" : { "x" : "24", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_hypersaw" }, + "condition": { "enableOnParameter": "Osc1 Mode", "enableOnValues": "1" }, + "children" : [ + { "name" : "Osc1HyperSaw/DetuneSpread", "parameterAttachment" : { "parameter" : "Osc1 HyperSaw/DetuneSpread" }, "rotary" : { }, "spritesheet" : { "x" : "130", "y" : "130", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "Osc1HyperSaw/Density", "parameterAttachment" : { "parameter" : "Osc1 HyperSaw/Density" }, "rotary" : { }, "spritesheet" : { "x" : "353", "y" : "130", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + ] + }, + { + "name" : "ContainerOsc1ModeWavetable", + "image" : { "x" : "24", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_wavetable" }, + "condition": { "enableOnParameter": "Osc1 Mode", "enableOnValues": "2" }, + "children" : [ + { "name" : "Osc1Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc1Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + { + "name" : "ContainerOsc1ModeWavetable", + "image" : { "x" : "24", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_wave_pwm" }, + "condition": { "enableOnParameter": "Osc1 Mode", "enableOnValues": "3" }, + "children" : [ + { "name" : "Osc1Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc1Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/Internal Detune", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Internal Detune" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Pulsewidth", "parameterAttachment" : { "parameter" : "Osc1 Pulsewidth" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + { + "name" : "ContainerOsc1ModeGrainFormatSimple", + "image" : { "x" : "24", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_grain_simple" }, + "condition": { "enableOnParameter": "Osc1 Mode", "enableOnValues": "4,6" }, + "children" : [ + { "name" : "Osc1Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc1Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/FormantShift", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/FormantShift" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "174", "y" : "109", "width" : "286", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "286", "tileSizeY" : "63" } } + ] + }, + { + "name" : "ContainerOsc1ModeGrainFormatComplex", + "image" : { "x" : "24", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_grain_complex" }, + "condition": { "enableOnParameter": "Osc1 Mode", "enableOnValues": "5,7" }, + "children" : [ + { "name" : "Osc1Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc1Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/FormantShift", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/FormantShift" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "174", "y" : "109", "width" : "286", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "286", "tileSizeY" : "63" } }, + { "name" : "Osc1Wavetable/Internal Detune", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Internal Detune" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc1Wavetable/Sync", "parameterAttachment" : { "parameter" : "Osc1 Wavetable/Sync" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + + + { + "name" : "ContainerOsc2ModeClassic", + "image" : { "x" : "1317", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_classic" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "0" }, + "children" : [ + { "name" : "WaveSelect", "parameterAttachment" : { "parameter" : "Osc2 Wave Select" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "PulseWidth", "parameterAttachment" : { "parameter" : "Osc2 Pulsewidth" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Shape", "parameterAttachment" : { "parameter" : "Osc2 Shape" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + { + "name" : "ContainerOsc2ModeHyperSaw", + "image" : { "x" : "1317", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_hypersaw" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "1" }, + "children" : [ + { "name" : "Osc2HyperSaw/DetuneSpread", "parameterAttachment" : { "parameter" : "Osc2 HyperSaw/DetuneSpread" }, "rotary" : { }, "spritesheet" : { "x" : "130", "y" : "130", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "Osc2HyperSaw/Density", "parameterAttachment" : { "parameter" : "Osc2 HyperSaw/Density" }, "rotary" : { }, "spritesheet" : { "x" : "353", "y" : "130", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + ] + }, + { + "name" : "ContainerOsc2ModeWavetable", + "image" : { "x" : "1317", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_wavetable" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "2" }, + "children" : [ + { "name" : "Osc2Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc2Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + { + "name" : "ContainerOsc2ModeWavetable", + "image" : { "x" : "1317", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_wave_pwm" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "3" }, + "children" : [ + { "name" : "Osc2Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc2Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/Internal Detune", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Internal Detune" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Pulsewidth", "parameterAttachment" : { "parameter" : "Osc2 Pulsewidth" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + { + "name" : "ContainerOsc2ModeGrainFormatSimple", + "image" : { "x" : "1317", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_grain_simple" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "4,6" }, + "children" : [ + { "name" : "Osc2Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc2Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/FormantShift", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/FormantShift" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "174", "y" : "109", "width" : "286", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "286", "tileSizeY" : "63" } } + ] + }, + { + "name" : "ContainerOsc2ModeGrainFormatComplex", + "image" : { "x" : "1317", "y" : "44", "width" : "651", "height" : "621", "texture" : "panel_3_osc_grain_complex" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "5,7" }, + "children" : [ + { "name" : "Osc2Wavetable/WaveTableSelect", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableSelect" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "181", "y" : "211", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc2Wavetable/Interpolation", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Interpolation" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/WaveTableIndex", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/WaveTableIndex" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "187", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/FormantShift", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/FormantShift" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "174", "y" : "109", "width" : "286", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "286", "tileSizeY" : "63" } }, + { "name" : "Osc2Wavetable/Internal Detune", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Internal Detune" }, "rotary" : { }, "spritesheet" : { "x" : "498", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/Sync", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/Sync" }, "rotary" : { }, "spritesheet" : { "x" : "24", "y" : "32", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ] + }, + + { "name" : "Osc1Mode", "parameterAttachment" : { "parameter" : "Osc1 Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "202", "y" : "75", "width" : "223", "height" : "45", "offsetR" : "-10" } }, + { "name" : "Osc2Mode", "parameterAttachment" : { "parameter" : "Osc2 Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C","x" : "1495", "y" : "75", "width" : "223", "height" : "45", "offsetR" : "-10" } }, + + { + "name" : "ContainerOsc2Mode", + "image" : { "x" : "664", "y" : "56", "width" : "643", "height" : "476", "texture" : "dummy" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "0" }, + "children" : [ + { "name" : "Osc2 FM Amount", "parameterAttachment" : { "parameter" : "Osc2 FM Amount" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "330", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2 Filt Env Amt", "parameterAttachment" : { "parameter" : "Osc2 Filt Env Amt" }, "rotary" : { }, "spritesheet" : { "x" : "505", "y" : "20", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "FM Filt Env Amt", "parameterAttachment" : { "parameter" : "FM Filt Env Amt" }, "rotary" : { }, "spritesheet" : { "x" : "33", "y" : "330", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + ] + }, + { + "name" : "ContainerOsc2HyperSaw", + "image" : { "x" : "664", "y" : "56", "width" : "643", "height" : "476", "texture" : "dummy" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "1" }, + "children" : [ + { "name" : "Osc2 HyperSaw/CrossOscSyncFreq", "parameterAttachment" : { "parameter" : "Osc2 HyperSaw/CrossOscSyncFreq" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "330", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2 HyperSaw/FilterEnv>Pitch", "parameterAttachment" : { "parameter" : "Osc2 HyperSaw/FilterEnv > Pitch" }, "rotary" : { }, "spritesheet" : { "x" : "505", "y" : "20", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2 HyperSaw/FilterEnv>SyncFrequency", "parameterAttachment" : { "parameter" : "Osc2 HyperSaw/FilterEnv > SyncFrequency" }, "rotary" : { }, "spritesheet" : { "x" : "33", "y" : "330", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + ] + }, + { + "name" : "ContainerOsc2Wavetable", + "image" : { "x" : "664", "y" : "56", "width" : "643", "height" : "476", "texture" : "dummy" }, + "condition": { "enableOnParameter": "Osc2 Mode", "enableOnValues": "2,3,4,5,6,7" }, + "children" : [ + { "name" : "Osc2Wavetable/FM Amount", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/FM Amount" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "330", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/FilterEnv>Pitch", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/FilterEnv > Pitch" }, "rotary" : { }, "spritesheet" : { "x" : "505", "y" : "20", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Osc2Wavetable/FilterEnv>FM", "parameterAttachment" : { "parameter" : "Osc2 Wavetable/FilterEnv > FM" }, "rotary" : { }, "spritesheet" : { "x" : "33", "y" : "330", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + ] + }, + + { "name" : "Osc FM Mode", "parameterAttachment" : { "parameter" : "Osc FM Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "863", "y" : "412", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc3 Mode", "parameterAttachment" : { "parameter" : "Osc3 Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "55", "y" : "670", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "UnisonMode", "parameterAttachment" : { "parameter" : "Unison Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "55", "y" : "906", "width" : "223", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Osc2Sync", "parameterAttachment" : { "parameter" : "Osc2 Sync" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "669", "y" : "251", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "Subosc Shape", "parameterAttachment" : { "parameter" : "Suboscillator Shape" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "49", "y" : "388", "width" : "98", "height" : "96", "texture" : "button_sub", "tileSizeX" : "98", "tileSizeY" : "96" } }, + + { "name" : "Semitone", "parameterAttachment" : { "parameter" : "Osc1 Semitone" }, "rotary" : { }, "spritesheet" : { "x" : "208", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Keyfollow", "parameterAttachment" : { "parameter" : "Osc1 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "366", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Semitone", "parameterAttachment" : { "parameter" : "Osc2 Semitone" }, "rotary" : { }, "spritesheet" : { "x" : "1503", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Keyfollow", "parameterAttachment" : { "parameter" : "Osc2 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "1661", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + + { "name" : "Osc2 Detune", "parameterAttachment" : { "parameter" : "Osc2 Detune" }, "rotary" : { }, "spritesheet" : { "x" : "1345", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "PhaseInit", "parameterAttachment" : { "parameter" : "Osc Init Phase" }, "rotary" : { }, "spritesheet" : { "x" : "697", "y" : "76", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Portamento", "parameterAttachment" : { "parameter" : "Portamento Time" }, "rotary" : { }, "spritesheet" : { "x" : "1013", "y" : "76", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Semitone", "parameterAttachment" : { "parameter" : "Osc3 Semitone" }, "rotary" : { }, "spritesheet" : { "x" : "364", "y" : "645", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Detune", "parameterAttachment" : { "parameter" : "Osc3 Detune" }, "rotary" : { }, "spritesheet" : { "x" : "522", "y" : "645", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "UnisonDetune", "parameterAttachment" : { "parameter" : "Unison Detune" }, "rotary" : { }, "spritesheet" : { "x" : "364", "y" : "882", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "UnisonPanSpread", "parameterAttachment" : { "parameter" : "Unison Pan Spread" }, "rotary" : { }, "spritesheet" : { "x" : "522", "y" : "882", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "UnisonPhase", "parameterAttachment" : { "parameter" : "Unison Lfo Phase" }, "rotary" : { }, "spritesheet" : { "x" : "680", "y" : "882", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "NoiseColor", "parameterAttachment" : { "parameter" : "Noise Color" }, "rotary" : { }, "spritesheet" : { "x" : "904", "y" : "645", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Punch", "parameterAttachment" : { "parameter" : "Punch Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "904", "y" : "882", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "VeloModOsc1Shape", "parameterAttachment" : { "parameter" : "Osc1 Shape Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "524", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "VeloModOsc2Shape", "parameterAttachment" : { "parameter" : "Osc2 Shape Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "1819", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "VeloModPW", "parameterAttachment" : { "parameter" : "PulseWidth Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "855", "y" : "76", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "VeloModFMAmount", "parameterAttachment" : { "parameter" : "Fm Amount Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "938", "y" : "250", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "OscBalance", "parameterAttachment" : { "parameter" : "Osc Balance" }, "rotary" : { "style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1137", "y" : "660", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "OscLevel", "parameterAttachment" : { "parameter" : "Osc Mainvolume" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1572", "y" : "660", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "Osc3Level", "parameterAttachment" : { "parameter" : "Osc3 Volume" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1137", "y" : "783", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "SubLevel", "parameterAttachment" : { "parameter" : "Suboscillator Volume" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1137", "y" : "897", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "NoiseLevel", "parameterAttachment" : { "parameter" : "Noise Volume" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1572", "y" : "783", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "RingModLevel", "parameterAttachment" : { "parameter" : "Ringmodulator Volume" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1572", "y" : "897", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } } + ] + }, + { + "name" : "page_4_filter", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_4_filter" }, + "children" : [ + { "name" : "Filter1Mode", "parameterAttachment" : { "parameter" : "Filter1 Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "218", "y" : "284", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "FilterRouting", "parameterAttachment" : { "parameter" : "Filter Routing" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "703", "y" : "284", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Filter2Mode", "parameterAttachment" : { "parameter" : "Filter2 Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1514", "y" : "284", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SaturationCurve", "parameterAttachment" : { "parameter" : "Saturation Curve" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1026", "y" : "284", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "KeytrackBase", "parameterAttachment" : { "parameter" : "Filter Keytrack Base" }, "combobox" : { "text" : "C3", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "866", "y" : "412", "width" : "245", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Env1Pol", "parameterAttachment" : { "parameter" : "Filter1 Env Polarity" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "140", "y" : "393", "width" : "79", "height" : "78", "texture" : "button_plus", "tileSizeX" : "79", "tileSizeY" : "78" }}, + { "name" : "Env2Pol", "parameterAttachment" : { "parameter" : "Filter2 Env Polarity" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "1434", "y" : "393", "width" : "79", "height" : "78", "texture" : "button_plus", "tileSizeX" : "79", "tileSizeY" : "78" }}, + { "name" : "LinkCutoff", "parameterAttachment" : { "parameter" : "Filter2 Cutoff Link" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "666", "y" : "56", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "LinkEnv", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "1090", "y" : "56", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "VeloModAmp", "parameterAttachment" : { "parameter" : "Amp Velocity" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1137", "y" : "782", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "VeloModPanorama", "parameterAttachment" : { "parameter" : "Panorama Velocity" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1572", "y" : "782", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "PatchVolume", "parameterAttachment" : { "parameter" : "Patch Volume" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1137", "y" : "660", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "Panorama", "parameterAttachment" : { "parameter" : "Panorama" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1572", "y" : "660", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "DelaySend", "parameterAttachment" : { "parameter" : "Delay Send" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1137", "y" : "896", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "ReverbSend", "parameterAttachment" : { "parameter" : "Reverb Send" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "1572", "y" : "896", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + + { "name" : "Cutoff1", "parameterAttachment" : { "parameter" : "Cutoff" }, "rotary" : { }, "spritesheet" : { "x" : "150", "y" : "80", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "Resonance1", "parameterAttachment" : { "parameter" : "Filter1 Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "381", "y" : "80", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "EnvAmount1", "parameterAttachment" : { "parameter" : "Filter1 Env Amt" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Keyfollow1", "parameterAttachment" : { "parameter" : "Filter1 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "524", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "ResVelo1", "parameterAttachment" : { "parameter" : "Resonance1 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "366", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "EnvVelo1", "parameterAttachment" : { "parameter" : "Flt1 EnvAmt Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "208", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + + { "name" : "Cutoff2", "parameterAttachment" : { "parameter" : "Cutoff2" }, "rotary" : { }, "spritesheet" : { "x" : "1447", "y" : "80", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "Resonance2", "parameterAttachment" : { "parameter" : "Filter2 Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "1672", "y" : "80", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" } }, + { "name" : "EnvAmount2", "parameterAttachment" : { "parameter" : "Filter2 Env Amt" }, "rotary" : { }, "spritesheet" : { "x" : "1345", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Keyfollow2", "parameterAttachment" : { "parameter" : "Filter2 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "1819", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "ResVelo2", "parameterAttachment" : { "parameter" : "Resonance2 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "1661", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "EnvVelo2", "parameterAttachment" : { "parameter" : "Flt2 EnvAmt Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "1503", "y" : "386", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + + { "name" : "FilterBalance", "parameterAttachment" : { "parameter" : "Filter Balance" }, "rotary" : {"style" : "LinearHorizontal" }, "spritesheet" : { "x" : "810", "y" : "143", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + + + { "name" : "4_filter_env_filter", "image" : { "x" : "0", "y" : "572", "width" : "1070", "height" : "217", "texture" : "panel_4_filter_env_filter" }, + "children" : [ + { "name" : "Attack", "parameterAttachment" : { "parameter" : "Filter Env Attack" }, "rotary" : { }, "spritesheet" : { "x" : "50" , "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Decay", "parameterAttachment" : { "parameter" : "Filter Env Decay" }, "rotary" : { }, "spritesheet" : { "x" : "208", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Sustain", "parameterAttachment" : { "parameter" : "Filter Env Sustain" }, "rotary" : { }, "spritesheet" : { "x" : "366", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Time", "parameterAttachment" : { "parameter" : "Filter Env Sustain Time" }, "rotary" : { }, "spritesheet" : { "x" : "524", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Release", "parameterAttachment" : { "parameter" : "Filter Env Release" }, "rotary" : { }, "spritesheet" : { "x" : "682", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ]}, + + { "name" : "4_filter_env_3", "image" : { "x" : "0", "y" : "572", "width" : "1070", "height" : "217", "texture" : "panel_4_filter_env_3" }, + "children" : [ + { "name" : "Attack", "parameterAttachment" : { "parameter" : "Envelope 3/Attack" }, "rotary" : { }, "spritesheet" : { "x" : "50" , "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Decay", "parameterAttachment" : { "parameter" : "Envelope 3/Decay" }, "rotary" : { }, "spritesheet" : { "x" : "208", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Sustain", "parameterAttachment" : { "parameter" : "Envelope 3/Sustain" }, "rotary" : { }, "spritesheet" : { "x" : "366", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Time", "parameterAttachment" : { "parameter" : "Envelope 3/Sustain Time" }, "rotary" : { }, "spritesheet" : { "x" : "524", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Release", "parameterAttachment" : { "parameter" : "Envelope 3/Release" }, "rotary" : { }, "spritesheet" : { "x" : "682", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ]}, + + { "name" : "4_filter_env_4", "image" : { "x" : "0", "y" : "572", "width" : "1070", "height" : "217", "texture" : "panel_4_filter_env_4" }, + "children" : [ + { "name" : "Attack", "parameterAttachment" : { "parameter" : "Envelope 4/Attack" }, "rotary" : { }, "spritesheet" : { "x" : "50" , "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Decay", "parameterAttachment" : { "parameter" : "Envelope 4/Decay" }, "rotary" : { }, "spritesheet" : { "x" : "208", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Sustain", "parameterAttachment" : { "parameter" : "Envelope 4/Sustain" }, "rotary" : { }, "spritesheet" : { "x" : "366", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Time", "parameterAttachment" : { "parameter" : "Envelope 4/Sustain Time" }, "rotary" : { }, "spritesheet" : { "x" : "524", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Release", "parameterAttachment" : { "parameter" : "Envelope 4/Release" }, "rotary" : { }, "spritesheet" : { "x" : "682", "y" : "72", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ]}, + + { "name" : "button_env_filter", "button":{"isToggle":"1","radioGroupId":"77","normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"825","y":"606","width":"79","height":"78","texture":"button_1","tileSizeX":"79","tileSizeY":"78",}}, + { "name" : "button_env_3", "button":{"isToggle":"1","radioGroupId":"77","normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"825","y":"661","width":"79","height":"78","texture":"button_1","tileSizeX":"79","tileSizeY":"78",}}, + { "name" : "button_env_4", "button":{"isToggle":"1","radioGroupId":"77","normalImage":"0","overImage":"0","downImage":"1","normalImageOn":"1","overImageOn":"1","downImageOn":"1","x":"825","y":"716","width":"79","height":"78","texture":"button_1","tileSizeX":"79","tileSizeY":"78",}}, + + { "name" : "Attack", "parameterAttachment" : { "parameter" : "Amp Env Attack" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "881", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Decay", "parameterAttachment" : { "parameter" : "Amp Env Decay" }, "rotary" : { }, "spritesheet" : { "x" : "208", "y" : "881", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Sustain", "parameterAttachment" : { "parameter" : "Amp Env Sustain" }, "rotary" : { }, "spritesheet" : { "x" : "366", "y" : "881", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Time", "parameterAttachment" : { "parameter" : "Amp Env Sustain Time" }, "rotary" : { }, "spritesheet" : { "x" : "524", "y" : "881", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Release", "parameterAttachment" : { "parameter" : "Amp Env Release" }, "rotary" : { }, "spritesheet" : { "x" : "682", "y" : "881", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } } + ], + "tabgroup": { + "name": "envelopeSelect", + "buttons": ["button_env_filter", "button_env_3", "button_env_4"], + "pages": ["4_filter_env_filter", "4_filter_env_3", "4_filter_env_4"] + }, + "controllerlinks": [ + { "source": "Resonance1", "dest": "Resonance2", "condition":"LinkEnv" }, { "source": "Resonance2", "dest": "Resonance1", "condition":"LinkEnv" }, + { "source": "EnvAmount1", "dest": "EnvAmount2", "condition":"LinkEnv" }, { "source": "EnvAmount2", "dest": "EnvAmount1", "condition":"LinkEnv" }, + { "source": "Keyfollow1", "dest": "Keyfollow2", "condition":"LinkEnv" }, { "source": "Keyfollow2", "dest": "Keyfollow1", "condition":"LinkEnv" } + ] + }, + { + "name" : "page_5_lfo", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_5_lfo" }, + "children" : [ + + {"name":"Lfo1LedOn","image":{"x":"35","y":"62" ,"width":"164","height":"164","texture":"led_on"}}, + {"name":"Lfo2LedOn","image":{"x":"35","y":"456","width":"164","height":"164","texture":"led_on"}}, + {"name":"Lfo3LedOn","image":{"x":"35","y":"849","width":"164","height":"164","texture":"led_on"}}, + + { "name" : "LfoClock", "parameterAttachment" : { "parameter" : "Lfo1 Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "732", "y" : "255", "width" : "245", "height" : "45", "offsetR" : "-60" } }, + { "name" : "LfoShape", "parameterAttachment" : { "parameter" : "Lfo1 Shape" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "732", "y" : "100", "width" : "245", "height" : "45", "offsetR" : "-60" } }, + { "name" : "LfoAssignDest", "parameterAttachment" : { "parameter" : "LFO1 Assign Dest" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1522", "y" : "250", "width" : "360", "height" : "45", "offsetR" : "-60" } }, + { "name" : "LfoClock", "parameterAttachment" : { "parameter" : "Lfo2 Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "732", "y" : "644", "width" : "245", "height" : "45", "offsetR" : "-60" } }, + { "name" : "LfoShape", "parameterAttachment" : { "parameter" : "Lfo2 Shape" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "732", "y" : "493", "width" : "245", "height" : "45", "offsetR" : "-60" } }, + { "name" : "LfoAssignDest", "parameterAttachment" : { "parameter" : "LFO2 Assign Dest" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1522", "y" : "643", "width" : "360", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Lfo3Clock", "parameterAttachment" : { "parameter" : "Lfo3 Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "983", "y" : "892", "width" : "245", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Lfo3Shape", "parameterAttachment" : { "parameter" : "Lfo3 Shape" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "697", "y" : "892", "width" : "245", "height" : "45", "offsetR" : "-60" } }, + { "name" : "Lfo3Destination", "parameterAttachment" : { "parameter" : "Lfo3 Destination" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1522", "y" : "892", "width" : "360", "height" : "45", "offsetR" : "-60" } }, + { "name" : "LfoOscPitchLink", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "1256", "y" : "92", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "LfoEnvMode", "parameterAttachment" : { "parameter" : "Lfo1 Env Mode" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "476", "y" : "240", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "LfoMode", "parameterAttachment" : { "parameter" : "Lfo1 Mode" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "518", "y" : "77", "width" : "98", "height" : "96", "texture" : "button_mono_poly", "tileSizeX" : "98", "tileSizeY" : "96" } }, + { "name" : "LfoCutoffLink", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "1256", "y" : "487", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "LfoEnvMode", "parameterAttachment" : { "parameter" : "Lfo2 Env Mode" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "476", "y" : "627", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "LfoMode", "parameterAttachment" : { "parameter" : "Lfo2 Mode" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "523", "y" : "469", "width" : "98", "height" : "96", "texture" : "button_mono_poly", "tileSizeX" : "98", "tileSizeY" : "96" } }, + { "name" : "Lfo3Mode", "parameterAttachment" : { "parameter" : "Lfo3 Mode" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "523", "y" : "863", "width" : "98", "height" : "96", "texture" : "button_mono_poly", "tileSizeX" : "98", "tileSizeY" : "96" } }, + { "name" : "LfoRate", "parameterAttachment" : { "parameter" : "Lfo1 Rate" }, "rotary" : { }, "spritesheet" : { "x" : "48", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoKeyfollow", "parameterAttachment" : { "parameter" : "Lfo1 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "206", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoKeytrigger", "parameterAttachment" : { "parameter" : "Lfo1 Keytrigger" }, "rotary" : { }, "spritesheet" : { "x" : "364", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoSymmetry", "parameterAttachment" : { "parameter" : "Lfo1 Symmetry" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "64", "y" : "247", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "LfoOsc1Pitch", "parameterAttachment" : { "parameter" : "Osc1 Lfo1 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1169", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoOsc2Pitch", "parameterAttachment" : { "parameter" : "Osc2 Lfo1 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1327", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoPW12", "parameterAttachment" : { "parameter" : "PW Lfo1 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1485", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoReso12", "parameterAttachment" : { "parameter" : "Reso Lfo1 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1643", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoFilterGain", "parameterAttachment" : { "parameter" : "FiltGain Lfo1 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1801", "y" : "75", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoAssignAmount", "parameterAttachment" : { "parameter" : "LFO1 Assign Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1387", "y" : "224", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoRate", "parameterAttachment" : { "parameter" : "Lfo2 Rate" }, "rotary" : { }, "spritesheet" : { "x" : "48", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoKeyfollow", "parameterAttachment" : { "parameter" : "Lfo2 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "206", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoKeytrigger", "parameterAttachment" : { "parameter" : "Lfo2 Keytrigger" }, "rotary" : { }, "spritesheet" : { "x" : "364", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoSymmetry", "parameterAttachment" : { "parameter" : "Lfo2 Symmetry" }, "rotary" : { "style" : "LinearHorizontal" }, "spritesheet" : { "x" : "64", "y" : "632", "width" : "355", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + { "name" : "LfoFlt1Cutoff", "parameterAttachment" : { "parameter" : "Cutoff1 Lfo2 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1169", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoFlt2Cutoff", "parameterAttachment" : { "parameter" : "Cutoff2 Lfo2 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1327", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoPW12", "parameterAttachment" : { "parameter" : "Shape Lfo2 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1485", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoReso12", "parameterAttachment" : { "parameter" : "Pan Lfo2 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1643", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoFilterGain", "parameterAttachment" : { "parameter" : "FM Lfo2 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1801", "y" : "470", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "LfoAssignAmount", "parameterAttachment" : { "parameter" : "LFO2 Assign Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1387", "y" : "617", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Lfo3Rate", "parameterAttachment" : { "parameter" : "Lfo3 Rate" }, "rotary" : { }, "spritesheet" : { "x" : "48", "y" : "862", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Lfo3Keyfollow", "parameterAttachment" : { "parameter" : "Lfo3 Keyfollow" }, "rotary" : { }, "spritesheet" : { "x" : "206", "y" : "862", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "Lfo3FadeInTime", "parameterAttachment" : { "parameter" : "Lfo3 Fade-In Time" }, "rotary" : { }, "spritesheet" : { "x" : "364", "y" : "862", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "OscLfo3Amount", "parameterAttachment" : { "parameter" : "Osc Lfo3 Amount" }, "rotary" : { }, "spritesheet" : { "x" : "1387", "y" : "866", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + + ], + "controllerlinks": [ + { "source": "LfoOsc1Pitch", "dest": "LfoOsc2Pitch", "condition":"LfoOscPitchLink"}, + { "source": "LfoOsc2Pitch", "dest": "LfoOsc1Pitch", "condition":"LfoOscPitchLink"}, + { "source": "LfoFlt1Cutoff", "dest": "LfoFlt2Cutoff", "condition":"LfoCutoffLink"}, + { "source": "LfoFlt2Cutoff", "dest": "LfoFlt1Cutoff", "condition":"LfoCutoffLink"} + ] + }, + { + "name" : "page_6_matrix", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_6_matrix" }, + "children" : [ + { "name" : "Assign1Source", "parameterAttachment" : { "parameter" : "Assign1 Source" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "82", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign1Amount", "parameterAttachment" : { "parameter" : "Assign1 Amount" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "44", "y" : "181", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign2Amount", "parameterAttachment" : { "parameter" : "Assign 1 Amount 2" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "44", "y" : "281", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign3Amount", "parameterAttachment" : { "parameter" : "Assign 1 Amount 3" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "44", "y" : "381", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign1Dest", "parameterAttachment" : { "parameter" : "Assign1 Destination" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "190", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign2Dest", "parameterAttachment" : { "parameter" : "Assign 1 Destination 2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "288", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign3Dest", "parameterAttachment" : { "parameter" : "Assign 1 Destination 3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "388", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "Assign2Source", "parameterAttachment" : { "parameter" : "Assign2 Source" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "606", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign2Amount1", "parameterAttachment" : { "parameter" : "Assign2 Amount1" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "44", "y" : "705", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign2Amount2", "parameterAttachment" : { "parameter" : "Assign2 Amount2" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "44", "y" : "805", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign2Amount3", "parameterAttachment" : { "parameter" : "Assign 2 Amount 3" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "44", "y" : "905", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign2Dest1", "parameterAttachment" : { "parameter" : "Assign2 Destination1" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "714", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign2Dest2", "parameterAttachment" : { "parameter" : "Assign2 Destination2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "813", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign2Dest3", "parameterAttachment" : { "parameter" : "Assign 2 Destination 3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "321", "y" : "912", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "Assign3Source", "parameterAttachment" : { "parameter" : "Assign3 Source" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "82", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign3Amount1", "parameterAttachment" : { "parameter" : "Assign3 Amount1" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "702", "y" : "181", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign3Amount2", "parameterAttachment" : { "parameter" : "Assign3 Amount2" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "702", "y" : "281", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign3Amount3", "parameterAttachment" : { "parameter" : "Assign3 Amount3" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "702", "y" : "381", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign3Dest1", "parameterAttachment" : { "parameter" : "Assign3 Destination1" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "190", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign3Dest2", "parameterAttachment" : { "parameter" : "Assign3 Destination2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "288", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign3Dest3", "parameterAttachment" : { "parameter" : "Assign3 Destination3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "388", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "Assign4Source", "parameterAttachment" : { "parameter" : "Assign 4 Source" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "606", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign4Amount", "parameterAttachment" : { "parameter" : "Assign 4 Amount" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "702", "y" : "705", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign4Amount2", "parameterAttachment" : { "parameter" : "Assign 4 Amount 2" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "702", "y" : "805", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign4Amount3", "parameterAttachment" : { "parameter" : "Assign 4 Amount 3" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "702", "y" : "905", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign4Dest", "parameterAttachment" : { "parameter" : "Assign 4 Destination" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "714", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign4Dest2", "parameterAttachment" : { "parameter" : "Assign 4 Destination 2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "813", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign4Dest3", "parameterAttachment" : { "parameter" : "Assign 4 Destination 3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "980", "y" : "912", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "Assign5Source", "parameterAttachment" : { "parameter" : "Assign 5 Source" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "82", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign5Amount", "parameterAttachment" : { "parameter" : "Assign 5 Amount" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1361", "y" : "181", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign5Amount2", "parameterAttachment" : { "parameter" : "Assign 5 Amount 2" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1361", "y" : "281", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign5Amount3", "parameterAttachment" : { "parameter" : "Assign 5 Amount 3" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1361", "y" : "381", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign5Dest", "parameterAttachment" : { "parameter" : "Assign 5 Destination" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "190", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign5Dest2", "parameterAttachment" : { "parameter" : "Assign 5 Destination 2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "288", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign5Dest3", "parameterAttachment" : { "parameter" : "Assign 5 Destination 3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "388", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "Assign6Source", "parameterAttachment" : { "parameter" : "Assign 6 Source" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "606", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign6Amount", "parameterAttachment" : { "parameter" : "Assign 6 Amount" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1361", "y" : "705", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign6Amount2", "parameterAttachment" : { "parameter" : "Assign 6 Amount 2" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1361", "y" : "805", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign6Amount3", "parameterAttachment" : { "parameter" : "Assign 6 Amount 3" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1361", "y" : "905", "width" : "252", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "252", "tileSizeY" : "63" }}, + { "name" : "Assign6Dest", "parameterAttachment" : { "parameter" : "Assign 6 Destination" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "714", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign6Dest2", "parameterAttachment" : { "parameter" : "Assign 6 Destination 2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "813", "width" : "278", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Assign6Dest3", "parameterAttachment" : { "parameter" : "Assign 6 Destination 3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1637", "y" : "912", "width" : "278", "height" : "45", "offsetR" : "-60" }} + ] + }, + { + "name" : "page_7_arp", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_7_arp"}, + "children" : [ + { "name" : "ContainerArpGlobal", "condition": { "enableOnParameter": "Arp Mode", "enableOnValues": "1,2,3,4,5,6,7" }, "component" : { "x" : "0", "y" : "0", "width" : "1971", "height" : "1026"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "ContainerArpUser", "condition": { "enableOnParameter": "Arp Pattern Selct", "enableOnValues": "0" }, "component" : { "x" : "0", "y" : "0", "width" : "1971", "height" : "1026"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "ContainerArpUserEnable1", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "18", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step1Velocity", "parameterAttachment" : { "parameter" : "Step 1 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step1Length", "parameterAttachment" : { "parameter" : "Step 1 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "928", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step1Bitfield", "parameterAttachment" : { "parameter" : "Step 1 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_1", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step1Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_1", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable2", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "78", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step2Velocity", "parameterAttachment" : { "parameter" : "Step 2 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step2Length", "parameterAttachment" : { "parameter" : "Step 2 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step2Bitfield", "parameterAttachment" : { "parameter" : "Step 2 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_2", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step2Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_2", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable3", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "138", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step3Velocity", "parameterAttachment" : { "parameter" : "Step 3 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step3Length", "parameterAttachment" : { "parameter" : "Step 3 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step3Bitfield", "parameterAttachment" : { "parameter" : "Step 3 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_3", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step3Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_3", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable4", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "198", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step4Velocity", "parameterAttachment" : { "parameter" : "Step 4 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step4Length", "parameterAttachment" : { "parameter" : "Step 4 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step4Bitfield", "parameterAttachment" : { "parameter" : "Step 4 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_4", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step4Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_4", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable5", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "258", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step5Velocity", "parameterAttachment" : { "parameter" : "Step 5 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step5Length", "parameterAttachment" : { "parameter" : "Step 5 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step5Bitfield", "parameterAttachment" : { "parameter" : "Step 5 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_5", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step5Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_5", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable6", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "318", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step6Velocity", "parameterAttachment" : { "parameter" : "Step 6 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step6Length", "parameterAttachment" : { "parameter" : "Step 6 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step6Bitfield", "parameterAttachment" : { "parameter" : "Step 6 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_6", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step6Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_6", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable7", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "378", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step7Velocity", "parameterAttachment" : { "parameter" : "Step 7 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step7Length", "parameterAttachment" : { "parameter" : "Step 7 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step7Bitfield", "parameterAttachment" : { "parameter" : "Step 7 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_7", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step7Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_7", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable8", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "438", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step8Velocity", "parameterAttachment" : { "parameter" : "Step 8 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step8Length", "parameterAttachment" : { "parameter" : "Step 8 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step8Bitfield", "parameterAttachment" : { "parameter" : "Step 8 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_8", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step8Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_8", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable9", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "498", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step9Velocity", "parameterAttachment" : { "parameter" : "Step 9 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step9Length", "parameterAttachment" : { "parameter" : "Step 9 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step9Bitfield", "parameterAttachment" : { "parameter" : "Step 9 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_9", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step9Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_9", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable10", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "558", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step10Velocity", "parameterAttachment" : { "parameter" : "Step 10 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step10Length", "parameterAttachment" : { "parameter" : "Step 10 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step10Bitfield", "parameterAttachment" : { "parameter" : "Step 10 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_10", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step10Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_10", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable11", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "618", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step11Velocity", "parameterAttachment" : { "parameter" : "Step 11 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step11Length", "parameterAttachment" : { "parameter" : "Step 11 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step11Bitfield", "parameterAttachment" : { "parameter" : "Step 11 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_11", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step11Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_11", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable12", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "678", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step12Velocity", "parameterAttachment" : { "parameter" : "Step 12 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step12Length", "parameterAttachment" : { "parameter" : "Step 12 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step12Bitfield", "parameterAttachment" : { "parameter" : "Step 12 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_12", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step12Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_12", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable13", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "738", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step13Velocity", "parameterAttachment" : { "parameter" : "Step 13 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step13Length", "parameterAttachment" : { "parameter" : "Step 13 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step13Bitfield", "parameterAttachment" : { "parameter" : "Step 13 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_13", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step13Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_13", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable14", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "798", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step14Velocity", "parameterAttachment" : { "parameter" : "Step 14 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step14Length", "parameterAttachment" : { "parameter" : "Step 14 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step14Bitfield", "parameterAttachment" : { "parameter" : "Step 14 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_14", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step14Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_14", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable15", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "858", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step15Velocity", "parameterAttachment" : { "parameter" : "Step 15 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step15Length", "parameterAttachment" : { "parameter" : "Step 15 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step15Bitfield", "parameterAttachment" : { "parameter" : "Step 15 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_15", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step15Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_15", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable16", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "918", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step16Velocity", "parameterAttachment" : { "parameter" : "Step 16 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step16Length", "parameterAttachment" : { "parameter" : "Step 16 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step16Bitfield", "parameterAttachment" : { "parameter" : "Step 16 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_16", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step16Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_16", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable17", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "978", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step17Velocity", "parameterAttachment" : { "parameter" : "Step 17 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step17Length", "parameterAttachment" : { "parameter" : "Step 17 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step17Bitfield", "parameterAttachment" : { "parameter" : "Step 17 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_17", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step17Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_17", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable18", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1038", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step18Velocity", "parameterAttachment" : { "parameter" : "Step 18 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step18Length", "parameterAttachment" : { "parameter" : "Step 18 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step18Bitfield", "parameterAttachment" : { "parameter" : "Step 18 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_18", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step18Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_18", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable19", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "18,19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1098", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step19Velocity", "parameterAttachment" : { "parameter" : "Step 19 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step19Length", "parameterAttachment" : { "parameter" : "Step 19 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step19Bitfield", "parameterAttachment" : { "parameter" : "Step 19 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_19", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step19Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_19", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable20", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "19,20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1158", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step20Velocity", "parameterAttachment" : { "parameter" : "Step 20 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step20Length", "parameterAttachment" : { "parameter" : "Step 20 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step20Bitfield", "parameterAttachment" : { "parameter" : "Step 20 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_20", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step20Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_20", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable21", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "20,21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1218", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step21Velocity", "parameterAttachment" : { "parameter" : "Step 21 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step21Length", "parameterAttachment" : { "parameter" : "Step 21 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step21Bitfield", "parameterAttachment" : { "parameter" : "Step 21 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_21", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step21Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_21", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable22", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "21,22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1278", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step22Velocity", "parameterAttachment" : { "parameter" : "Step 22 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step22Length", "parameterAttachment" : { "parameter" : "Step 22 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step22Bitfield", "parameterAttachment" : { "parameter" : "Step 22 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_22", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step22Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_22", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable23", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "22,23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1338", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step23Velocity", "parameterAttachment" : { "parameter" : "Step 23 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step23Length", "parameterAttachment" : { "parameter" : "Step 23 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step23Bitfield", "parameterAttachment" : { "parameter" : "Step 23 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_23", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step23Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_23", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable24", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "23,24,25,26,27,28,29,30,31" }, "component" : { "x" : "1398", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step24Velocity", "parameterAttachment" : { "parameter" : "Step 24 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step24Length", "parameterAttachment" : { "parameter" : "Step 24 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step24Bitfield", "parameterAttachment" : { "parameter" : "Step 24 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_24", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step24Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_24", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable25", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "24,25,26,27,28,29,30,31" }, "component" : { "x" : "1458", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step25Velocity", "parameterAttachment" : { "parameter" : "Step 25 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step25Length", "parameterAttachment" : { "parameter" : "Step 25 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step25Bitfield", "parameterAttachment" : { "parameter" : "Step 25 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_25", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step25Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_25", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable26", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "25,26,27,28,29,30,31" }, "component" : { "x" : "1518", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step26Velocity", "parameterAttachment" : { "parameter" : "Step 26 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step26Length", "parameterAttachment" : { "parameter" : "Step 26 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step26Bitfield", "parameterAttachment" : { "parameter" : "Step 26 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_26", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step26Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_26", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable27", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "26,27,28,29,30,31" }, "component" : { "x" : "1578", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step27Velocity", "parameterAttachment" : { "parameter" : "Step 27 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step27Length", "parameterAttachment" : { "parameter" : "Step 27 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step27Bitfield", "parameterAttachment" : { "parameter" : "Step 27 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_27", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step27Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_27", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable28", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "27,28,29,30,31" }, "component" : { "x" : "1638", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step28Velocity", "parameterAttachment" : { "parameter" : "Step 28 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step28Length", "parameterAttachment" : { "parameter" : "Step 28 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step28Bitfield", "parameterAttachment" : { "parameter" : "Step 28 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_28", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step28Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_28", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable29", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "28,29,30,31" }, "component" : { "x" : "1698", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step29Velocity", "parameterAttachment" : { "parameter" : "Step 29 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step29Length", "parameterAttachment" : { "parameter" : "Step 29 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step29Bitfield", "parameterAttachment" : { "parameter" : "Step 29 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_29", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step29Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_29", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable30", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "29,30,31" }, "component" : { "x" : "1758", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step30Velocity", "parameterAttachment" : { "parameter" : "Step 30 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step30Length", "parameterAttachment" : { "parameter" : "Step 30 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step30Bitfield", "parameterAttachment" : { "parameter" : "Step 30 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_30", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step30Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_30", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable31", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "30,31" }, "component" : { "x" : "1818", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step31Velocity", "parameterAttachment" : { "parameter" : "Step 31 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step31Length", "parameterAttachment" : { "parameter" : "Step 31 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step31Bitfield", "parameterAttachment" : { "parameter" : "Step 31 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_31", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step31Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_31", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ContainerArpUserEnable32", "condition": { "enableOnParameter": "Arpeggiator/UserPatternLength", "enableOnValues": "31" }, "component" : { "x" : "1878", "y" : "0", "width" : "80", "height" : "1301"}, "componentProperties" : { "disabledAlpha" : "0.5"}, + "children" : [ + { "name" : "Step32Velocity", "parameterAttachment" : { "parameter" : "Step 32 Velocity" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "306", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step32Length", "parameterAttachment" : { "parameter" : "Step 32 Length" }, "rotary" : { }, "spritesheet" : { "x" : "0" , "y" : "926", "width" : "70", "height" : "70", "texture" : "knob_small", "tileSizeX" : "70", "tileSizeY" : "70" } }, + { "name" : "Step32Bitfield", "parameterAttachment" : { "parameter" : "Step 32 Bitfield" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "12", "y" : "893", "width" : "44", "height" : "36", "texture" : "button_arp_32", "tileSizeX" : "44", "tileSizeY" : "36" } }, + { "name" : "Step32Bitfield", "parameterAttachment" : { "parameter" : "" }, "button" : { "isToggle" : "0", "normalImage" : "1", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "0", "x" : "12", "y" : "379", "width" : "44", "height" : "36", "texture" : "button_arp_32", "tileSizeX" : "44", "tileSizeY" : "36" } }, + ] + }, + { "name" : "ArpPatternLength", "parameterAttachment" : { "parameter" : "Arpeggiator/UserPatternLength" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1133", "y" : "108", "width" : "176", "height" : "45", "offsetR" : "-60" }}, + { "name" : "ArpUserGraphics", + "component" : { "x" : "24", "y" : "417", "width" : "1921", "height" : "476"}, + "componentProperties" : { + "colorActive" : "ffffffdd", + "colorInactive" : "aaaaaa77", + "gradient": 0.5 + } + } + ] + }, + + { "name" : "ArpPattern", "parameterAttachment" : { "parameter" : "Arp Pattern Selct" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "467", "y" : "108", "width" : "176", "height" : "45", "offsetR" : "-60" }}, + { "name" : "ArpOctRange", "parameterAttachment" : { "parameter" : "Arp Octave Range" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "688", "y" : "108", "width" : "176", "height" : "45", "offsetR" : "-60" }}, + { "name" : "ArpClock", "parameterAttachment" : { "parameter" : "Arp Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "909", "y" : "108", "width" : "176", "height" : "45", "offsetR" : "-60" }}, + { "name" : "ArpHold", "parameterAttachment" : { "parameter" : "Arp Hold Enable" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "1786", "y" : "93", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "ArpNoteLength", "parameterAttachment" : { "parameter" : "Arp Note Length" }, "rotary" : { }, "spritesheet" : { "x" : "1400", "y" : "82", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "ArpNoteSwing", "parameterAttachment" : { "parameter" : "Arp Swing" }, "rotary" : { }, "spritesheet" : { "x" : "1558", "y" : "82", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + ] + }, + { "name" : "ArpMode", "parameterAttachment" : { "parameter" : "Arp Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "69", "y" : "108", "width" : "350", "height" : "45", "offsetR" : "-60" }}, + ] + }, + { + "name" : "page_8_fx1", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : ""}, + "children" : [ + + { "name" : "ContainerCharacterTypeOff", + "condition": { "enableOnParameter": "Character Type", "enableOnValues": "1,2,3,4,5,6" }, + "image" : { "x" : "0", "y" : "0", "width" : "676", "height" : "238", "texture" : "panel_8_fx1_characters_off" }, + }, + { "name" : "ContainerCharacterTypeOn", + "condition": { "enableOnParameter": "Character Type", "enableOnValues": "0,7,8" }, + "image" : { "x" : "0", "y" : "0", "width" : "676", "height" : "238", "texture" : "panel_8_fx1_characters" }, + "children" : [ + { "name" : "AnalogBoostIntens", "parameterAttachment" : { "parameter" : "Bass Intensity"}, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "AnalogBoostTune", "parameterAttachment" : { "parameter" : "Bass Tune" }, "rotary" : { }, "spritesheet" : { "x" : "522", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "CharacterType", "parameterAttachment" : { "parameter" : "Character Type" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "203", "y" : "110", "width" : "274", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "ContainerChorusOff", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "0" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_off" }, + "children" : [ + ] + }, + + { "name" : "ContainerChorusClassic", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "1" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_classic" }, + "children" : [ + { "name" : "ChorusMix", "parameterAttachment" : { "parameter" : "Chorus Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDelayTime", "parameterAttachment" : { "parameter" : "Chorus Delay" }, "rotary" : { }, "spritesheet" : { "x" : "485", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusFeedback", "parameterAttachment" : { "parameter" : "Chorus Feedback" }, "rotary" : { }, "spritesheet" : { "x" : "643", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusShape", "parameterAttachment" : { "parameter" : "Chorus Lfo Shape" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "763", "y" : "110", "width" : "274", "height" : "45", "offsetR" : "-60" }}, + { "name" : "ChorusRate", "parameterAttachment" : { "parameter" : "Chorus Rate" }, "rotary" : { }, "spritesheet" : { "x" : "959", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDepth", "parameterAttachment" : { "parameter" : "Chorus Depth" }, "rotary" : { }, "spritesheet" : { "x" : "1117", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerChorusVintage", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "2" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_vintage" }, + "children" : [ + { "name" : "ChorusMix", "parameterAttachment" : { "parameter" : "Chorus/Mix2" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusXOver", "parameterAttachment" : { "parameter" : "Chorus/X Over" }, "rotary" : { }, "spritesheet" : { "x" : "801", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusRate", "parameterAttachment" : { "parameter" : "Chorus Rate" }, "rotary" : { }, "spritesheet" : { "x" : "959", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDepth", "parameterAttachment" : { "parameter" : "Chorus Depth" }, "rotary" : { }, "spritesheet" : { "x" : "1117", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerChorusHyperChorus", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "3" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_hyper_chorus" }, + "children" : [ + { "name" : "ChorusMix", "parameterAttachment" : { "parameter" : "Chorus/Mix2" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusXOver", "parameterAttachment" : { "parameter" : "Chorus/X Over" }, "rotary" : { }, "spritesheet" : { "x" : "801", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusAmount", "parameterAttachment" : { "parameter" : "Chorus/Amount" }, "rotary" : { }, "spritesheet" : { "x" : "959", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDepth", "parameterAttachment" : { "parameter" : "Chorus Depth" }, "rotary" : { }, "spritesheet" : { "x" : "1117", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerChorusAirChorus", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "4" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_air_chorus" }, + "children" : [ + { "name" : "ChorusAmount", "parameterAttachment" : { "parameter" : "Chorus/X Over" }, "rotary" : { }, "spritesheet" : { "x" : "959", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDepth", "parameterAttachment" : { "parameter" : "Chorus Depth" }, "rotary" : { }, "spritesheet" : { "x" : "1117", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerChorusVibrato", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "5" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_vibrato" }, + "children" : [ + { "name" : "ChorusXOver", "parameterAttachment" : { "parameter" : "Chorus/X Over" }, "rotary" : { }, "spritesheet" : { "x" : "801", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusRate", "parameterAttachment" : { "parameter" : "Chorus Rate" }, "rotary" : { }, "spritesheet" : { "x" : "959", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDepth", "parameterAttachment" : { "parameter" : "Chorus Depth" }, "rotary" : { }, "spritesheet" : { "x" : "1117", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerChorusRotarySpeaker", + "condition": { "enableOnParameter": "Chorus/Type", "enableOnValues": "6" }, + "image" : { "x" : "698", "y" : "0", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_chorus_rotary_speaker" }, + "children" : [ + { "name" : "ChorusMix", "parameterAttachment" : { "parameter" : "Chorus/Mix2" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Chorus/LowHighBalance", "parameterAttachment" : { "parameter" : "Chorus/LowHigh Bal" }, "rotary" : { }, "spritesheet" : { "x" : "801", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Chorus/MicAngle", "parameterAttachment" : { "parameter" : "Chorus/Mic Angle" }, "rotary" : { }, "spritesheet" : { "x" : "959", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ChorusDepth", "parameterAttachment" : { "parameter" : "Chorus/Distance" }, "rotary" : { }, "spritesheet" : { "x" : "1117", "y" : "87", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Chorus/Speed", "parameterAttachment" : { "parameter" : "Chorus/Speed" }, "rotary" : { "style" : "LinearHorizontal" }, "spritesheet" : { "x" : "510", "y" : "103", "width" : "260", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "355", "tileSizeY" : "63" } }, + + ] + }, + + { "name" : "ChorusType", "parameterAttachment" : { "parameter" : "Chorus/Type" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "878", "y" : "110", "width" : "274", "height" : "45", "offsetR" : "-60" }}, + + + { "name" : "ContainerFilterbankOff", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "0" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_off" }, + "children" : [ + ] + }, + + { "name" : "ContainerFilterbankRingModulator", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "1" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_ringmodulator" }, + "children" : [ + { "name" : "FilterBank/Mix", "parameterAttachment" : { "parameter" : "Filter Bank/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Frequency", "parameterAttachment" : { "parameter" : "Filter Bank/Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Stereo Phase", "parameterAttachment" : { "parameter" : "Filter Bank/Stereo Phase" }, "rotary" : { }, "spritesheet" : { "x" : "664", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerFilterbankFrequencyShift", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "2" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_frequency_shift" }, + "children" : [ + { "name" : "FilterBank/Mix", "parameterAttachment" : { "parameter" : "Filter Bank/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Frequency", "parameterAttachment" : { "parameter" : "Filter Bank/Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Stereo Phase", "parameterAttachment" : { "parameter" : "Filter Bank/Stereo Phase" }, "rotary" : { }, "spritesheet" : { "x" : "664", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/ShapeL", "parameterAttachment" : { "parameter" : "Filter Bank/Shape L" }, "rotary" : { }, "spritesheet" : { "x" : "822", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/ShapeR", "parameterAttachment" : { "parameter" : "Filter Bank/Shape R" }, "rotary" : { }, "spritesheet" : { "x" : "980", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + ] + }, + { "name" : "ContainerFilterbankVowelFilter", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "3" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_vowel_filter" }, + "children" : [ + { "name" : "FilterBank/Mix", "parameterAttachment" : { "parameter" : "Filter Bank/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Frequency", "parameterAttachment" : { "parameter" : "Filter Bank/Vowel Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Resonance", "parameterAttachment" : { "parameter" : "Filter Bank/Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "664", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Stereo Phase", "parameterAttachment" : { "parameter" : "Filter Bank/Stereo Phase" }, "rotary" : { }, "spritesheet" : { "x" : "822", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerFilterbankCombFilter", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "4" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_vowel_filter" }, + "children" : [ + { "name" : "FilterBank/Mix", "parameterAttachment" : { "parameter" : "Filter Bank/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Frequency", "parameterAttachment" : { "parameter" : "Filter Bank/Comb Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Resonance", "parameterAttachment" : { "parameter" : "Filter Bank/Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "664", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Stereo Phase", "parameterAttachment" : { "parameter" : "Filter Bank/Stereo Phase" }, "rotary" : { }, "spritesheet" : { "x" : "822", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerFilterbank1PolXfade", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "5,6,7,8" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_pole_xfade" }, + "children" : [ + { "name" : "FilterBank/Mix", "parameterAttachment" : { "parameter" : "Filter Bank/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Frequency", "parameterAttachment" : { "parameter" : "Filter Bank/Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/StereoPhase", "parameterAttachment" : { "parameter" : "Filter Bank/Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "664", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/FilterType", "parameterAttachment" : { "parameter" : "Filter Bank/Filter Type" }, "rotary" : { }, "spritesheet" : { "x" : "822", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + { "name" : "ContainerFilterbankVariSlopes", + "condition": { "enableOnParameter": "Filter Bank/Type", "enableOnValues": "9,10,11" }, + "image" : { "x" : "698", "y" : "525", "width" : "1267", "height" : "237", "texture" : "panel_8_fx1_filterbank_vari_slopes" }, + "children" : [ + { "name" : "FilterBank/Mix", "parameterAttachment" : { "parameter" : "Filter Bank/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "50", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Frequency", "parameterAttachment" : { "parameter" : "Filter Bank/Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "506", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/StereoPhase", "parameterAttachment" : { "parameter" : "Filter Bank/Resonance" }, "rotary" : { }, "spritesheet" : { "x" : "664", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Poles", "parameterAttachment" : { "parameter" : "Filter Bank/Poles" }, "rotary" : { }, "spritesheet" : { "x" : "822", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "FilterBank/Slope", "parameterAttachment" : { "parameter" : "Filter Bank/Slope" }, "rotary" : { }, "spritesheet" : { "x" : "980", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "FilterBank/Type", "parameterAttachment" : { "parameter" : "Filter Bank/Type" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "878", "y" : "637", "width" : "274", "height" : "45", "offsetR" : "-60" }}, + + + { "name" : "ContainerPhaser", + "image" : { "x" : "699", "y" : "263", "width" : "1268", "height" : "237", "texture" : "panel_8_fx1_Phaser" }, + "children" : [ + + { "name" : "PhaserMix", "parameterAttachment" : { "parameter" : "Phaser Mix" }, "rotary" : { }, "spritesheet" : { "x" : "49", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PhaserStages", "parameterAttachment" : { "parameter" : "Phaser Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "179", "y" : "112", "width" : "274", "height" : "45", "offsetR" : "-60" }}, + { "name" : "PhaerFrequency", "parameterAttachment" : { "parameter" : "Phaser Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "484", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PhaerFeedback", "parameterAttachment" : { "parameter" : "Phaser Feedback" }, "rotary" : { }, "spritesheet" : { "x" : "642", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PhaserSpread", "parameterAttachment" : { "parameter" : "Phaser Spread" }, "rotary" : { }, "spritesheet" : { "x" : "800", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PhaserRate", "parameterAttachment" : { "parameter" : "Phaser Rate" }, "rotary" : { }, "spritesheet" : { "x" : "958", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PhaserDepth", "parameterAttachment" : { "parameter" : "Phaser Depth" }, "rotary" : { }, "spritesheet" : { "x" : "1116", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + + { "name" : "ContainerDistortion0", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "0" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_0" }, + "children" : [ + ] + }, + + { "name" : "ContainerDistortion1", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "1,2,3,4,5,6,7,12,13,14,15,16,17" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_1" }, + "children" : [ + + { "name" : "DistortionIntens", "parameterAttachment" : { "parameter" : "Distortion Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Mix", "parameterAttachment" : { "parameter" : "Patch Distortion/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "PatchDistortion/TrebleBooster", "parameterAttachment" : { "parameter" : "Patch Distortion/Treble Booster" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/High Cut", "parameterAttachment" : { "parameter" : "Patch Distortion/High Cut" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerDistortion2", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "18,19" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_2" }, + "children" : [ + + { "name" : "DistortionIntens", "parameterAttachment" : { "parameter" : "Distortion Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Mix", "parameterAttachment" : { "parameter" : "Patch Distortion/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "PatchDistortion/Quality", "parameterAttachment" : { "parameter" : "Patch Distortion/Quality" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerDistortion3", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "10,11" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_3" }, + "children" : [ + + { "name" : "DistortionIntens", "parameterAttachment" : { "parameter" : "Distortion Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Mix", "parameterAttachment" : { "parameter" : "Patch Distortion/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerDistortion4", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "8,9" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_4" }, + "children" : [ + + { "name" : "DistortionIntens", "parameterAttachment" : { "parameter" : "Distortion Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Mix", "parameterAttachment" : { "parameter" : "Patch Distortion/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerDistortion5_tone64", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "20,24" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_5" }, + "children" : [ + + { "name" : "DistortionIntens", "parameterAttachment" : { "parameter" : "Distortion Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Mix", "parameterAttachment" : { "parameter" : "Patch Distortion/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "PatchDistortion/Tone64", "parameterAttachment" : { "parameter" : "Patch Distortion/Tone64" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/High Cut", "parameterAttachment" : { "parameter" : "Patch Distortion/High Cut" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "ContainerDistortion5_tone127", + "condition": { "enableOnParameter": "Distortion Curve", "enableOnValues": "21,22,23,25,26" }, + "image" : { "x" : "303", "y" : "262", "width" : "373", "height" : "500", "texture" : "panel_8_fx1_5" }, + "children" : [ + + { "name" : "DistortionIntens", "parameterAttachment" : { "parameter" : "Distortion Intensity" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Mix", "parameterAttachment" : { "parameter" : "Patch Distortion/Mix" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "85", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/Tone127", "parameterAttachment" : { "parameter" : "Patch Distortion/Tone127" }, "rotary" : { }, "spritesheet" : { "x" : "60", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "PatchDistortion/High Cut", "parameterAttachment" : { "parameter" : "Patch Distortion/High Cut" }, "rotary" : { }, "spritesheet" : { "x" : "218", "y" : "253", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ] + }, + + { "name" : "DistortionCurve", "parameterAttachment" : { "parameter" : "Distortion Curve" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "352", "y" : "652", "width" : "274", "height" : "45", "offsetR" : "-60" }}, + + + { "name" : "ContainerEnvFollowerOn", + "condition": { "enableOnParameter": "Input Follower Mode", "enableOnValues": "1,2,3" }, + "image" : { "x" : "0", "y" : "786", "width" : "676", "height" : "338", "texture" : "panel_8_fx1_env_follower" }, + "children" : [ + { "name" : "InputFollowerLevel","parameterAttachment" : { "parameter" : "Filter Env Sustain" }, "rotary" : { }, "spritesheet" : { "x" : "53", "y" : "91", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "InputFollowerAtt", "parameterAttachment" : { "parameter" : "Filter Env Attack" }, "rotary" : { }, "spritesheet" : { "x" : "190", "y" : "91", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "InputFollowerRel", "parameterAttachment" : { "parameter" : "Filter Env Release" }, "rotary" : { }, "spritesheet" : { "x" : "328", "y" : "91", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + ] + }, + { "name" : "ContainerEnvFollowerOff", + "condition": { "enableOnParameter": "Input Follower Mode", "enableOnValues": "0" }, + "image" : { "x" : "0", "y" : "786", "width" : "676", "height" : "338", "texture" : "panel_8_fx1_env_follower_off" }, + }, + + { "name" : "InputFollowerMode", "parameterAttachment" : { "parameter" : "Input Follower Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "28", "alignH" : "L", "alignV" : "C", "x" : "452", "y" : "901", "width" : "170", "height" : "52", "offsetR" : "-60" }}, + + + { "name" : "ContainerPhaser", + "image" : { "x" : "699", "y" : "788", "width" : "1268", "height" : "237", "texture" : "panel_8_fx1_Equalizer" }, + "children" : [ + + { "name" : "EqLowGain", "parameterAttachment" : { "parameter" : "LowEQ Gain" }, "rotary" : { }, "spritesheet" : { "x" : "49", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "EqLowFreq", "parameterAttachment" : { "parameter" : "LowEQ Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "207", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "EqMidGain", "parameterAttachment" : { "parameter" : "MidEQ Gain" }, "rotary" : { }, "spritesheet" : { "x" : "428", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "EqMidFreq", "parameterAttachment" : { "parameter" : "MidEQ Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "586", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "EqMidQ", "parameterAttachment" : { "parameter" : "MidEQ Q-Factor" }, "rotary" : { }, "spritesheet" : { "x" : "744", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "EqHighGain", "parameterAttachment" : { "parameter" : "HighEQ Gain" }, "rotary" : { }, "spritesheet" : { "x" : "952", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "EqHighFreq", "parameterAttachment" : { "parameter" : "HighEQ Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "1110", "y" : "90", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + ] + }, + + { "name" : "ContainerInputModeOff", + "condition": { "enableOnParameter": "Input Mode", "enableOnValues": "0" }, + "image" : { "x" : "0", "y" : "261", "width" : "280", "height" : "500", "texture" : "panel_8_fx1_Input_Off" }, + }, + { "name" : "ContainerInputModeOn", + "condition": { "enableOnParameter": "Input Mode", "enableOnValues": "1,2" }, + "image" : { "x" : "0", "y" : "261", "width" : "280", "height" : "500", "texture" : "panel_8_fx1_Input" }, + "children" : [ + { "name" : "InputSelect", "parameterAttachment" : { "parameter" : "Input Select" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "55", "y" : "239", "width" : "174", "height" : "48", "offsetR" : "-60" }}, + { "name" : "Atomizer", "parameterAttachment" : { "parameter" : "Atomizer" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "55", "y" : "364", "width" : "174", "height" : "48", "offsetR" : "-60" }} + ] + }, + + { "name" : "InputMode", "parameterAttachment" : { "parameter" : "Input Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "55", "y" : "370", "width" : "174", "height" : "48", "offsetR" : "-60" }}, + + ] + }, + { + "name" : "page_9_fx2", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : ""}, + "children" : [ + { + "name" : "ContainerVocoderOn", + "image" : { "x" : "0", "y" : "699", "width" : "1966", "height" : "332", "texture" : "panel_9_fx2_vocoder" }, + "condition": { "enableOnParameter": "Vocoder Mode", "enableOnValues": "1,2,3,4,5,6,7,8" }, + "children" : [ + { "name" : "VocBands", "parameterAttachment" : { "parameter" : "Vocoder/Bands" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "78", "y" : "213", "width" : "275", "height" : "52", "offsetR" : "-60" }}, + { "name" : "VocSourceBalance", "parameterAttachment" : { "parameter" : "Vocoder/Balance" }, "rotary" : {"style" : "LinearHorizontal"}, "spritesheet" : { "x" : "414", "y" : "84", "width" : "285", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "285", "tileSizeY" : "63" }}, + { "name" : "VocSpectralBalance","parameterAttachment" : { "parameter" : "Vocoder/Spectral Balance" }, "rotary" : {"style" : "LinearHorizontal"}, "spritesheet" : { "x" : "414", "y" : "209", "width" : "285", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "285", "tileSizeY" : "63" }}, + { "name" : "VocAttack", "parameterAttachment" : { "parameter" : "Vocoder/Attack" }, "rotary" : { }, "spritesheet" : { "x" : "765", "y" : "68", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "VocRelease", "parameterAttachment" : { "parameter" : "Vocoder/Release" }, "rotary" : { }, "spritesheet" : { "x" : "764", "y" : "203", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "VocCenterFreq", "parameterAttachment" : { "parameter" : "Vocoder/Carrier Center Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "966", "y" : "132", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "VocCarrSpread", "parameterAttachment" : { "parameter" : "Carrier Frequency Spread" }, "rotary" : { }, "spritesheet" : { "x" : "1125", "y" : "132", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "VocCarrQ", "parameterAttachment" : { "parameter" : "Vocoder/Carrier Q Factor" }, "rotary" : { }, "spritesheet" : { "x" : "1282", "y" : "132", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "VocoderLink", "parameterAttachment" : { "parameter" : "Vocoder Link" }, "button" : { "isToggle" : "1", "normalImage" : "0", "overImage" : "0", "downImage" : "0", "normalImageOn" : "1", "overImageOn" : "1", "downImageOn" : "1", "x" : "1396", "y" : "204", "width" : "79", "height" : "78", "texture" : "button_1", "tileSizeX" : "79", "tileSizeY" : "78" } }, + { "name" : "VocModQ", "parameterAttachment" : { "parameter" : "Vocoder/Modulator Q Factor" }, "rotary" : { }, "spritesheet" : { "x" : "1484", "y" : "132", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "VocModSpread", "parameterAttachment" : { "parameter" : "Vocoder/Modulator Frequency Spread" }, "rotary" : { }, "spritesheet" : { "x" : "1642", "y" : "132", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "VocModOffset", "parameterAttachment" : { "parameter" : "Vocoder/Modulator Frequency Offset" }, "rotary" : { }, "spritesheet" : { "x" : "1800", "y" : "132", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + ], + "controllerlinks": [ + { "source": "VocCarrQ", "dest": "VocModQ", "condition":"VocoderLink"}, + { "source": "VocCarrSpread", "dest": "VocModSpread", "condition":"VocoderLink"}, + { "source": "VocModQ", "dest": "VocCarrQ", "condition":"VocoderLink"}, + { "source": "VocModSpread", "dest": "VocCarrSpread", "condition":"VocoderLink"} + ] + }, + { + "name" : "ContainerVocoderOff", + "image" : { "x" : "0", "y" : "699", "width" : "1966", "height" : "332", "texture" : "panel_9_fx2_vocoder_off" }, + "condition": { "enableOnParameter": "Vocoder Mode", "enableOnValues": "0" }, + }, + + { "name" : "VocoderMode", "parameterAttachment" : { "parameter" : "Vocoder Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "78", "y" : "789", "width" : "275", "height" : "52", "offsetR" : "-60" }}, + + { + "name" : "ContainerFxDelayTapeDelayClocked", + "image" : { "x" : "0", "y" : "0", "width" : "1966", "height" : "328", "texture" : "panel_9_fx2_delay_tape_clocked" }, + "condition": { "enableOnParameter": "Delay Type", "enableOnValues": "1" }, + "children" : [ + { "name" : "DelayTapeDelayTime(ms)", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Time" }, "rotary" : { }, "spritesheet" : { "x" : "846", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayTapeDelayFeedback", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Feedback" }, "rotary" : { }, "spritesheet" : { "x" : "1004", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Delay/TapeDelayCenterFrequency", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Center Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "1171", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayTapeDelayBandwidth", "parameterAttachment" : { "parameter" : "Delay Tape Delay Bandwidth" }, "rotary" : { }, "spritesheet" : { "x" : "1329", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Delay/TapeDelayModulation", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Modulation" }, "rotary" : { }, "spritesheet" : { "x" : "1487", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayTapeDelayRightClock", "parameterAttachment" : { "parameter" : "Delay Tape Delay Right Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "565", "y" : "95", "width" : "275", "height" : "43", "offsetR" : "-60" }}, + { "name" : "DelayTapeDelayLeftClock", "parameterAttachment" : { "parameter" : "Delay Tape Delay Left Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "565", "y" : "210", "width" : "275", "height" : "43", "offsetR" : "-60" }}, + + + ] + }, + { + "name" : "ContainerFxDelayTapeDelay", + "image" : { "x" : "0", "y" : "0", "width" : "1966", "height" : "328", "texture" : "panel_9_fx2_delay_tape" }, + "condition": { "enableOnParameter": "Delay Type", "enableOnValues": "2,3" }, + "children" : [ + { "name" : "DelayTapeDelayTime(ms)", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Time" }, "rotary" : { }, "spritesheet" : { "x" : "846", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayTapeDelayFeedback", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Feedback" }, "rotary" : { }, "spritesheet" : { "x" : "1004", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Delay/TapeDelayCenterFrequency", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Center Frequency" }, "rotary" : { }, "spritesheet" : { "x" : "1171", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayTapeDelayBandwidth", "parameterAttachment" : { "parameter" : "Delay Tape Delay Bandwidth" }, "rotary" : { }, "spritesheet" : { "x" : "1329", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "Delay/TapeDelayModulation", "parameterAttachment" : { "parameter" : "Delay/Tape Delay Modulation" }, "rotary" : { }, "spritesheet" : { "x" : "1487", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayTapeDelayRatio", "parameterAttachment" : { "parameter" : "Delay Tape Delay Ratio" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "565", "y" : "159", "width" : "275", "height" : "43", "offsetR" : "-60" }}, + ] + }, + + + { + "name" : "ContainerFxDelayClassic", + "image" : { "x" : "0", "y" : "0", "width" : "1966", "height" : "328", "texture" : "panel_9_fx2_delay_classic" }, + "condition": { "enableOnParameter": "Delay Type", "enableOnValues": "0" }, + "children" : [ + { "name" : "DelayTime", "parameterAttachment" : { "parameter" : "Delay Time" }, "rotary" : { }, "spritesheet" : { "x" : "846", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayFeedback", "parameterAttachment" : { "parameter" : "Delay Feedback" }, "rotary" : { }, "spritesheet" : { "x" : "1004", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayColor", "parameterAttachment" : { "parameter" : "Delay Color" }, "rotary" : { }, "spritesheet" : { "x" : "1171", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayRate", "parameterAttachment" : { "parameter" : "Dly Rate / Rev Decay" }, "rotary" : { }, "spritesheet" : { "x" : "1329", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayDepth", "parameterAttachment" : { "parameter" : "Dly Depth " }, "rotary" : { }, "spritesheet" : { "x" : "1487", "y" : "135", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "DelayShape", "parameterAttachment" : { "parameter" : "Delay Lfo Shape" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1639", "y" : "160", "width" : "275", "height" : "43", "offsetR" : "-60" }}, + { "name" : "DelayClock", "parameterAttachment" : { "parameter" : "Delay Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "565", "y" : "159", "width" : "275", "height" : "43", "offsetR" : "-60" }}, + ] + }, + + { "name" : "DelayMode", "parameterAttachment" : { "parameter" : "Delay Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "230", "y" : "210", "width" : "275", "height" : "43", "offsetR" : "-60" }}, + { "name" : "DelayType", "parameterAttachment" : { "parameter" : "Delay Type" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "230", "y" : "95", "width" : "275", "height" : "43", "offsetR" : "--60" }}, + + + + { + "name" : "ContainerReverb", + "image" : { "x" : "0", "y" : "348", "width" : "1966", "height" : "328", "texture" : "panel_9_fx2_reverb" }, + + }, + + + { + "name" : "ContainerReverb", + "condition": { "enableOnParameter": "Reverb Mode", "enableOnValues": "2,3" }, + "name" : "ReverbFeedback", "parameterAttachment" : { "parameter" : "Reverb Feedback" }, "rotary" : { }, "spritesheet" : { "x" : "1487", "y" : "480", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }, + }, + + { + "name" : "ContainerReverbFeedback", + "image" : { "x" : "1487", "y" : "442", "width" : "1966", "height" : "328", "texture" : "button_disable" }, + "condition": { "enableOnParameter": "Reverb Mode", "enableOnValues": "0,1" }, + }, + + + + { "name" : "ContainerReverbPredelay", + "condition": { "enableOnParameter": "Reverb Clock", "enableOnValues": "0" }, + "name" : "ReverbPredelay", "parameterAttachment" : { "parameter" : "Reverb Predelay" }, "rotary" : { }, "spritesheet" : { "x" : "1329", "y" : "480", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }, + }, + + { + "name" : "ContainerReverbPredelayDisable", + "image" : { "x" : "1328", "y" : "442", "width" : "1966", "height" : "328", "texture" : "button_disable" }, + "condition": { "enableOnParameter": "Reverb Clock", "enableOnValues": "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" }, + }, + + + + { "name" : "ReverbDecayTime", "parameterAttachment" : { "parameter" : "Reverb Time"}, "rotary" : { }, "spritesheet" : { "x" : "846", "y" : "480", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ReverbDamping", "parameterAttachment" : { "parameter" : "Reverb Damping" }, "rotary" : { }, "spritesheet" : { "x" : "1004", "y" : "480", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + { "name" : "ReverbColor", "parameterAttachment" : { "parameter" : "Reverb Color" }, "rotary" : { }, "spritesheet" : { "x" : "1171", "y" : "480", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" }}, + + { "name" : "ReverbClock", "parameterAttachment" : { "parameter" : "Reverb Clock" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1639", "y" : "503", "width" : "270", "height" : "52", "offsetR" : "-60" }}, + { "name" : "ReverbMode", "parameterAttachment" : { "parameter" : "Reverb Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "526", "y" : "503", "width" : "270", "height" : "52", "offsetR" : "-120" }}, + + { "name" : "ReverbType", "parameterAttachment" : { "parameter" : "Reverb Type" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "243", "y" : "503", "width" : "270", "height" : "52", "offsetR" : "-120" }}, + + { "name" : "DelaySend", "parameterAttachment" : { "parameter" : "Delay Send" }, "rotary" : { }, "spritesheet" : { "x" : "54", "y" : "114", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" }}, + { "name" : "ReverbSend", "parameterAttachment" : { "parameter" : "Reverb Send" }, "rotary" : { }, "spritesheet" : { "x" : "54", "y" : "462", "width" : "137", "height" : "137", "texture" : "knob_big", "tileSizeX" : "137", "tileSizeY" : "137" }}, + ] + }, + { + "name" : "page_common", + "image" : { "x" : "571", "y" : "129", "width" : "1971", "height" : "1026", "texture" : "panel_10_common"}, + "children" : [ + { "name" : "Transpose", "parameterAttachment" : { "parameter" : "Transpose" }, "rotary" : { }, "spritesheet" : { "x" : "49", "y" : "76", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "PartDetune", "parameterAttachment" : { "parameter" : "Part Detune" }, "rotary" : { }, "spritesheet" : { "x" : "207", "y" : "76", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "SmoothMode", "parameterAttachment" : { "parameter" : "Control Smooth Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "353", "y" : "101", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "KeyMode", "parameterAttachment" : { "parameter" : "Key Mode" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "653", "y" : "101", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "OutputBalance", "parameterAttachment" : { "parameter" : "Balance" }, "rotary" : { "style" : "LinearHorizontal"}, "spritesheet" : { "x" : "1053", "y" : "92", "width" : "353", "height" : "63", "texture" : "slider_knob", "tileSizeX" : "308", "tileSizeY" : "63" } }, + { "name" : "Master Volume", "parameterAttachment" : { "parameter" : "Master Volume" }, "rotary" : { }, "spritesheet" : { "x" : "1075", "y" : "595", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "SecondaryOutput", "parameterAttachment" : { "parameter" : "Part Output Select"}, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1463", "y" : "101", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "BendDown", "parameterAttachment" : { "parameter" : "Bender Range Down" }, "rotary" : { }, "spritesheet" : { "x" : "49", "y" : "338", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "BendUp", "parameterAttachment" : { "parameter" : "Bender Range Up" }, "rotary" : { }, "spritesheet" : { "x" : "207", "y" : "338", "width" : "98", "height" : "98", "texture" : "knob_mid", "tileSizeX" : "98", "tileSizeY" : "98" } }, + { "name" : "BendScale", "parameterAttachment" : { "parameter" : "Bender Scale" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "353", "y" : "360", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Category1", "parameterAttachment" : { "parameter" : "Category1" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1076", "y" : "360", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "Category2", "parameterAttachment" : { "parameter" : "Category2" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "1382", "y" : "360", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "SoftKnob-1Single", "parameterAttachment" : { "parameter" : "Soft Knob-1 Single" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "53", "y" : "615", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SoftKnob-2Single", "parameterAttachment" : { "parameter" : "Soft Knob-2 Single" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "354", "y" : "615", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SoftKnob-3Single", "parameterAttachment" : { "parameter" : "Soft Knobs/Destination 3" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "655", "y" : "615", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "SoftKnob1Name", "parameterAttachment" : { "parameter" : "Soft Knob1 ShortName" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "53", "y" : "664", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SoftKnob2Name", "parameterAttachment" : { "parameter" : "Soft Knob2 ShortName" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "354", "y" : "664", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + { "name" : "SoftKnob3Name", "parameterAttachment" : { "parameter" : "Soft Knob3 ShortName" }, "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "655", "y" : "664", "width" : "275", "height" : "45", "offsetR" : "-60" }}, + + { "name" : "MidiIn", "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "83", "y" : "883", "width" : "275", "height" : "45", "offsetR" : "-60" } }, + { "name" : "MidiOut", "combobox" : { "text" : "Wave 42", "textHeight" : "32", "alignH" : "L", "alignV" : "C", "x" : "389", "y" : "883", "width" : "275", "height" : "45", "offsetR" : "-60" } } + ] + }, + { "name" : "DonateInfo", "hyperlinkbutton" : {"url" : "https://paypal.me/dsp56300", "text" : "To donate: https://paypal.me/dsp56300", "textHeight" : "28", "color" : "009BFFFF", "x" : "60", "y" : "1253", "width" : "485", "height" : "32"} }, + { "name" : "VersionNumber", "label" : { "text" : "1.12.34", "textHeight" : "28", "color" : "009BFFFF", "alignH" : "L", "alignV" : "C", "x" : "748", "y" : "1256", "width" : "1200", "height" : "32" }}, + { "name" : "DeviceModel", "label" : { "text" : "C", "textHeight" : "28", "color" : "009BFFFF", "alignH" : "L", "alignV" : "C", "x" : "1050", "y" : "1256", "width" : "100", "height" : "32" }}, + { "name" : "RomSelector", "combobox" : { "text" : "Virus_C_OS_6.5.bin", "textHeight" : "28", "color" : "009BFFFF", "alignH" : "L", "alignV" : "C", "x" : "1295", "y" : "1256", "width" : "400", "height" : "32", "offsetR" : "-60", "tooltip" : "Copy a valid ROM file with file extension .bin next to this plugin" }}, + ] +} +\ No newline at end of file diff --git a/source/jucePlugin/skins/TrancyTI/assets.cmake b/source/jucePlugin/skins/TrancyTI/assets.cmake @@ -0,0 +1,149 @@ +set(ASSETS_VirusTI_Trancy + ${CMAKE_CURRENT_LIST_DIR}/background_channels_4.png + ${CMAKE_CURRENT_LIST_DIR}/background_channels_16.png + ${CMAKE_CURRENT_LIST_DIR}/background_channels_disable_4.png + ${CMAKE_CURRENT_LIST_DIR}/background_channels_disable_16.png + ${CMAKE_CURRENT_LIST_DIR}/button_1.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_1.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_10.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_11.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_12.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_13.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_14.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_15.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_16.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_17.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_18.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_19.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_2.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_20.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_21.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_22.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_23.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_24.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_25.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_26.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_27.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_28.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_29.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_3.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_30.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_31.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_32.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_4.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_5.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_6.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_7.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_8.png + ${CMAKE_CURRENT_LIST_DIR}/button_arp_9.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_1.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_10.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_11.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_12.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_13.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_14.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_15.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_16.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_2.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_3.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_4.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_5.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_6.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_7.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_8.png + ${CMAKE_CURRENT_LIST_DIR}/button_channel_9.png + ${CMAKE_CURRENT_LIST_DIR}/button_disable.png + ${CMAKE_CURRENT_LIST_DIR}/button_load.png + ${CMAKE_CURRENT_LIST_DIR}/button_menu.png + ${CMAKE_CURRENT_LIST_DIR}/button_mono_poly.png + ${CMAKE_CURRENT_LIST_DIR}/button_multi.png + ${CMAKE_CURRENT_LIST_DIR}/button_next.png + ${CMAKE_CURRENT_LIST_DIR}/button_plus.png + ${CMAKE_CURRENT_LIST_DIR}/button_prev.png + ${CMAKE_CURRENT_LIST_DIR}/button_save.png + ${CMAKE_CURRENT_LIST_DIR}/button_single.png + ${CMAKE_CURRENT_LIST_DIR}/button_sub.png + ${CMAKE_CURRENT_LIST_DIR}/Digital.ttf + ${CMAKE_CURRENT_LIST_DIR}/dummy.png + ${CMAKE_CURRENT_LIST_DIR}/knob_big.png + ${CMAKE_CURRENT_LIST_DIR}/knob_mid.png + ${CMAKE_CURRENT_LIST_DIR}/knob_small.png + ${CMAKE_CURRENT_LIST_DIR}/led_on.png + ${CMAKE_CURRENT_LIST_DIR}/logo.png + ${CMAKE_CURRENT_LIST_DIR}/logo_light.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_arp.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_browser.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_common.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_filter.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_fx1.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_fx2.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_lfo.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_main.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_matrix.png + ${CMAKE_CURRENT_LIST_DIR}/mainbutton_osc.png + ${CMAKE_CURRENT_LIST_DIR}/panel_1_easy_edit.png + ${CMAKE_CURRENT_LIST_DIR}/panel_10_common.png + ${CMAKE_CURRENT_LIST_DIR}/panel_2_browser.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_classic.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_common.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_common_hs.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_grain_complex.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_grain_simple.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_hypersaw.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_wave_pwm.png + ${CMAKE_CURRENT_LIST_DIR}/panel_3_osc_wavetable.png + ${CMAKE_CURRENT_LIST_DIR}/panel_4_filter.png + ${CMAKE_CURRENT_LIST_DIR}/panel_4_filter_env_filter.png + ${CMAKE_CURRENT_LIST_DIR}/panel_4_filter_env_3.png + ${CMAKE_CURRENT_LIST_DIR}/panel_4_filter_env_4.png + ${CMAKE_CURRENT_LIST_DIR}/panel_5_lfo.png + ${CMAKE_CURRENT_LIST_DIR}/panel_6_matrix.png + ${CMAKE_CURRENT_LIST_DIR}/panel_7_arp.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_0.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_1.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_2.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_3.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_4.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_5.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_characters.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_characters_off.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_air_chorus.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_classic.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_hyper_chorus.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_off.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_rotary_speaker.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_vibrato.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_chorus_vintage.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_env_follower.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_env_follower_off.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_Equalizer.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_filterbank_frequency_shift.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_filterbank_off.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_filterbank_pole_xfade.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_filterbank_ringmodulator.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_filterbank_vari_slopes.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_filterbank_vowel_filter.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_Input.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_Input_Off.png + ${CMAKE_CURRENT_LIST_DIR}/panel_8_fx1_Phaser.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2_delay_classic.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2_delay_tape.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2_delay_tape_clocked.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2_reverb.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2_vocoder.png + ${CMAKE_CURRENT_LIST_DIR}/panel_9_fx2_vocoder_off.png + ${CMAKE_CURRENT_LIST_DIR}/part_activity.png + ${CMAKE_CURRENT_LIST_DIR}/snow.png + ${CMAKE_CURRENT_LIST_DIR}/slider_knob.png + + ${CMAKE_CURRENT_LIST_DIR}/VirusTI_Trancy.json +) + +if(SYNTHLIB_DEMO_MODE) + list(APPEND ASSETS_VirusTI_Trancy ${CMAKE_CURRENT_LIST_DIR}/demo/background.png) +else() + list(APPEND ASSETS_VirusTI_Trancy ${CMAKE_CURRENT_LIST_DIR}/background.png) +endif() diff --git a/source/jucePlugin/skins/TrancyTI/background.png b/source/jucePlugin/skins/TrancyTI/background.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/background_channels_16.png b/source/jucePlugin/skins/TrancyTI/background_channels_16.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/background_channels_4.png b/source/jucePlugin/skins/TrancyTI/background_channels_4.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/background_channels_disable_16.png b/source/jucePlugin/skins/TrancyTI/background_channels_disable_16.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/background_channels_disable_4.png b/source/jucePlugin/skins/TrancyTI/background_channels_disable_4.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_1.png b/source/jucePlugin/skins/TrancyTI/button_1.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_1.png b/source/jucePlugin/skins/TrancyTI/button_arp_1.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_10.png b/source/jucePlugin/skins/TrancyTI/button_arp_10.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_11.png b/source/jucePlugin/skins/TrancyTI/button_arp_11.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_12.png b/source/jucePlugin/skins/TrancyTI/button_arp_12.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_13.png b/source/jucePlugin/skins/TrancyTI/button_arp_13.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_14.png b/source/jucePlugin/skins/TrancyTI/button_arp_14.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_15.png b/source/jucePlugin/skins/TrancyTI/button_arp_15.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_16.png b/source/jucePlugin/skins/TrancyTI/button_arp_16.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_17.png b/source/jucePlugin/skins/TrancyTI/button_arp_17.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_18.png b/source/jucePlugin/skins/TrancyTI/button_arp_18.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_19.png b/source/jucePlugin/skins/TrancyTI/button_arp_19.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_2.png b/source/jucePlugin/skins/TrancyTI/button_arp_2.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_20.png b/source/jucePlugin/skins/TrancyTI/button_arp_20.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_21.png b/source/jucePlugin/skins/TrancyTI/button_arp_21.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_22.png b/source/jucePlugin/skins/TrancyTI/button_arp_22.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_23.png b/source/jucePlugin/skins/TrancyTI/button_arp_23.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_24.png b/source/jucePlugin/skins/TrancyTI/button_arp_24.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_25.png b/source/jucePlugin/skins/TrancyTI/button_arp_25.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_26.png b/source/jucePlugin/skins/TrancyTI/button_arp_26.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_27.png b/source/jucePlugin/skins/TrancyTI/button_arp_27.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_28.png b/source/jucePlugin/skins/TrancyTI/button_arp_28.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_29.png b/source/jucePlugin/skins/TrancyTI/button_arp_29.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_3.png b/source/jucePlugin/skins/TrancyTI/button_arp_3.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_30.png b/source/jucePlugin/skins/TrancyTI/button_arp_30.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_31.png b/source/jucePlugin/skins/TrancyTI/button_arp_31.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_32.png b/source/jucePlugin/skins/TrancyTI/button_arp_32.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_4.png b/source/jucePlugin/skins/TrancyTI/button_arp_4.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_5.png b/source/jucePlugin/skins/TrancyTI/button_arp_5.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_6.png b/source/jucePlugin/skins/TrancyTI/button_arp_6.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_7.png b/source/jucePlugin/skins/TrancyTI/button_arp_7.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_8.png b/source/jucePlugin/skins/TrancyTI/button_arp_8.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_arp_9.png b/source/jucePlugin/skins/TrancyTI/button_arp_9.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_1.png b/source/jucePlugin/skins/TrancyTI/button_channel_1.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_10.png b/source/jucePlugin/skins/TrancyTI/button_channel_10.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_11.png b/source/jucePlugin/skins/TrancyTI/button_channel_11.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_12.png b/source/jucePlugin/skins/TrancyTI/button_channel_12.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_13.png b/source/jucePlugin/skins/TrancyTI/button_channel_13.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_14.png b/source/jucePlugin/skins/TrancyTI/button_channel_14.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_15.png b/source/jucePlugin/skins/TrancyTI/button_channel_15.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_16.png b/source/jucePlugin/skins/TrancyTI/button_channel_16.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_2.png b/source/jucePlugin/skins/TrancyTI/button_channel_2.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_3.png b/source/jucePlugin/skins/TrancyTI/button_channel_3.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_4.png b/source/jucePlugin/skins/TrancyTI/button_channel_4.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_5.png b/source/jucePlugin/skins/TrancyTI/button_channel_5.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_6.png b/source/jucePlugin/skins/TrancyTI/button_channel_6.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_7.png b/source/jucePlugin/skins/TrancyTI/button_channel_7.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_8.png b/source/jucePlugin/skins/TrancyTI/button_channel_8.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_channel_9.png b/source/jucePlugin/skins/TrancyTI/button_channel_9.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_disable.png b/source/jucePlugin/skins/TrancyTI/button_disable.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_load.png b/source/jucePlugin/skins/TrancyTI/button_load.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_menu.png b/source/jucePlugin/skins/TrancyTI/button_menu.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_mono_poly.png b/source/jucePlugin/skins/TrancyTI/button_mono_poly.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_multi.png b/source/jucePlugin/skins/TrancyTI/button_multi.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_next.png b/source/jucePlugin/skins/TrancyTI/button_next.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_plus.png b/source/jucePlugin/skins/TrancyTI/button_plus.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_prev.png b/source/jucePlugin/skins/TrancyTI/button_prev.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_save.png b/source/jucePlugin/skins/TrancyTI/button_save.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_single.png b/source/jucePlugin/skins/TrancyTI/button_single.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/button_sub.png b/source/jucePlugin/skins/TrancyTI/button_sub.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/demo/background.png b/source/jucePlugin/skins/TrancyTI/demo/background.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/demo/background.psd b/source/jucePlugin/skins/TrancyTI/demo/background.psd Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/demo/background_donators.psd b/source/jucePlugin/skins/TrancyTI/demo/background_donators.psd Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/dummy.png b/source/jucePlugin/skins/TrancyTI/dummy.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/knob_big.png b/source/jucePlugin/skins/TrancyTI/knob_big.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/knob_mid.png b/source/jucePlugin/skins/TrancyTI/knob_mid.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/knob_small.png b/source/jucePlugin/skins/TrancyTI/knob_small.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/led_on.png b/source/jucePlugin/skins/TrancyTI/led_on.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/logo.png b/source/jucePlugin/skins/TrancyTI/logo.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/logo_light.png b/source/jucePlugin/skins/TrancyTI/logo_light.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_arp.png b/source/jucePlugin/skins/TrancyTI/mainbutton_arp.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_browser.png b/source/jucePlugin/skins/TrancyTI/mainbutton_browser.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_common.png b/source/jucePlugin/skins/TrancyTI/mainbutton_common.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_filter.png b/source/jucePlugin/skins/TrancyTI/mainbutton_filter.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_fx1.png b/source/jucePlugin/skins/TrancyTI/mainbutton_fx1.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_fx2.png b/source/jucePlugin/skins/TrancyTI/mainbutton_fx2.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_lfo.png b/source/jucePlugin/skins/TrancyTI/mainbutton_lfo.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_main.png b/source/jucePlugin/skins/TrancyTI/mainbutton_main.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_matrix.png b/source/jucePlugin/skins/TrancyTI/mainbutton_matrix.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/mainbutton_osc.png b/source/jucePlugin/skins/TrancyTI/mainbutton_osc.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_10_common.png b/source/jucePlugin/skins/TrancyTI/panel_10_common.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_1_easy_edit.png b/source/jucePlugin/skins/TrancyTI/panel_1_easy_edit.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_2_browser.png b/source/jucePlugin/skins/TrancyTI/panel_2_browser.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_classic.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_classic.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_common.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_common.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_common_hs.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_common_hs.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_grain_complex.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_grain_complex.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_grain_simple.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_grain_simple.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_hypersaw.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_hypersaw.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_wave_pwm.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_wave_pwm.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_3_osc_wavetable.png b/source/jucePlugin/skins/TrancyTI/panel_3_osc_wavetable.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_4_filter.png b/source/jucePlugin/skins/TrancyTI/panel_4_filter.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_4_filter_env_3.png b/source/jucePlugin/skins/TrancyTI/panel_4_filter_env_3.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_4_filter_env_4.png b/source/jucePlugin/skins/TrancyTI/panel_4_filter_env_4.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_4_filter_env_filter.png b/source/jucePlugin/skins/TrancyTI/panel_4_filter_env_filter.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_5_lfo.png b/source/jucePlugin/skins/TrancyTI/panel_5_lfo.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_6_matrix.png b/source/jucePlugin/skins/TrancyTI/panel_6_matrix.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_7_arp.png b/source/jucePlugin/skins/TrancyTI/panel_7_arp.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_0.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_0.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_1.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_1.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_2.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_2.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_3.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_3.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_4.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_4.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_5.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_5.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Equalizer.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Equalizer.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Input.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Input.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Input_Off.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Input_Off.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Phaser.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_Phaser.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_characters.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_characters.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_characters_off.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_characters_off.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_air_chorus.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_air_chorus.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_classic.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_classic.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_hyper_chorus.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_hyper_chorus.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_off.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_off.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_rotary_speaker.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_rotary_speaker.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_vibrato.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_vibrato.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_vintage.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_chorus_vintage.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_env_follower.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_env_follower.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_env_follower_off.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_env_follower_off.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_frequency_shift.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_frequency_shift.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_off.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_off.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_pole_xfade.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_pole_xfade.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_ringmodulator.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_ringmodulator.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_vari_slopes.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_vari_slopes.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_vowel_filter.png b/source/jucePlugin/skins/TrancyTI/panel_8_fx1_filterbank_vowel_filter.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2_delay_classic.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2_delay_classic.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2_delay_tape.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2_delay_tape.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2_delay_tape_clocked.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2_delay_tape_clocked.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2_reverb.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2_reverb.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2_vocoder.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2_vocoder.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/panel_9_fx2_vocoder_off.png b/source/jucePlugin/skins/TrancyTI/panel_9_fx2_vocoder_off.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/part_activity.png b/source/jucePlugin/skins/TrancyTI/part_activity.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/slider_knob.png b/source/jucePlugin/skins/TrancyTI/slider_knob.png Binary files differ. diff --git a/source/jucePlugin/skins/TrancyTI/snow.png b/source/jucePlugin/skins/TrancyTI/snow.png Binary files differ. diff --git a/source/jucePlugin/ui3/ArpUserPattern.cpp b/source/jucePlugin/ui3/ArpUserPattern.cpp @@ -0,0 +1,125 @@ +#include "ArpUserPattern.h" + +#include "VirusEditor.h" + +#include "../VirusController.h" + +#include "../juceUiLib/uiObjectStyle.h" + +namespace genericVirusUI +{ + namespace + { + constexpr uint32_t g_listenerId = 0xaa; + } + + ArpUserPattern::ArpUserPattern(const VirusEditor& _editor) : m_controller(_editor.getController()) + { + bindParameters(); + } + + void ArpUserPattern::paint(juce::Graphics& g) + { + if(!m_patternLength) + return; + + if(m_gradientStrength <= 0.0f) + { + genericUI::UiObjectStyle::parseColor(m_colRectFillActive, getProperties()["colorActive"].toString().toStdString()); + genericUI::UiObjectStyle::parseColor(m_colRectFillInactive, getProperties()["colorInactive"].toString().toStdString()); + + m_gradientStrength = getProperties()["gradient"]; + + if(m_gradientStrength <= 0.0f) + m_gradientStrength = 0.5f; + } + + const auto w = (float)getWidth(); + const auto h = (float)getHeight(); + + const auto maxstepW = static_cast<float>(getWidth()) / static_cast<float>(m_steps.size()); + + auto makeRectGradient = [&](const juce::Colour& _color) + { + const auto& c = _color; + return juce::ColourGradient::vertical(c, 0.0f, c.darker(m_gradientStrength), h); + }; + + const auto rectGradientActive = makeRectGradient(m_colRectFillActive); + const auto rectGradientInactive = makeRectGradient(m_colRectFillInactive); + + float x = 0.0f; + + for(int i=0; i<std::min(m_patternLength->getUnnormalizedValue() + 1, static_cast<int>(m_steps.size())); ++i) + { + const auto stepW = m_steps[i].length->getValue() * maxstepW; + const auto stepH = m_steps[i].velocity->getValue() * h; + const auto y = h - stepH; + + g.setGradientFill(m_steps[i].bitfield->getUnnormalizedValue() > 0 ? rectGradientActive : rectGradientInactive); + g.fillRect(x, y, stepW, stepH); + + x += maxstepW; + } + } + + void ArpUserPattern::onCurrentPartChanged() + { + } + + void ArpUserPattern::bindParameters() + { + for(size_t s=0; s<m_steps.size(); ++s) + { + auto& step = m_steps[s]; + + step.length = bindParameter("Step " + std::to_string(s+1) +" Length"); + step.velocity = bindParameter("Step " + std::to_string(s+1) +" Velocity"); + step.bitfield = bindParameter("Step " + std::to_string(s+1) +" Bitfield"); + } + + m_patternLength = bindParameter("Arpeggiator/UserPatternLength"); + } + + void ArpUserPattern::unbindParameter(pluginLib::Parameter*& _parameter) + { + assert(_parameter); + _parameter->removeListener(g_listenerId); + _parameter = nullptr; + } + + void ArpUserPattern::unbindParameters() + { + if(!m_patternLength) + return; + + unbindParameter(m_patternLength); + + for (auto& s : m_steps) + { + unbindParameter(s.length); + unbindParameter(s.velocity); + unbindParameter(s.bitfield); + } + } + + pluginLib::Parameter* ArpUserPattern::bindParameter(const std::string& _name) + { + const auto idx = m_controller.getParameterIndexByName(_name); + assert(idx != pluginLib::Controller::InvalidParameterIndex); + auto* p = m_controller.getParameter(idx, m_controller.getCurrentPart()); + assert(p); + + p->onValueChanged.emplace_back(g_listenerId, [this]() + { + onParameterChanged(); + }); + + return p; + } + + void ArpUserPattern::onParameterChanged() + { + repaint(); + } +} diff --git a/source/jucePlugin/ui3/ArpUserPattern.h b/source/jucePlugin/ui3/ArpUserPattern.h @@ -0,0 +1,47 @@ +#pragma once + +#include "juce_gui_basics/juce_gui_basics.h" + +namespace pluginLib +{ + class Controller; + class Parameter; +} + +namespace genericVirusUI +{ + class VirusEditor; + + class ArpUserPattern : public juce::Component + { + public: + ArpUserPattern(const VirusEditor& _editor); + + void paint(juce::Graphics& g) override; + + void onCurrentPartChanged(); + private: + void unbindParameters(); + void bindParameters(); + static void unbindParameter(pluginLib::Parameter*& _parameter); + + pluginLib::Parameter* bindParameter(const std::string& _name); + + void onParameterChanged(); + + struct Step + { + pluginLib::Parameter* length = nullptr; + pluginLib::Parameter* velocity = nullptr; + pluginLib::Parameter* bitfield = nullptr; + }; + + pluginLib::Controller& m_controller; + std::array<Step, 32> m_steps; + pluginLib::Parameter* m_patternLength = nullptr; + + juce::Colour m_colRectFillActive = juce::Colour(0xddffffff); + juce::Colour m_colRectFillInactive = juce::Colour(0x77aaaaaa); + float m_gradientStrength = 0.0f; + }; +} diff --git a/source/jucePlugin/ui3/PatchManager.cpp b/source/jucePlugin/ui3/PatchManager.cpp @@ -188,7 +188,8 @@ namespace genericVirusUI pluginLib::MidiPacket::Data data; pluginLib::MidiPacket::AnyPartParamValues parameterValues; - if (!m_controller.parseSingle(data, parameterValues, _patch->sysex)) + Virus::Controller::MidiPacketType usedPacketType; + if (!m_controller.parseSingle(data, parameterValues, _patch->sysex, usedPacketType)) return _patch->sysex; // apply name @@ -239,7 +240,7 @@ namespace genericVirusUI parameterValues[indicesCategory[0]] = val0; parameterValues[indicesCategory[1]] = val1; - return m_controller.createSingleDump(bank, program, parameterValues); + return m_controller.createSingleDump(usedPacketType, bank, program, parameterValues); } bool PatchManager::parseFileData(pluginLib::patchDB::DataList& _results, const pluginLib::patchDB::Data& _data) diff --git a/source/jucePlugin/ui3/VirusEditor.cpp b/source/jucePlugin/ui3/VirusEditor.cpp @@ -1,5 +1,6 @@ #include "VirusEditor.h" +#include "ArpUserPattern.h" #include "BinaryData.h" #include "PartButton.h" @@ -47,7 +48,9 @@ namespace genericVirusUI { auto pmParent = findComponent("ContainerPatchManager", false); if(!pmParent) - pmParent = findComponent("page_presets"); + pmParent = findComponent("page_presets", false); + if(!pmParent) + pmParent = findComponent("page_2_browser"); setPatchManager(new PatchManager(*this, pmParent, dir)); } @@ -84,7 +87,10 @@ namespace genericVirusUI int id = 1; for (const auto& rom : roms) - m_romSelector->addItem(juce::File(rom.getFilename()).getFileNameWithoutExtension(), id++); + { + const auto name = juce::File(rom.getFilename()).getFileNameWithoutExtension(); + m_romSelector->addItem(name + " (" + rom.getModelName() + ')', id++); + } } m_romSelector->setSelectedId(static_cast<int>(m_processor.getSelectedRomIndex()) + 1, juce::dontSendNotification); @@ -211,6 +217,14 @@ namespace genericVirusUI return Editor::createJuceComponent(_button, _object); } + juce::Component* VirusEditor::createJuceComponent(juce::Component* _component, genericUI::UiObject& _object) + { + if(_object.getName() == "ArpUserGraphics") + return new ArpUserPattern(*this); + + return Editor::createJuceComponent(_component, _object); + } + void VirusEditor::onProgramChange(int _part) { m_parts->onProgramChange(); @@ -258,24 +272,36 @@ namespace genericVirusUI if(!m_deviceModel) return; - auto* rom = m_processor.getSelectedRom(); - if(!rom) - return; + std::string m; - virusLib::ROMFile::TPreset data; - if(!rom->getSingle(0, 0, data)) + switch(m_processor.getModel()) + { + case virusLib::DeviceModel::Invalid: return; + case virusLib::DeviceModel::ABC: + { + auto* rom = m_processor.getSelectedRom(); + if(!rom) + return; - std::string m; + virusLib::ROMFile::TPreset data; + if(!rom->getSingle(0, 0, data)) + return; - switch(virusLib::Microcontroller::getPresetVersion(data.front())) - { - case virusLib::A: m = "A"; break; - case virusLib::B: m = "B"; break; - case virusLib::C: m = "C"; break; - case virusLib::D: m = "TI"; break; - case virusLib::D2: m = "TI2"; break; - default: m = "?"; break; + switch(virusLib::Microcontroller::getPresetVersion(data.front())) + { + case virusLib::A: m = "A"; break; + case virusLib::B: m = "B"; break; + case virusLib::C: m = "C"; break; + case virusLib::D: m = "TI"; break; + case virusLib::D2: m = "TI2"; break; + default: m = "?"; break; + } + } + break; + case virusLib::DeviceModel::Snow: m = "Snow"; break; + case virusLib::DeviceModel::TI: m = "TI"; break; + case virusLib::DeviceModel::TI2: m = "TI2"; break; } m_deviceModel->setText(m, juce::dontSendNotification); diff --git a/source/jucePlugin/ui3/VirusEditor.h b/source/jucePlugin/ui3/VirusEditor.h @@ -59,6 +59,7 @@ namespace genericVirusUI std::pair<std::string, std::string> getDemoRestrictionText() const override; genericUI::Button<juce::TextButton>* createJuceComponent(genericUI::Button<juce::TextButton>*, genericUI::UiObject& _object) override; + juce::Component* createJuceComponent(juce::Component*, genericUI::UiObject& _object) override; private: void onProgramChange(int _part); diff --git a/source/virusConsoleLib/consoleApp.cpp b/source/virusConsoleLib/consoleApp.cpp @@ -7,6 +7,7 @@ #include "../virusLib/device.h" #include "../virusLib/romloader.h" +#include "../virusLib/demoplaybackTI.h" #include "dsp56kEmu/dsp.h" @@ -22,7 +23,7 @@ class EsaiListener; ConsoleApp::ConsoleApp(const std::string& _romFile) : m_romName(_romFile) -, m_rom(ROMLoader::findROM(_romFile)) +, m_rom(ROMLoader::findROM(_romFile, DeviceModel::TI2)) , m_preset({}) { if (!m_rom.isValid()) @@ -65,6 +66,9 @@ void ConsoleApp::bootDSP(const bool _createDebugger) const dsp56k::IPeripherals& ConsoleApp::getYPeripherals() const { + if (m_rom.isTIFamily()) + return m_dsp1->getPeriphY(); + return m_dsp1->getPeriphNop(); } @@ -121,7 +125,7 @@ bool ConsoleApp::loadSingle(const std::string& _preset) bool ConsoleApp::loadDemo(const std::string& _filename) { - m_demo.reset(new DemoPlayback(*m_uc)); + m_demo.reset(m_rom.isTIFamily() ? new DemoPlaybackTI(*m_uc) : new DemoPlayback(*m_uc)); if(m_demo->loadFile(_filename)) { @@ -138,7 +142,7 @@ bool ConsoleApp::loadInternalDemo() if(m_rom.getDemoData().empty()) return false; - m_demo.reset(new DemoPlayback(*m_uc)); + m_demo.reset(m_rom.isTIFamily() ? new DemoPlaybackTI(*m_uc) : new DemoPlayback(*m_uc)); if(m_demo->loadBinData(m_rom.getDemoData())) { @@ -200,14 +204,13 @@ void ConsoleApp::audioCallback(const uint32_t _audioCallbackCount) m_demo->process(1); } -void ConsoleApp::run(const std::string& _audioOutputFilename, uint32_t _maxSampleCount/* = 0*/, bool _createDebugger/* = false*/, bool _dumpAssembler/* = false*/) +void ConsoleApp::run(const std::string& _audioOutputFilename, uint32_t _maxSampleCount/* = 0*/, uint32_t _blockSize/* = 64*/, bool _createDebugger/* = false*/, bool _dumpAssembler/* = false*/) { assert(!_audioOutputFilename.empty()); // dsp.enableTrace((DSP::TraceMode)(DSP::Ops | DSP::Regs | DSP::StackIndent)); - constexpr uint32_t blockSize = 64; - - constexpr uint32_t notifyThreshold = blockSize - 4; + const uint32_t blockSize = _blockSize; + const uint32_t notifyThreshold = blockSize > 4 ? blockSize - 4 : 0; uint32_t callbackCount = 0; dsp56k::Semaphore sem(1); @@ -263,5 +266,5 @@ void ConsoleApp::run(const std::string& _audioOutputFilename, uint32_t _maxSampl midiEvents.clear(); } - esai.setCallback(nullptr,0); + esai.setCallback([&](dsp56k::Audio*){},0); } diff --git a/source/virusConsoleLib/consoleApp.h b/source/virusConsoleLib/consoleApp.h @@ -25,7 +25,7 @@ public: static void waitReturn(); - void run(const std::string& _audioOutputFilename, uint32_t _maxSampleCount = 0, bool _createDebugger = false, bool _dumpAssembler = false); + void run(const std::string& _audioOutputFilename, uint32_t _maxSampleCount = 0, uint32_t _blockSize = 64, bool _createDebugger = false, bool _dumpAssembler = false); const virusLib::ROMFile& getRom() const { return m_rom; } diff --git a/source/virusIntegrationTest/integrationTest.cpp b/source/virusIntegrationTest/integrationTest.cpp @@ -12,6 +12,7 @@ #include "../synthLib/wavReader.h" #include "../synthLib/os.h" +#include "../virusLib/buildconfig.h" namespace synthLib { @@ -101,6 +102,7 @@ int main(int _argc, char* _argv[]) return -1; } +#if !VIRUS_SUPPORT_TI if(romFile.find("firmware") != std::string::npos) { auto* hFile = fopen(romFile.c_str(), "rb"); @@ -117,6 +119,7 @@ int main(int _argc, char* _argv[]) continue; } } +#endif std::vector<std::string> presets; diff --git a/source/virusLib/CMakeLists.txt b/source/virusLib/CMakeLists.txt @@ -3,12 +3,25 @@ project(virusLib) add_library(virusLib STATIC) +if(${CMAKE_PROJECT_NAME}_SYNTH_OSTIRUS) + set(VIRUS_SUPPORT_TI on) +else() + set(VIRUS_SUPPORT_TI off) +endif() + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/buildconfig.h.in ${CMAKE_CURRENT_SOURCE_DIR}/buildconfig.h) + set(SOURCES + buildconfig.h + buildconfig.h.in demoplayback.cpp demoplayback.h + demoplaybackTI.cpp demoplaybackTI.h device.cpp device.h deviceModel.cpp deviceModel.h dspMemoryPatches.cpp dspMemoryPatches.h dspSingle.cpp dspSingle.h + dspSingleSnow.cpp dspSingleSnow.h + dspMultiTI.cpp dspMultiTI.h frontpanelState.cpp frontpanelState.h hdi08List.cpp hdi08List.h hdi08MidiQueue.cpp hdi08MidiQueue.h @@ -19,6 +32,7 @@ set(SOURCES microcontroller.cpp microcontroller.h microcontrollerTypes.cpp microcontrollerTypes.h midiFileToRomData.cpp midiFileToRomData.h + unpacker.cpp unpacker.h utils.h ) diff --git a/source/virusLib/buildconfig.h b/source/virusLib/buildconfig.h @@ -0,0 +1,3 @@ +#pragma once + +#define VIRUS_SUPPORT_TI 1 diff --git a/source/virusLib/buildconfig.h.in b/source/virusLib/buildconfig.h.in @@ -0,0 +1,3 @@ +#pragma once + +#cmakedefine01 VIRUS_SUPPORT_TI diff --git a/source/virusLib/demoplaybackTI.cpp b/source/virusLib/demoplaybackTI.cpp @@ -0,0 +1,173 @@ +#include "demoplaybackTI.h" + +#include <cstdint> +#include <cstdio> +#include <cstring> // memcpy + +#include <vector> + +#include "microcontroller.h" +#include "../synthLib/midiTypes.h" + +namespace virusLib +{ + bool DemoPlaybackTI::loadFile(const std::string& _filename) + { + auto* hFile = fopen(_filename.c_str(), "rb"); + if(!hFile) + return false; + + fseek(hFile, 0, SEEK_END); + const size_t size = ftell(hFile); + fseek(hFile, 0, SEEK_SET); + + std::vector<uint8_t> data; + data.resize(size); + const auto numRead = fread(&data[0], 1, size, hFile); + fclose(hFile); + if(numRead != size) + return false; + + if(findDemoData(data)) + return loadBinData(data); + + return false; + } + + bool DemoPlaybackTI::loadBinData(const std::vector<uint8_t>& _data) + { + if(_data[0] != 0xf8 || _data[1] != 0x50) + return false; + + // skip 4 unknown bytes at startup + for(size_t i=4; i<_data.size();) + { + if(!parseChunk(_data, i)) + break; + + i += 3 + m_chunks.back().data.size(); + } + + if(m_chunks.empty()) + return false; + + setTimeScale(10.89f); + return true; + } + + bool DemoPlaybackTI::findDemoData(std::vector<uint8_t>& _data) + { + constexpr uint8_t key[] = "demoDrums Mixed "; + constexpr size_t keySize = std::size(key) - 1; + + for(size_t i=0; i<_data.size() - keySize; ++i) + { + for(size_t s=0; s<keySize; ++s) + { + if(_data[i+s] != key[s]) + break; + + if(s == keySize - 1) + { + _data.erase(_data.begin(), _data.begin() + static_cast<std::vector<uint8_t>::difference_type>(i + keySize)); + return true; + } + } + } + return true; + } + + bool DemoPlaybackTI::parseChunk(const std::vector<uint8_t>& _data, const size_t _offset) + { + Chunk chunk; + + const auto size = _data[_offset]; + + if(!size) + return false; + + if(_offset + 3 + size > _data.size()) + return false; + + chunk.data.resize(size); + memcpy(&chunk.data[0], &_data[_offset+1], size); + + chunk.deltaTime = static_cast<uint32_t>(_data[_offset + size + 1]) << 8 | _data[_offset + size + 2]; + + m_chunks.push_back(chunk); + return true; + } + + bool DemoPlaybackTI::processEvent(const Chunk& _chunk) + { + const auto& data = _chunk.data; + + for(size_t i=0; i<data.size();) + { + if(data[i] == 0xff) + { + stop(); + return false; // end + } + + if(data[i] == 0xf4) + { + writeRawData(data); + m_remainingPresetBytes = 519 - static_cast<int32_t>(data.size()); // 512 + 6 for header + 1 to have 24 bit words + break; + } + if(m_remainingPresetBytes > 0) + { + if(data.size() > m_remainingPresetBytes) + { + std::vector<uint8_t> temp; + temp.insert(temp.begin(), data.begin(), data.begin() + m_remainingPresetBytes); + i = m_remainingPresetBytes; + writeRawData(temp); + m_remainingPresetBytes = 0; + continue; + } + + writeRawData(data); + m_remainingPresetBytes -= static_cast<int32_t>(data.size()); + break; + } + + auto sendMidiEvent = [&](const size_t _offset) + { + synthLib::SMidiEvent ev; + ev.a = data[_offset]; + ev.b = data.size() > _offset + 1 ? data[_offset + 1] : 0; + ev.c = data.size() > _offset + 2 ? data[_offset + 2] : 0; + + // hack to re-enable the rate-reducing effect on the choir that is gone somehow, maybe they removed it in a later revision because it "sounds broken" or something +// if(ev.a == 0xae && ev.b == 0x66) +// ev.b = 0x65; + + m_mc.sendMIDI(ev); + m_mc.sendPendingMidiEvents(std::numeric_limits<uint32_t>::max()); + }; + + switch (data[i] & 0xf0) + { + case synthLib::M_NOTEOFF: + case synthLib::M_NOTEON: + case synthLib::M_POLYPRESSURE: + case synthLib::M_CONTROLCHANGE: + case synthLib::M_PROGRAMCHANGE: + case synthLib::M_PITCHBEND: + sendMidiEvent(i); + i += 3; + break; + case synthLib::M_AFTERTOUCH: + sendMidiEvent(i); + i += 2; + break; + default: + assert(false && "unknown event type"); + } + } + + return true; + } +} diff --git a/source/virusLib/demoplaybackTI.h b/source/virusLib/demoplaybackTI.h @@ -0,0 +1,37 @@ +#pragma once + +#include "demoplayback.h" + +namespace virusLib +{ + class Microcontroller; + + class DemoPlaybackTI : public DemoPlayback + { + public: + DemoPlaybackTI(Microcontroller& _mc) : DemoPlayback(_mc) {} + + bool loadFile(const std::string& _filename) override; + bool loadBinData(const std::vector<uint8_t>& _data) override; + + static bool findDemoData(std::vector<uint8_t>& _data); + + private: + struct Chunk + { + uint32_t deltaTime; + std::vector<uint8_t> data; + }; + + bool parseChunk(const std::vector<uint8_t>& _data, size_t _offset); + + size_t getEventCount() const override { return m_chunks.size(); } + uint32_t getEventDelay(const size_t _index) const override { return m_chunks[_index].deltaTime; } + bool processEvent(const size_t _index) override { return processEvent(m_chunks[_index]); } + + bool processEvent(const Chunk& _chunk); + + std::vector<Chunk> m_chunks; + int32_t m_remainingPresetBytes = 0; + }; +} diff --git a/source/virusLib/device.cpp b/source/virusLib/device.cpp @@ -1,6 +1,7 @@ #include "device.h" -#include "dspSingle.h" +#include "dspMultiTI.h" +#include "dspSingleSnow.h" #include "romfile.h" #include "dsp56kEmu/jit.h" @@ -18,7 +19,7 @@ namespace virusLib , m_samplerate(getDeviceSamplerate(_preferredDeviceSamplerate, _hostSamplerate)) { if(!m_rom.isValid()) - throw synthLib::DeviceException(synthLib::DeviceError::FirmwareMissing, "Either a ROM file (.bin) or an OS update file (.mid) is required, but neither was found."); + throw synthLib::DeviceException(synthLib::DeviceError::FirmwareMissing, "A firmware ROM file (firmware.bin) is required, but was not found."); DspSingle* dsp1; createDspInstances(dsp1, m_dsp2, m_rom, m_samplerate); @@ -77,6 +78,20 @@ namespace virusLib case DeviceModel::Snow: case DeviceModel::TI: case DeviceModel::TI2: + return {32000.0f, 44100.0f, 48000.0f, 64000.0f, 88200.0f, 96000.0f}; + } + } + + std::vector<float> Device::getPreferredSamplerates() const + { + switch (m_rom.getModel()) + { + default: + case DeviceModel::ABC: + return getSupportedSamplerates(); + case DeviceModel::Snow: + case DeviceModel::TI: + case DeviceModel::TI2: return {44100.0f, 48000.0f}; } } @@ -86,11 +101,15 @@ namespace virusLib return m_samplerate; } - bool Device::setSamplerate(float _samplerate) + bool Device::setSamplerate(const float _samplerate) { if(!synthLib::Device::setSamplerate(_samplerate)) return false; m_samplerate = _samplerate; + configureDSP(*m_dsp, m_rom, m_samplerate); + if(m_dsp2) + configureDSP(*m_dsp2, m_rom, m_samplerate); + m_mc->setSamplerate(_samplerate); return true; } @@ -105,8 +124,35 @@ namespace virusLib synthLib::Device::process(_inputs, _outputs, _size, _midiIn, _midiOut); - m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 0, 2); // TIMER 1 = ACI = LFO 1 LED - m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 1, 1); // TIMER 2 = ADO = LFO 2/3 LED + if(m_rom.isTIFamily()) + { + // Apparently this LED model did not want a completely closed PWM + constexpr auto minimumValue = 0.785339653f; + constexpr auto maximumValue = 0.999146f; + + if(m_rom.getModel() == DeviceModel::Snow) + { + m_frontpanelStateDSP.m_lfoPhases[0] = 1.f; + m_frontpanelStateDSP.m_lfoPhases[1] = 1.f; + m_frontpanelStateDSP.m_lfoPhases[2] = 1.f; + m_frontpanelStateDSP.m_logo = 1.f; + + FrontpanelState::updatePhaseFromTimer(m_frontpanelStateDSP.m_bpm, m_dsp->getDSP(), 1, 0.83f, 1.0f); + } + else + { + m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 0, 1, minimumValue, maximumValue); + m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 1, 2, minimumValue, maximumValue); + m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 2, 0, minimumValue, maximumValue); + + FrontpanelState::updatePhaseFromTimer(m_frontpanelStateDSP.m_logo, m_dsp2->getDSP(), 0, 0.963654f, 1); + } + } + else + { + m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 0, 2); // TIMER 1 = ACI = LFO 1 LED + m_frontpanelStateDSP.updateLfoPhaseFromTimer(m_dsp->getDSP(), 1, 1); // TIMER 2 = ADO = LFO 2/3 LED + } m_numSamplesProcessed += static_cast<uint32_t>(_size); @@ -292,7 +338,12 @@ namespace virusLib uint32_t Device::getInternalLatencyMidiToOutput() const { // Note that this is an average value, midi latency drifts in a range of roughly +/- 61 samples - return 324; + constexpr auto latency = 324; + + if(m_rom.isTIFamily()) + return latency - 108; // TI seems to have improved a bit + + return latency; } uint32_t Device::getInternalLatencyInputToOutput() const @@ -309,12 +360,27 @@ namespace virusLib uint32_t Device::getChannelCountOut() { - return 6; + return m_rom.isTIFamily() ? 12 : 6; } void Device::createDspInstances(DspSingle*& _dspA, DspSingle*& _dspB, const ROMFile& _rom, const float _samplerate) { - _dspA = new DspSingle(0x040000, false, nullptr, _rom.getModel() == DeviceModel::A); +#if VIRUS_SUPPORT_TI + if(_rom.getModel() == DeviceModel::Snow) + { + _dspA = new DspSingleSnow(); + } + else if(_rom.getModel() == DeviceModel::TI || _rom.getModel() == DeviceModel::TI2) + { + auto* dsp = new DspMultiTI(); + _dspA = dsp; + _dspB = &dsp->getDSP2(); + } + else +#endif + { + _dspA = new DspSingle(_rom.isTIFamily() ? 0x100000 : 0x040000, _rom.isTIFamily(), nullptr, _rom.getModel() == DeviceModel::A); + } configureDSP(*_dspA, _rom, _samplerate); @@ -388,9 +454,30 @@ namespace virusLib auto& jit = _dsp.getJIT(); auto conf = jit.getConfig(); - conf.aguSupportBitreverse = false; - conf.aguSupportMultipleWrapModulo = false; - conf.dynamicPeripheralAddressing = false; + if(_rom.isTIFamily()) + { + auto& clock = _dsp.getPeriphX().getEsaiClock(); + + const auto sr = static_cast<int>(_samplerate); + + clock.setExternalClockFrequency(std::min(sr, 48000) * 256); + + if(_rom.getModel() != DeviceModel::Snow) + { + clock.setSamplerate(sr * 3); + clock.setEsaiDivider(&_dsp.getPeriphY().getEsai(), 0); + clock.setEsaiDivider(&_dsp.getPeriphX().getEsai(), 2); + } + + conf.aguSupportBitreverse = true; + conf.maxDoIterations = 32; + + clock.setClockSource(dsp56k::EsaiClock::ClockSource::Cycles); + } + else + { + conf.aguSupportBitreverse = false; + } jit.setConfig(conf); } diff --git a/source/virusLib/device.h b/source/virusLib/device.h @@ -23,6 +23,7 @@ namespace virusLib ~Device() override; std::vector<float> getSupportedSamplerates() const override; + std::vector<float> getPreferredSamplerates() const override; float getSamplerate() const override; bool setSamplerate(float _samplerate) override; diff --git a/source/virusLib/dspMultiTI.cpp b/source/virusLib/dspMultiTI.cpp @@ -0,0 +1,216 @@ +#include "dspMultiTI.h" + +#if VIRUS_SUPPORT_TI + +namespace virusLib +{ + constexpr uint32_t g_esai1TxBlockSize = 6 * 3 * 2; // 6 = number of TX pins, 3 = number of slots per frame, 2 = double data rate + constexpr uint32_t g_esai1TxPadding = g_esai1TxBlockSize; + + constexpr uint32_t g_esai1RxBlockSize = 4 * 3 * 2; // 4 = number of RX pins, 3 = number of slots per frame, 2 = double data rate + constexpr uint32_t g_esai1RxPadding = g_esai1RxBlockSize; + + constexpr uint32_t g_magicIntervalSamples = 256; + + static constexpr dsp56k::TWord g_magicNumber = 0xedc987; + + void audioAdd(float& _dst, float _src) + { + _dst += _src; + } + + void audioAdd(dsp56k::TWord& _dst, const dsp56k::TWord _src) + { + auto dst = dsp56k::signextend<int32_t, 24>(static_cast<int32_t>(_dst)); + dst += dsp56k::signextend<int32_t, 24>(static_cast<int32_t>(_src)); + _dst = static_cast<dsp56k::TWord>(dst) & 0xffffff; + } + + template <typename T> void ensureSize(std::vector<T>& _buf, size_t _size) + { + if(_buf.size() > _size) + return; + _buf.resize(_size, 0); + } + + template <typename T> void wrapPadding(std::vector<T>& _buf, const uint32_t _usedSize) + { + size_t iSrc = _usedSize; + + for (size_t i=0; i<g_esai1TxPadding; ++i, ++iSrc) + _buf[i] = _buf[iSrc]; + } + + template <typename T> void DspMultiTI::Esai1Out::processAudioOutput(dsp56k::Esai& _esai, uint32_t _frames, const synthLib::TAudioOutputsT<T>& _outputs, uint32_t _firstOutChannel, const std::array<uint32_t, 6>& _sourceIndices) + { + ensureSize(*this, _frames * g_esai1TxBlockSize + g_esai1TxPadding); + + _esai.processAudioOutput(data() + g_esai1TxPadding, _frames * 2); + + if(m_blockStart == InvalidOffset) + { + for(uint32_t i=g_esai1TxPadding; i<g_esai1TxBlockSize * _frames + g_esai1TxPadding; ++i) + { + if(at(i) != g_magicNumber) + continue; + + // OS writes the magic value to position $b of its internal ring buffer + const auto off = i - 0xb; + + m_blockStart = off / g_esai1TxBlockSize; + m_blockStart = off - m_blockStart * g_esai1TxBlockSize; + break; + } + } + + if(m_blockStart != InvalidOffset) + { + const auto* p = &at(m_blockStart); + + for(size_t i=0; i<_frames; ++i) + { + _outputs[_firstOutChannel ][i] += dsp56k::dsp2sample<T>(p[_sourceIndices[0]]); + _outputs[_firstOutChannel+1][i] += dsp56k::dsp2sample<T>(p[_sourceIndices[1]]); + _outputs[_firstOutChannel+2][i] += dsp56k::dsp2sample<T>(p[_sourceIndices[2]]); + _outputs[_firstOutChannel+3][i] += dsp56k::dsp2sample<T>(p[_sourceIndices[3]]); + _outputs[_firstOutChannel+4][i] += dsp56k::dsp2sample<T>(p[_sourceIndices[4]]); + _outputs[_firstOutChannel+5][i] += dsp56k::dsp2sample<T>(p[_sourceIndices[5]]); + + p += g_esai1TxBlockSize; + } + } + + wrapPadding(*this, _frames * g_esai1TxBlockSize); + } + + template <typename T> void DspMultiTI::Esai1in::processAudioinput(dsp56k::Esai& _esai, uint32_t _frames, uint32_t _latency, const synthLib::TAudioInputsT<T>& _inputs) + { + ensureSize(*this, _frames * g_esai1RxBlockSize); + + uint32_t blockIdx = 0; + + static constexpr uint32_t offset = 9; + + { + uint32_t i=0; + + at(blockIdx + offset + (g_esai1RxBlockSize>>1)) = dsp56k::sample2dsp<T>(_inputs[0][i]); + at(blockIdx + offset ) = m_previousInput; + + blockIdx += g_esai1RxBlockSize; + } + + for(uint32_t i=1; i<_frames; ++i) + { + at(blockIdx + offset + (g_esai1RxBlockSize>>1)) = dsp56k::sample2dsp<T>(_inputs[0][i]); + at(blockIdx + offset ) = dsp56k::sample2dsp<T>(_inputs[1][i-1]); + + blockIdx += g_esai1RxBlockSize; + } + + _esai.processAudioInput(data(), _frames * 2, 3, _latency * 2); + + m_previousInput = dsp56k::sample2dsp<T>(_inputs[1][_frames-1]); + } + + DspMultiTI::DspMultiTI() : DspSingle(0x100000, true, "DSP A"), m_dsp2(0x100000, true, "DSP B") + { + getHDI08().writeHDR(0x0000); // this = Master + m_dsp2.getHDI08().writeHDR(0x8000); // m_dsp2 = Slave + + getPeriphX().getEsai().writeEmptyAudioIn(2); + m_dsp2.getPeriphX().getEsai().writeEmptyAudioIn(2); + } + + template <typename T> + void processAudioTI(DspMultiTI& _dsp, DspSingle& _dsp2, DspMultiTI::EsaiBufs<T>& _buffers, const synthLib::TAudioInputsT<T>& _inputs, synthLib::TAudioOutputsT<T> _outputs, const size_t _samples, const uint32_t _latency) + { + const auto s = static_cast<uint32_t>(_samples); + + // ESAI inputs + ensureSize(_buffers.dummyInput, _samples << 1); + const T* in = _buffers.dummyInput.data(); + const T* inputs[8] = { in, in, in, in, in, in, in, in }; + + // Master ESAI input might be the USB input, we don't need it as we only have one input + _dsp.getPeriphX().getEsai().processAudioInputInterleaved(inputs, s, _latency); + + // Master ESAI_1 input gets the analog input from the slave, inject the interleaved input here + _buffers.in.processAudioinput(_dsp.getPeriphY().getEsai(), s, _latency, _inputs); + + // Slave ESAI input gets the analog input in regular fashion + + _dsp2.getPeriphX().getEsai().processAudioInput<T>(1, _latency, [&](size_t _s, dsp56k::Audio::RxFrame& _frame) + { + _frame.resize(2); + _frame[0][0] = dsp56k::sample2dsp<T>(_inputs[0][0]); + _frame[1][0] = dsp56k::sample2dsp<T>(_buffers.m_previousInput); + }); + + _dsp2.getPeriphX().getEsai().processAudioInput<T>(s - 1, _latency, [&](size_t _s, dsp56k::Audio::RxFrame& _frame) + { + _frame.resize(2); + _frame[0][0] = dsp56k::sample2dsp<T>(_inputs[0][_s]); + _frame[1][0] = dsp56k::sample2dsp<T>(_inputs[1][_s+1]); + }); + + _buffers.m_previousInput = _inputs[1][s-1]; + + // Slave ESAI_1 does not get the ADC at all but only data from the master, we don't need it here + _dsp2.getPeriphY().getEsai().processAudioInputInterleaved(inputs, s * 2, _latency * 2); + + // ESAI outputs + ensureSize(_buffers.dummyOutput, _samples << 1); + for (auto& o : _outputs) + { + if(!o) + o = _buffers.dummyOutput.data(); + } + + T* out = _buffers.dummyOutput.data(); + T* outputs[12] = {out, out, out, out, out, out, out, out, out, out, out, out}; + + // DAC outputs on the Master are sent in regular fashion + outputs[4] = _outputs[0]; outputs[5] = _outputs[1]; + outputs[6] = _outputs[2]; outputs[7] = _outputs[3]; + outputs[8] = _outputs[4]; outputs[9] = _outputs[5]; + + _dsp.getPeriphX().getEsai().processAudioOutputInterleaved(outputs, s); + + // USB outputs on the Slave are sent in regular fashion + outputs[4] = _outputs[6]; outputs[5] = _outputs[7]; + outputs[6] = _outputs[8]; outputs[7] = _outputs[9]; + outputs[8] = _outputs[10]; outputs[9] = _outputs[11]; + + _dsp2.getPeriphX().getEsai().processAudioOutputInterleaved(outputs, s); + + // ESAI_1 outputs + constexpr auto halfBS = g_esai1TxBlockSize >> 1; + + // USB outputs on the Master are sent to the Slave via ESAI_1 in 1/3 interleaved format => unpack it + _buffers.dspA.processAudioOutput(_dsp.getPeriphY().getEsai(), s, _outputs, 6, { + 5, 5+halfBS, + 16+halfBS, 16, + 17+halfBS, 17 + }); + + // DAC outputs on the Slave are send via ESAI_1 to the Master in 1/3 interleaved format => unpack it + _buffers.dspB.processAudioOutput(_dsp2.getPeriphY().getEsai(), s, _outputs, 0, { + 4,4+halfBS, + 5,5+halfBS, + 16+halfBS,16 + }); + } + + void DspMultiTI::processAudio(const synthLib::TAudioInputs& _inputs, const synthLib::TAudioOutputs& _outputs, size_t _samples, uint32_t _latency) + { + processAudioTI(*this, m_dsp2, m_bufferF, _inputs, _outputs, _samples, _latency); + } + + void DspMultiTI::processAudio(const synthLib::TAudioInputsInt& _inputs, const synthLib::TAudioOutputsInt& _outputs, size_t _samples, uint32_t _latency) + { + processAudioTI(*this, m_dsp2, m_bufferI, _inputs, _outputs, _samples, _latency); + } +} + +#endif +\ No newline at end of file diff --git a/source/virusLib/dspMultiTI.h b/source/virusLib/dspMultiTI.h @@ -0,0 +1,64 @@ +#pragma once + +#include "buildconfig.h" + +#if VIRUS_SUPPORT_TI + +#include "dspSingle.h" + +#include "../synthLib/audiobuffer.h" + +namespace virusLib +{ + class DspMultiTI final : public DspSingle + { + public: + static constexpr uint32_t InvalidOffset = 0xffffffff; + + class Esai1Out : public std::vector<dsp56k::TWord> + { + public: + template<typename T> + void processAudioOutput(dsp56k::Esai& _esai, uint32_t _frames, const synthLib::TAudioOutputsT<T>& _outputs, uint32_t _firstOutChannel, const std::array<uint32_t, 6>& _sourceIndices); + + private: + uint32_t m_blockStart = InvalidOffset; + }; + + class Esai1in : public std::vector<dsp56k::TWord> + { + public: + template<typename T> + void processAudioinput(dsp56k::Esai& _esai, uint32_t _frames, uint32_t _latency, const synthLib::TAudioInputsT<T>& _inputs); + + private: + uint32_t m_magicTimer = 0; + dsp56k::TWord m_previousInput = 0; + }; + + template<typename T> struct EsaiBufs + { + Esai1Out dspA; + Esai1Out dspB; + Esai1in in; + T m_previousInput = 0; + std::vector<T> dummyInput; + std::vector<T> dummyOutput; + }; + + DspMultiTI(); + + void processAudio(const synthLib::TAudioInputs& _inputs, const synthLib::TAudioOutputs& _outputs, size_t _samples, uint32_t _latency) override; + void processAudio(const synthLib::TAudioInputsInt& _inputs, const synthLib::TAudioOutputsInt& _outputs, size_t _samples, uint32_t _latency) override; + + DspSingle& getDSP2() { return m_dsp2; } + + private: + DspSingle m_dsp2; + + EsaiBufs<float> m_bufferF; + EsaiBufs<dsp56k::TWord> m_bufferI; + }; +} + +#endif diff --git a/source/virusLib/dspSingleSnow.cpp b/source/virusLib/dspSingleSnow.cpp @@ -0,0 +1,57 @@ +#include "dspSingleSnow.h" + +#if VIRUS_SUPPORT_TI + +namespace virusLib +{ + DspSingleSnow::DspSingleSnow() : DspSingle(0x100000, true) + { + } + + template<typename T> void + processAudioSnow(DspSingleSnow& _dsp, const synthLib::TAudioInputsT<T>& _inputs, const synthLib::TAudioOutputsT<T>& _outputs, const size_t _samples, const uint32_t _latency, std::vector<T>& _dummyIn, std::vector<T>& _dummyOut) + { + DspSingle::ensureSize(_dummyIn, _samples<<1); + DspSingle::ensureSize(_dummyOut, _samples<<1); + + const auto* dIn = _dummyIn.data(); + auto* dOut = _dummyOut.data(); + + const auto s = static_cast<uint32_t>(_samples); + + const T* inputs0[] = {_inputs[0], _inputs[1], dIn, dIn, dIn, dIn, dIn, dIn}; + const T* inputs1[] = {_inputs[0], _inputs[1], dIn, dIn, dIn, dIn, dIn, dIn}; + + _dsp.getPeriphX().getEsai().processAudioInputInterleaved(inputs0, s, _latency); + _dsp.getPeriphY().getEsai().processAudioInputInterleaved(inputs1, s, _latency); + + T* outputs0[] = { + _outputs[0] ? _outputs[0] : dOut, + _outputs[1] ? _outputs[1] : dOut, + dOut, dOut, dOut, dOut, dOut, dOut, dOut, dOut, dOut, dOut}; + + T* outputs1[] = {dOut, dOut, dOut, dOut, + _outputs[2] ? _outputs[2] : dOut, + _outputs[3] ? _outputs[3] : dOut, + _outputs[4] ? _outputs[4] : dOut, + _outputs[5] ? _outputs[5] : dOut, + _outputs[6] ? _outputs[6] : dOut, + _outputs[7] ? _outputs[7] : dOut, + dOut, dOut}; + + _dsp.getPeriphX().getEsai().processAudioOutputInterleaved(outputs0, s); + _dsp.getPeriphY().getEsai().processAudioOutputInterleaved(outputs1, s); + } + + void DspSingleSnow::processAudio(const synthLib::TAudioInputs& _inputs, const synthLib::TAudioOutputs& _outputs, const size_t _samples, const uint32_t _latency) + { + processAudioSnow(*this, _inputs, _outputs, _samples, _latency, m_dummyBufferInF, m_dummyBufferOutF); + } + + void DspSingleSnow::processAudio(const synthLib::TAudioInputsInt& _inputs, const synthLib::TAudioOutputsInt& _outputs, const size_t _samples, const uint32_t _latency) + { + processAudioSnow(*this, _inputs, _outputs, _samples, _latency, m_dummyBufferInI, m_dummyBufferOutI); + } +} + +#endif +\ No newline at end of file diff --git a/source/virusLib/dspSingleSnow.h b/source/virusLib/dspSingleSnow.h @@ -0,0 +1,21 @@ +#pragma once + +#include "buildconfig.h" + +#if VIRUS_SUPPORT_TI + +#include "dspSingle.h" + +namespace virusLib +{ + class DspSingleSnow final : public DspSingle + { + public: + DspSingleSnow(); + + void processAudio(const synthLib::TAudioInputs& _inputs, const synthLib::TAudioOutputs& _outputs, size_t _samples, uint32_t _latency) override; + void processAudio(const synthLib::TAudioInputsInt& _inputs, const synthLib::TAudioOutputsInt& _outputs, size_t _samples, uint32_t _latency) override; + }; +} + +#endif diff --git a/source/virusLib/hdi08MidiQueue.cpp b/source/virusLib/hdi08MidiQueue.cpp @@ -7,7 +7,7 @@ namespace virusLib { - Hdi08MidiQueue::Hdi08MidiQueue(DspSingle& _dsp, Hdi08Queue& _output, const bool _useEsaiBasedTiming) : m_output(_output), m_esai(_dsp.getAudio()), m_useEsaiBasedTiming(_useEsaiBasedTiming) + Hdi08MidiQueue::Hdi08MidiQueue(DspSingle& _dsp, Hdi08Queue& _output, const bool _useEsaiBasedTiming, const bool _isTI) : m_output(_output), m_esai(_dsp.getAudio()), m_useEsaiBasedTiming(_useEsaiBasedTiming), m_isTI(_isTI) { if(_useEsaiBasedTiming) { @@ -43,11 +43,13 @@ namespace virusLib void Hdi08MidiQueue::sendMidiToDSP(uint8_t _a, const uint8_t _b, const uint8_t _c) const { - m_output.writeHostFlags(1, 1); + const char flagA = m_isTI ? 0 : 1; + + m_output.writeHostFlags(flagA, 1); auto sendMIDItoDSP = [this](const uint8_t _midiByte) { - const dsp56k::TWord word = static_cast<dsp56k::TWord>(_midiByte) << 16; + const dsp56k::TWord word = static_cast<dsp56k::TWord>(_midiByte) << 16 | (m_isTI ? 0xffff : 0); m_output.writeRX(&word, 1); }; diff --git a/source/virusLib/hdi08MidiQueue.h b/source/virusLib/hdi08MidiQueue.h @@ -22,8 +22,8 @@ namespace virusLib class Hdi08MidiQueue { public: - explicit Hdi08MidiQueue(DspSingle& _dsp, Hdi08Queue& _output, bool _useEsaiBasedTiming); - explicit Hdi08MidiQueue(Hdi08MidiQueue&& _s) noexcept : m_output(_s.m_output), m_esai(_s.m_esai), m_useEsaiBasedTiming(_s.m_useEsaiBasedTiming) + explicit Hdi08MidiQueue(DspSingle& _dsp, Hdi08Queue& _output, bool _useEsaiBasedTiming, bool _isTI); + explicit Hdi08MidiQueue(Hdi08MidiQueue&& _s) noexcept : m_output(_s.m_output), m_esai(_s.m_esai), m_useEsaiBasedTiming(_s.m_useEsaiBasedTiming), m_isTI(_s.m_isTI) { assert(_s.m_pendingMidiEvents.empty()); _s.m_useEsaiBasedTiming = false; @@ -42,6 +42,7 @@ namespace virusLib Hdi08Queue& m_output; dsp56k::Audio& m_esai; bool m_useEsaiBasedTiming; + bool m_isTI; dsp56k::RingBuffer<synthLib::SMidiEvent, 1024, false> m_pendingMidiEvents; diff --git a/source/virusLib/microcontroller.cpp b/source/virusLib/microcontroller.cpp @@ -1,7 +1,8 @@ #include <vector> #include <chrono> #include <thread> -#include <cstring> // memcpy +#include <cstring> // memcpy +#include <cmath> // floor/abs #include "microcontroller.h" @@ -61,7 +62,7 @@ Microcontroller::Microcontroller(DspSingle& _dsp, const ROMFile& _romFile, bool bool failed = false; // read all singles from ROM and copy first ROM banks to RAM banks - for(uint32_t b=0; b<26 && !failed; ++b) + for(uint32_t b=0; b<128 && !failed; ++b) { std::vector<TPreset> singles; @@ -105,16 +106,135 @@ Microcontroller::Microcontroller(DspSingle& _dsp, const ROMFile& _romFile, bool void Microcontroller::sendInitControlCommands() { writeHostBitsWithWait(0, 1); +// const std::vector<TWord> magic = { 0xf4f473, 0xf4f46e, 0xf4f46f, 0xf4f477 }; // snow +// const std::vector<TWord> magic = { 0xf4f453, 0xf4f44e, 0xf4f44f, 0xf4f457 }; // SNOW +// const std::vector<TWord> magic = { 0xf4f454, 0xf4f449, 0xf4f453, 0xf4f44e, 0xf4f44f, 0xf4f457 }; // TISNOW +// const std::vector<TWord> magic = { 0xf4f473, 0x407f01, 0xf4f473, 0x401000, 0xf4f46e, 0x407f01, 0xf4f46e, 0x401000, 0xf4f46f, 0x407f01, 0xf4f46f, 0x401000, 0xf4f477, 0x407f01, 0xf4f477, 0x401000 }; +// const std::vector<TWord> magic = { 0xf4f473, 0x407f00, 0xf4f46e, 0x407f01, 0xf4f46f, 0x407f02, 0xf4f477, 0x407f03 }; +// m_hdi08.writeRX(magic); LOG("Sending Init Control Commands"); - sendControlCommand(MIDI_CLOCK_RX, 0x1); // Enable MIDI clock receive - sendControlCommand(GLOBAL_CHANNEL, 0x0); // Set global midi channel to 0 - sendControlCommand(MIDI_CONTROL_LOW_PAGE, 0x1); // Enable midi CC to edit parameters on page A - sendControlCommand(MIDI_CONTROL_HIGH_PAGE, 0x0); // Disable poly pressure to edit parameters on page B - sendControlCommand(MASTER_VOLUME, 127); // Set master volume to maximum - sendControlCommand(MASTER_TUNE, 64); // Set master tune to 0 - sendControlCommand(DEVICE_ID, OMNI_DEVICE_ID); // Set device ID to Omni + if(m_rom.isTIFamily()) + { + const std::vector<TWord> initCodeDS = + { + 0xF4F473, 0x407F00, + 0xF4F473, 0x401000, // Samplerate 44100 Hz +// 0xF47555, 0x104000, 0x0C0104, 0x000319, 0x007F00, 0x00407F, 0x000000, 0x00007E, 0x003728, 0x607F62, 0x3E3420, 0x190040, 0x406000, 0x663100, 0x402300, 0x401509, 0x2F233E, 0x286B6A, 0x400600, 0x010200, 0x384719, 0x137F00, 0x7F7F40, 0x150000, 0x006501, 0x010057, 0x000040, 0x404040, 0x4B5402, 0x010040, 0x000040, 0x404040, 0x407B01, 0x400400, 0x000269, 0x7F4000, 0x01017F, 0x001060, 0x126801, 0x00011B, 0x7F5010, 0x0C0140, 0x000000, 0x010000, 0x000040, 0x000000, 0x004000, 0x610100, 0x000100, 0x4B0000, 0x390400, 0x000000, 0x7F0000, 0x01423E, 0x010001, 0x000124, 0x000040, 0x000000, 0x000040, 0x40282B, 0x554040, 0x404049, 0x2C4060, 0x4D4040, 0x004040, 0x401603, 0x03107F, 0x144900, 0x004002, 0x490F19, 0x2B186A, 0x184814, 0x010000, 0x410000, 0x7F607F, 0x004864, 0x334040, 0x282000, 0x000000, 0x056556, 0x071845, 0x023C00, 0x202054, 0x202049, 0x202042, 0x430001, 0x000100, 0x010001, 0x440354, 0x373062, 0x000000, 0x400304, 0x020000, 0x000000, 0x7F4040, 0x7F7F40, 0x000005, 0x000200, 0x000000, 0x010000, 0x000000, 0x004000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x400000, 0x000000, 0x000000, 0x007F7F, 0x400000, 0x000000, 0x144600, 0x404614, 0x460040, 0x460135, 0x004000, 0x400040, 0x004000, 0x400040, 0x0B2903, 0x400000, 0x000000, 0x000000, 0x010002, 0x000000, 0x010000, 0x00001F, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x02697F, 0x400001, 0x000006, + 0xF4F473, 0x401000, // Samplerate 44100 Hz + 0xF00020, 0x330110, 0x734000, 0x00F700, + 0xF00020, 0x330110, 0x734009, 0x02F702, // USB Mode = 3 out 1 in + 0xF00020, 0x330110, 0x73400E, 0x00F700, // Set DSP clock base to $0 = 133 Mhz ($1 = 153 MHz) + 0xF00020, 0x330110, 0x73406D, 0x64F764, // DSP clock adjustment in percent (roughly), default $64 = 100%, max $79 = 121% + 0xF00020, 0x330110, 0x73400D, 0x00F700, // ?? + 0xF00020, 0x330110, 0x734010, 0x00F700, // Samplerate = 44100 Hz + 0xF00020, 0x330110, 0x734019, 0x01F701, // EQ = Enable + 0xF00020, 0x330110, 0x73401A, 0x01F701, // Arp = Enable + 0xF00020, 0x330110, 0x73401B, 0x01F701, // Delay = Enable + 0xF00020, 0x330110, 0x73401C, 0x01F701, // Reverb = Enable + 0xF00020, 0x330110, 0x73401D, 0x00F700, // Analog Input Phono Mode = off + 0xF00020, 0x330110, 0x73402D, 0x00F700, // Second Output Select = 0 + 0xF00020, 0x330110, 0x734032, 0x6EF76E, // BPM LED Brightness Ratio = $6e + 0xF00020, 0x330110, 0x734033, 0x50F750, // LED Brightness = $50 + 0xF00020, 0x330110, 0x734034, 0x7fF77f, // Logo Groove = $7f + 0xF00020, 0x330110, 0x734035, 0x40F740, // Random Patch Generator Depth = $40 + 0xF00020, 0x330110, 0x734036, 0x0CF70C, // Random Patch Generator Amount = $54 + 0xF00020, 0x330110, 0x73403B, 0x01F701, // USB Output Midi Data Cable Number = 1 + 0xF00020, 0x330110, 0x73403C, 0x01F701, // USB Output Panel Data Cable Number = 1 + 0xF00020, 0x330110, 0x73403E, 0x40F740, // Keyboard Param Velocity Curve = $40 + 0xF00020, 0x330110, 0x734040, 0x01F701, // Keyboard Param Local On = On + 0xF00020, 0x330110, 0x734041, 0x00F700, // Keyboard Param Channel Mode = 0 + 0xF00020, 0x330110, 0x734042, 0x40F740, // Keyboard Param Transpose = $40 + 0xF00020, 0x330110, 0x734043, 0x01F701, // Keyboard Param Modwheel = 1 + 0xF00020, 0x330110, 0x734044, 0x40F740, // Keyboard Param Hold Pedal = $40 + 0xF00020, 0x330110, 0x734045, 0x00F700, // Keyboard Param Pedal 2 Mode = 0 + 0xF00020, 0x330110, 0x734046, 0x40F740, // Keyboard Param Pressure Sensitivity = $40 + 0xF00020, 0x330110, 0x73404C, 0x00F700, // Pure Tuning = 0 + 0xF00020, 0x330110, 0x734057, 0x01F701, // Midi Volume Enable = On + 0xF00020, 0x330110, 0x73405A, 0x00F700, // Input Thru Level = 0 + 0xF00020, 0x330110, 0x73405B, 0x00F700, // Input Boost = 0 + 0xF00020, 0x330110, 0x73405C, 0x40F740, // Master Tune = +/- 0 + 0xF00020, 0x330110, 0x73405D, 0x10F710, // device ID $10 = omni + 0xF00020, 0x330110, 0x73405E, 0x01F701, // Midi Control Low Page = 1 = allow midi CC + 0xF00020, 0x330110, 0x73405F, 0x00F700, // Midi Control High Page = 0 = Do NOT allow Poly Pressure + 0xF00020, 0x330110, 0x734060, 0x00F700, // Midi Arp Send = 0 = off + 0xF00020, 0x330110, 0x73406A, 0x01F701, // Midi Clock RX = 1 = enabled + 0xF00020, 0x330110, 0x73406E, 0x00F700, // Soft Knob Config Mode 1 = 0 + 0xF00020, 0x330110, 0x73406F, 0x00F700, // Soft Knob Config Mode 2 = 0 + 0xF00020, 0x330110, 0x734070, 0x00F700, // Soft Knob Config Dest 1 = 0 + 0xF00020, 0x330110, 0x734071, 0x00F700, // Soft Knob Config Dest 2 = 0 + 0xF00020, 0x330110, 0x734072, 0x00F700, // Soft Knob Config Mode 3 = 0 +// 0xF0FFFF, 0x00FFFF, 0x20FFFF, 0x33FFFF, 0x01FFFF, 0x10FFFF, 0x73FFFF, 0x01FFFF, 0x10FFFF, 0x00FFFF, 0xF7FFFF, // parameter $10 for Part 1 = 0 + 0xF00020, 0x330110, 0x734073, 0x00F700, // Soft Knob Config Dest 3 = 0 + 0xF00020, 0x330110, 0x734079, 0x01F701, // Panel Destination = 1 + 0xF00020, 0x330110, 0x73407C, 0x00F700, // Global Channel = 0 + 0xF00020, 0x330110, 0x73407D, 0x02F702, // LED Mode = 2 + 0xF00020, 0x330110, 0x73407F, 0x63F763, // Master Volume = 99 +// 0xF47555, 0x104000, 0x0C0104, 0x000319, 0x007F00, 0x00407F, 0x000000, 0x00007E, 0x003728, 0x607F62, 0x3E3420, 0x190040, 0x406000, 0x663100, 0x402300, 0x401509, 0x2F233E, 0x286B6A, 0x400600, 0x010200, 0x384719, 0x137F00, 0x7F7F40, 0x150000, 0x006501, 0x010057, 0x000040, 0x404040, 0x4B5402, 0x010040, 0x000040, 0x404040, 0x407B01, 0x400400, 0x000269, 0x7F4000, 0x01017F, 0x001060, 0x126801, 0x00011B, 0x7F5010, 0x0C0140, 0x000000, 0x010000, 0x000040, 0x000000, 0x004000, 0x610100, 0x000100, 0x4B0000, 0x390400, 0x000000, 0x7F0000, 0x01423E, 0x010001, 0x000124, 0x000040, 0x000000, 0x000040, 0x40282B, 0x554040, 0x404049, 0x2C4060, 0x4D4040, 0x004040, 0x401603, 0x03107F, 0x144900, 0x004002, 0x490F19, 0x2B186A, 0x184814, 0x010000, 0x410000, 0x7F607F, 0x004864, 0x334040, 0x282000, 0x000000, 0x056556, 0x071845, 0x023C00, 0x202054, 0x202049, 0x202042, 0x430001, 0x000100, 0x010001, 0x440354, 0x373062, 0x000000, 0x400304, 0x020000, 0x000000, 0x7F4040, 0x7F7F40, 0x000005, 0x000200, 0x000000, 0x010000, 0x000000, 0x004000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x400000, 0x000000, 0x000000, 0x007F7F, 0x400000, 0x000000, 0x144600, 0x404614, 0x460040, 0x460135, 0x004000, 0x400040, 0x004000, 0x400040, 0x0B2903, 0x400000, 0x000000, 0x000000, 0x010002, 0x000000, 0x010000, 0x00001F, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x406401, 0x406400, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x02697F, 0x400001, 0x000006, + 0xF4F473, 0x401000, // Samplerate 44100 Hz +// 0xF4F473, 0x401001, // Samplerate 48000 Hz + }; + + m_hdi08.writeRX(initCodeDS); + +#if 0 + constexpr uint8_t prts = 0x4f; + + enum class Output : uint8_t + { + Out1L, Out1, Out1R, + Out2L, Out2, Out2R, + Out3L, Out3, Out3R, + Usb1L, Usb1, Usb1R, + Usb2L, Usb2, Usb2R, + Usb3L, Usb3, Usb3R + }; + + constexpr auto oa = static_cast<uint8_t>(Output::Usb1); + constexpr auto ob = static_cast<uint8_t>(Output::Usb2); + constexpr auto oc = static_cast<uint8_t>(Output::Usb3); + + constexpr uint8_t multi[] = + { + 0x02,0x01,0x00,0x01,0x49,0x6e,0x69,0x74,0x20,0x4d,0x75,0x6c,0x74,0x69,0x00,0x39, // Internal/"Init Multi"/Clock Tempo + 0x01,0x3c,0x00,0x10,0x00,0x01,0x01,0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x40,0x40, // Delay/Internal + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Bank Number + 0x00,0x00,0x00,0x00,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, // Program Number + 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, // Midi Channel + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Low Key + 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, // High Key + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, // Transpose + 0x40,0x42,0x43,0x41,0x47,0x42,0x46,0x41,0x48,0x46,0x44,0x40,0x40,0x40,0x40,0x40, // Detune + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, // Part Volume + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Midi Volume Init + oa ,oa ,ob ,ob ,oc ,oc ,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // Output Select + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Effect Send + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Internal + 0x41,0x46,0x40,0x48,0x41,0x49,0x47,0x41,0x42,0x47,0x40,0x45,0x41,0x49,0x47,0x46, // Internal + prts,prts,prts,prts,prts,prts,prts,prts,prts,prts,prts,prts,prts,prts,prts,prts // Part State + }; + + TPreset data; + memcpy(&data[0], multi, std::size(multi)); + + sendControlCommand(PLAY_MODE, PlayModeMulti); + + const auto words = presetToDSPWords(data, true); + + sendPreset(0, words, true); +#endif + } +// else + { + sendControlCommand(MIDI_CLOCK_RX, 0x1); // Enable MIDI clock receive + sendControlCommand(GLOBAL_CHANNEL, 0x0); // Set global midi channel to 0 + sendControlCommand(MIDI_CONTROL_LOW_PAGE, 0x1); // Enable midi CC to edit parameters on page A + sendControlCommand(MIDI_CONTROL_HIGH_PAGE, 0x0); // Disable poly pressure to edit parameters on page B + sendControlCommand(MASTER_VOLUME, 92); // Set master volume to 92, we tested it against a USB-connected TI and this is the perfect match + sendControlCommand(MASTER_TUNE, 64); // Set master tune to 0 + sendControlCommand(DEVICE_ID, OMNI_DEVICE_ID); // Set device ID to Omni + } } void Microcontroller::createDefaultState() @@ -134,7 +254,7 @@ void Microcontroller::writeHostBitsWithWait(const uint8_t flag0, const uint8_t f bool Microcontroller::sendPreset(const uint8_t program, const TPreset& preset, const bool isMulti) { - if(!isValid(preset)) + if(!isMulti && !isValid(preset)) return false; std::lock_guard lock(m_mutex); @@ -188,6 +308,9 @@ bool Microcontroller::sendPreset(const uint8_t program, const TPreset& preset, c } else if(program < m_singleEditBuffers.size()) { + if(program >= getPartCount()) + return false; + m_singleEditBuffers[program] = preset; } } @@ -216,9 +339,41 @@ void Microcontroller::sendControlCommand(const ControlCommand _command, const ui send(globalSettingsPage(), 0x0, _command, _value); } +void Microcontroller::setSamplerate(const float _samplerate) +{ + const auto sr = static_cast<int>(std::floor(_samplerate + 0.5f)); + + /* + 0 = 44100 Hz @ EXTAL 11289600 Hz (44100 * 256) + 1 = 48000 Hz @ EXTAL 12288000 Hz (48000 * 256) + 2 = 44100 Hz @ ^^ + 3 = 32000 Hz @ ^^ + 4 = 96000 Hz @ ^^ + 5 = 88200 Hz @ ^^ + 6 = 64000 Hz @ ^^ + */ + + TWord v; + + switch (sr) + { + default: + case 44100: v = 0; break; + case 48000: v = 1; break; + case 32000: v = 3; break; + case 96000: v = 4; break; + case 88200: v = 5; break; + case 64000: v = 6; break; + } + + std::lock_guard lock(m_mutex); + m_hdi08.writeRX({0xF4F473, 0x401000 + v}); +} uint32_t Microcontroller::getPartCount() const { + if(m_rom.getModel() == DeviceModel::Snow) + return 4; return 16; } @@ -357,7 +512,7 @@ bool Microcontroller::sendSysex(const std::vector<uint8_t>& _data, std::vector<S const auto size = _type == DUMP_SINGLE ? m_rom.getSinglePresetSize() : m_rom.getMultiPresetSize(); - const auto modelABCsize = ROMFile::getSinglePresetSize(); + const auto modelABCsize = ROMFile::getSinglePresetSize(DeviceModel::ABC); for(size_t i=0; i<modelABCsize; ++i) response.push_back(_dump[i]); @@ -507,7 +662,18 @@ bool Microcontroller::sendSysex(const std::vector<uint8_t>& _data, std::vector<S LOG("Received Single dump, Bank " << (int)toMidiByte(bank) << ", program " << (int)program); TPreset preset; preset.fill(0); - std::copy_n(_data.data() + g_sysexPresetHeaderSize, std::min(preset.size(), _data.size() - g_sysexPresetHeaderSize - g_sysexPresetFooterSize), preset.begin()); + if(_data.size() == 524 && m_rom.isTIFamily()) + { + // D preset + auto data(_data); + + data.erase(data.begin() + 0x100 + g_sysexPresetHeaderSize); // A/B/C checksum, not needed on D + std::copy_n(data.data() + g_sysexPresetHeaderSize, std::min(preset.size(), _data.size() - g_sysexPresetHeaderSize - g_sysexPresetFooterSize), preset.begin()); + } + else + { + std::copy_n(_data.data() + g_sysexPresetHeaderSize, std::min(preset.size(), _data.size() - g_sysexPresetHeaderSize - g_sysexPresetFooterSize), preset.begin()); + } return writeSingle(bank, program, preset); } case DUMP_MULTI: @@ -571,9 +737,12 @@ bool Microcontroller::sendSysex(const std::vector<uint8_t>& _data, std::vector<S return enqueue(); buildArrangementResponse(); break; + case PAGE_6E: + case PAGE_6F: case PAGE_A: case PAGE_B: case PAGE_C: + case PAGE_D: { const auto page = static_cast<Page>(cmd); @@ -666,8 +835,11 @@ bool Microcontroller::sendSysex(const std::vector<uint8_t>& _data, std::vector<S std::vector<TWord> Microcontroller::presetToDSPWords(const TPreset& _preset, const bool _isMulti) const { + const auto presetVersion = getPresetVersion(_preset); + const auto presetModel = presetVersion <= C ? DeviceModel::ABC : DeviceModel::Snow; + const auto targetByteSize = _isMulti ? m_rom.getMultiPresetSize() : m_rom.getSinglePresetSize(); - const auto sourceByteSize = _isMulti ? ROMFile::getMultiPresetSize() : ROMFile::getSinglePresetSize(); + const auto sourceByteSize = _isMulti ? ROMFile::getMultiPresetSize(presetModel) : ROMFile::getSinglePresetSize(presetModel); const auto sourceWordSize = (sourceByteSize + 2) / 3; const auto targetWordSize = (targetByteSize + 2) / 3; @@ -979,7 +1151,7 @@ void Microcontroller::addDSP(DspSingle& _dsp, bool _useEsaiBasedMidiTiming) { m_hdi08.addHDI08(_dsp.getHDI08()); m_hdi08TxParsers.emplace_back(*this); - m_midiQueues.emplace_back(_dsp, m_hdi08.getQueue(m_hdi08.size()-1), _useEsaiBasedMidiTiming); + m_midiQueues.emplace_back(_dsp, m_hdi08.getQueue(m_hdi08.size()-1), _useEsaiBasedMidiTiming, m_rom.isTIFamily()); } void Microcontroller::processHdi08Tx(std::vector<synthLib::SMidiEvent>& _midiEvents) @@ -1084,6 +1256,8 @@ void Microcontroller::applyToSingleEditBuffer(TPreset& _single, const Page _page { case PAGE_A: offset = 0; break; case PAGE_B: offset = 1; break; + case PAGE_6E: offset = 2; break; + case PAGE_6F: offset = 3; break; default: return; } @@ -1110,13 +1284,17 @@ void Microcontroller::applyToMultiEditBuffer(const uint8_t _part, const uint8_t Page Microcontroller::globalSettingsPage() const { - return PAGE_C; + return m_rom.isTIFamily() ? PAGE_D : PAGE_C; } bool Microcontroller::isPageSupported(Page _page) const { switch (_page) { + case PAGE_6E: + case PAGE_6F: + case PAGE_D: + return m_rom.isTIFamily(); case PAGE_A: case PAGE_B: case PAGE_C: diff --git a/source/virusLib/microcontroller.h b/source/virusLib/microcontroller.h @@ -64,6 +64,9 @@ public: uint32_t getPartCount() const; + + void setSamplerate(float _samplerate); + uint8_t getPartMidiChannel(uint8_t _part) const; bool isPolyPressureForPageBEnabled() const; diff --git a/source/virusLib/microcontrollerTypes.h b/source/virusLib/microcontrollerTypes.h @@ -146,9 +146,12 @@ namespace virusLib enum Page : uint8_t { + PAGE_6E = 0x6e, + PAGE_6F = 0x6f, PAGE_A = 0x70, PAGE_B = 0x71, PAGE_C = 0x72, + PAGE_D = 0x73, }; enum ProgramType diff --git a/source/virusLib/romfile.cpp b/source/virusLib/romfile.cpp @@ -4,6 +4,8 @@ #include "romfile.h" #include "utils.h" +#include "unpacker.h" + #include "../dsp56300/source/dsp56kEmu/dsp.h" #include "../dsp56300/source/dsp56kEmu/logging.h" @@ -11,6 +13,7 @@ #include <cstring> // memcpy +#include "demoplaybackTI.h" #include "dsp56kEmu/memory.h" namespace virusLib @@ -31,9 +34,26 @@ ROMFile ROMFile::invalid() bool ROMFile::initialize() { - const std::unique_ptr<std::istream> dsp(new imemstream(reinterpret_cast<std::vector<char>&>(m_romFileData))); - - const auto chunks = readChunks(*dsp); + std::unique_ptr<std::istream> dsp(new imemstream(reinterpret_cast<std::vector<char>&>(m_romFileData))); + +#if VIRUS_SUPPORT_TI + ROMUnpacker::Firmware fw; + + // Check if we are dealing with a TI installer file, if so, unpack it first + if (ROMUnpacker::isValidInstaller(*dsp)) + { + fw = ROMUnpacker::getFirmware(*dsp, m_model); + if (!fw.isValid()) + { + LOG("Could not unpack ROM file"); + return false; + } + + // Wrap into a stream so we can pass it into readChunks + dsp.reset(new imemstream(fw.DSP)); + } +#endif + const auto chunks = readChunks(*dsp, m_model); if (chunks.empty()) return false; @@ -61,21 +81,130 @@ bool ROMFile::initialize() printf("Program BootROM offset = 0x%x\n", bootRom.offset); printf("Program CommandStream size = 0x%x\n", static_cast<uint32_t>(m_commandStream.size())); +#if VIRUS_SUPPORT_TI + if(isTIFamily()) + { + if (!fw.Presets.empty()) + { + for (auto& presetFile: fw.Presets) + { + imemstream stream(presetFile); + loadPresetFile(stream, m_model); + } + + for (const auto & preset : fw.Presets) + { + m_demoData.insert(m_demoData.begin(), preset.begin(), preset.end()); + if(DemoPlaybackTI::findDemoData(m_demoData)) + break; + + m_demoData.clear(); + } + } + else + { + loadPresetFiles(); + } + + // The Snow even has multis, but they are not sequencer compatible, drop them + m_multis.clear(); + + if(m_multis.empty()) + { + // there is no multi in the TI presets, but there is an init multi in the F.bin + + const std::string search = "Init Multi"; + const auto searchSize = search.size(); + + for(size_t i=0; i<fw.DSP.size() && m_multis.empty(); ++i) + { + for(size_t j=0; j<searchSize && m_multis.empty(); ++j) + { + if(fw.DSP[i+j] != search[j]) + break; + + if(j == searchSize-1) + { + TPreset preset; + memcpy(&preset[0], &fw.DSP[i - 4], std::size(preset)); + + // validate that we found the correct data by checking part volumes. It might just be a string somewhere in the data + for(size_t k=0; k<16; ++k) + { + if(preset[k + 0x8b] != 0x40) + break; + + if(k == 15) + { + for(size_t k=0; k<getPresetsPerBank(); ++k) + m_multis.push_back(preset); + } + } + } + } + } + } + + // try to load the presets from the other roms, too + auto loadFirmwarePresets = [this](const DeviceModel _model) + { + if(m_model == _model) + return; + const std::unique_ptr<imemstream> file(new imemstream(reinterpret_cast<std::vector<char>&>(m_romFileData))); + const auto firmware = ROMUnpacker::getFirmware(*file, _model); + if(!firmware.Presets.empty()) + { + for (auto& presetFile: firmware.Presets) + { + imemstream stream(presetFile); + loadPresetFile(stream, _model); + } + } + }; + + loadFirmwarePresets(DeviceModel::TI); + loadFirmwarePresets(DeviceModel::TI2); + loadFirmwarePresets(DeviceModel::Snow); + } +#endif return true; } -std::vector<ROMFile::Chunk> ROMFile::readChunks(std::istream& _file) +uint32_t ROMFile::getRomBankCount(const DeviceModel _model) +{ + switch (_model) + { + case DeviceModel::TI: + return 26 - 7; + case DeviceModel::Snow: + return 8; + case DeviceModel::TI2: + return 26 - 5 + 4; + default: + return 8; + } +} + +std::vector<ROMFile::Chunk> ROMFile::readChunks(std::istream& _file, const DeviceModel _wantedTIModel) { _file.seekg(0, std::ios_base::end); const auto fileSize = _file.tellg(); - uint32_t offset = 0x18000; - int lastChunkId = 4; + uint32_t offset; + int lastChunkId; - if (fileSize == getRomSizeModelABC() || fileSize == getRomSizeModelABC()/2) // the latter is a ROM without presets + if(fileSize == getRomSizeModelD()) + { + m_model = _wantedTIModel; + offset = 0x70000; + lastChunkId = 14; + } + else if (fileSize == getRomSizeModelABC() || fileSize == getRomSizeModelABC()/2) // the latter is a ROM without presets { // ABC m_model = DeviceModel::C; + offset = 0x18000; + lastChunkId = 4; } else { @@ -125,6 +254,85 @@ std::vector<ROMFile::Chunk> ROMFile::readChunks(std::istream& _file) return chunks; } +bool ROMFile::loadPresetFiles() +{ + bool res = true; + for (auto &filename: {"S.bin", "P.bin"}) + { + std::ifstream file(filename, std::ios::binary | std::ios::ate); + if (!file.is_open()) + { + LOG("Failed to open preset file " << filename); + res = false; + continue; + } + res &= loadPresetFile(file, m_model); + file.close(); + } + return res; +} + +bool ROMFile::loadPresetFile(std::istream& _file, DeviceModel _model) +{ + _file.seekg(0, std::ios_base::end); + const auto fileSize = _file.tellg(); + + uint32_t singleCount = 0; + uint32_t multiCount = 0; + uint32_t multiOffset = 0; + + if (fileSize == 0x1b0000) // TI/TI2 + { + if(_model == DeviceModel::TI2) + singleCount = 128 * (26 - 5); + else + singleCount = 128 * (26 - 7); + } + else if (fileSize == 0x40000) // Snow A + { + singleCount = 512; + } + else if (fileSize == 0x68000) // Snow B + { + singleCount = 512; + multiCount = 128; + multiOffset = 768; + } + else + { + LOG("Unknown file size " << fileSize << " for preset file"); + return false; + } + + _file.seekg(0); + + for(uint32_t i=0; i<singleCount; ++i) + { + TPreset single; + _file.read(reinterpret_cast<char*>(&single), sizeof(single)); + m_singles.emplace_back(single); + + LOG("Loaded single " << i << ", name = " << getSingleName(single)); + } + + if(multiCount) + { + const auto off = std::max(singleCount, multiOffset); + _file.seekg(off * 512); + + for (uint32_t i = 0; i < multiCount; ++i) + { + TPreset multi; + _file.read(reinterpret_cast<char*>(&multi), sizeof(multi)); + m_multis.emplace_back(multi); + + LOG("Loaded multi " << i << ", name = " << getMultiName(multi)); + } + } + + return true; +} + std::thread ROMFile::bootDSP(dsp56k::DSP& dsp, dsp56k::HDI08& _hdi08) const { // Load BootROM in DSP memory @@ -155,6 +363,15 @@ std::string ROMFile::getModelName() const bool ROMFile::getSingle(const int _bank, const int _presetNumber, TPreset& _out) const { + if(isTIFamily()) + { + const auto offset = _bank * getSinglesPerBank() + _presetNumber; + if (offset >= m_singles.size()) + return false; + _out = m_singles[offset]; + return true; + } + const uint32_t offset = 0x50000 + (_bank * 0x8000) + (_presetNumber * getSinglePresetSize()); return getPreset(offset, _out); @@ -162,6 +379,15 @@ bool ROMFile::getSingle(const int _bank, const int _presetNumber, TPreset& _out) bool ROMFile::getMulti(const int _presetNumber, TPreset& _out) const { + if(isTIFamily()) + { + if (_presetNumber >= m_multis.size()) + return false; + + _out = m_multis[_presetNumber]; + return true; + } + return getPreset(0x48000 + (_presetNumber * getMultiPresetSize()), _out); } diff --git a/source/virusLib/romfile.h b/source/virusLib/romfile.h @@ -62,17 +62,26 @@ public: uint32_t getSamplerate() const { - return 12000000 / 256; + return isTIFamily() ? 44100 : 12000000 / 256; } - static uint32_t getMultiPresetSize() + static uint32_t getMultiPresetSize(const DeviceModel _model) { return 256; +// return isTIFamily(_model) ? 256 : 256; + } + uint32_t getMultiPresetSize() const + { + return getMultiPresetSize(m_model); } - static uint32_t getSinglePresetSize() + static uint32_t getSinglePresetSize(const DeviceModel _model) { - return 256; + return virusLib::isTIFamily(_model) ? 512 : 256; + } + uint32_t getSinglePresetSize() const + { + return getSinglePresetSize(m_model); } static uint8_t getSinglesPerBank() @@ -80,6 +89,16 @@ public: return 128; } + static constexpr uint32_t getRomSizeModelD() + { + return 1024 * 1024; + } + + static constexpr uint32_t getRomSizeModelDInstaller() + { + return 1024 * 1024 * 7; + } + static constexpr uint32_t getRomSizeModelABC() { return 1024 * 512; @@ -90,6 +109,8 @@ public: return 128; } + static uint32_t getRomBankCount(DeviceModel _model); + const std::vector<uint8_t>& getDemoData() const { return m_demoData; } std::string getFilename() const { return isValid() ? m_romFileName : std::string(); } @@ -97,8 +118,11 @@ public: const auto& getHash() const { return m_romDataHash; } private: + std::vector<Chunk> readChunks(std::istream& _file, DeviceModel _wantedTIModel); + bool loadPresetFiles(); + bool loadPresetFile(std::istream& _file, DeviceModel _model); + bool initialize(); - std::vector<Chunk> readChunks(std::istream& _file); BootRom bootRom; std::vector<uint32_t> m_commandStream; diff --git a/source/virusLib/unpacker.cpp b/source/virusLib/unpacker.cpp @@ -0,0 +1,198 @@ +#include "unpacker.h" + +#if VIRUS_SUPPORT_TI + +#include "utils.h" + +#include "../dsp56300/source/dsp56kEmu/logging.h" + +#include <vector> + +namespace virusLib +{ + bool ROMUnpacker::isValidInstaller(std::istream& _file) + { + _file.seekg(0); + char magic[5] = {0}; + _file.read(magic, 4); + _file.seekg(-4, std::ios_base::cur); // restore cursor + return std::string(magic) == "FORM"; + } + + ROMUnpacker::Firmware ROMUnpacker::getFirmware(std::istream& _file, const DeviceModel _model) + { + // First round of extraction + // This will yield the installer files (html, lcd firmware, vti firmware, etc) + std::vector<Chunk> chunks = getChunks(_file); + + // The first chunk should be the _file table containing filenames + Chunk table = chunks[0]; + if (std::string(table.name) != "TABL") + { + LOG("Installer file table not found"); + return Firmware{}; + } + + // Read all the filenames (starting at offset 1) + std::vector<std::string> filenames{}; + std::string currentFilename; + for (auto it = begin(table.data) + 1; it != end(table.data); ++it) + { + if (*it == '\0') + { + filenames.emplace_back(currentFilename); + currentFilename.clear(); + } else + { + currentFilename += *it; + } + } + + uint8_t tableItemCount = table.data[0]; + assert (filenames.size() == tableItemCount); + assert (chunks.size() - 1 == tableItemCount); + + // Find the VTI _file for the given _model + const std::string vtiFilename = getVtiFilename(_model); + Chunk* vti = nullptr; + for (auto& f: filenames) + { + // Find the matching chunk for this filename + auto i = &f - &filenames[0] + 1; + LOG("Chunk " << chunks[i].name << " = " << f << " (size=0x" << HEX(chunks[i].size) << ")"); + if (f == vtiFilename) + { + vti = &chunks[i]; + } + } + + if (!vti) + { + LOG("Could not find the VTI _file"); + return Firmware{}; + } + + // Second round of extraction + // This will yield the packed chunks of the VTI _file containing F.bin, S.bin, P.bin + LOG("Found VTI: " << vtiFilename << " in chunk " << vti->name << ", size=0x" << HEX(vti->data.size())); + imemstream stream(vti->data); + + std::vector<Chunk> parts = getChunks(stream); + if (parts.empty()) + { + return Firmware{}; + } + + // Perform unpacking for all roms + std::vector<char> dsp = unpackFile(parts, 'F'); + std::vector<std::vector<char>> presets{}; + for (const char& presetFileId: {'P', 'S'}) + { + auto presetFile = unpackFile(parts, presetFileId); + if (!presetFile.empty()) + { + presets.emplace_back(presetFile); + } + } + + return Firmware{dsp, presets}; + } + + std::string ROMUnpacker::getVtiFilename(const DeviceModel _model) + { + switch (_model) + { + case DeviceModel::TI: + return "vti.bin"; + case DeviceModel::TI2: + return "vti_2.bin"; + case DeviceModel::Snow: + return "vti_snow.bin"; + default: + return {}; + } + } + + std::vector<ROMUnpacker::Chunk> ROMUnpacker::getChunks(std::istream& _file) + { + std::vector<Chunk> result; + char filename[5] = {0}; + uint32_t filesize; + _file.read(filename, 4); + _file.read(reinterpret_cast<char*>(&filesize), 4); + filesize = swap32(filesize); + + LOG("FileID: " << filename); + LOG("FileSize: " << filesize); + + while (!_file.eof()) + { + Chunk chunk{}; + _file.read(chunk.name, 4); + _file.read(reinterpret_cast<char*>(&chunk.size), 4); + chunk.size = swap32(chunk.size); + if (chunk.size > 0) + { + chunk.data.resize(chunk.size); + _file.read(chunk.data.data(), chunk.size); + result.emplace_back(chunk); + } + } + + return result; + } + + std::vector<char> ROMUnpacker::unpackFile(std::vector<Chunk>& _chunks, const char _fileId) + { + std::vector<char> content; + + for (auto& chunk: _chunks) + { + if (chunk.name[0] != _fileId) + { + continue; + } + + if(chunk.data.size() % 35 == 2) + { + size_t ctr = 0; + + // 4 chunk ID, 4 chunk length, 1 block id?, 2 segment offset in bytes (32) + // each chunk has 2 remaining bytes (checksum?) + for (size_t i = 0; i < chunk.size - 2; i += 35) + { + const auto idx = swap16(*reinterpret_cast<uint16_t*>(&chunk.data[i + 1])); + assert (idx == ctr); + for (size_t j = 0; j < 32; ++j) + { + content.emplace_back(chunk.data[i + j + 3]); + } + ctr += 32; + } + } + else + { + // slightly different chunk format + // 4 chunk ID, 4 chunk length, 1 chunk id, 1 counter per segment, 1 block id? + assert(chunk.data.size() % 35 == 0); + + uint8_t ctr = 0; + for (size_t i = 0; i < chunk.size - 2; i += 35) + { + const auto idx = static_cast<uint8_t>(chunk.data[i + 1]); + + assert (idx == ctr); + for (size_t j = 0; j < 32; ++j) + { + content.emplace_back(chunk.data[i + j + 3]); + } + ++ctr; + } + } + } + + return content; + } +} + +#endif diff --git a/source/virusLib/unpacker.h b/source/virusLib/unpacker.h @@ -0,0 +1,50 @@ +#pragma once + +#include "buildconfig.h" +#include "deviceModel.h" + +#if VIRUS_SUPPORT_TI + +#include <vector> + +#include "dsp56kEmu/types.h" +#include "utils.h" + +namespace virusLib +{ + class ROMUnpacker + { + public: + struct Firmware + { + std::vector<char> DSP; + std::vector<std::vector<char>> Presets; + + [[nodiscard]] bool isValid() const + { + return !DSP.empty(); + } + }; + + static bool isValidInstaller(std::istream& _file); + + static Firmware getFirmware(std::istream& _file, DeviceModel _model); + + private: + struct Chunk + { + char name[5]; + uint32_t size; + std::vector<char> data; + }; + + static std::string getVtiFilename(DeviceModel _model); + + static std::vector<Chunk> getChunks(std::istream& _file); + + static std::vector<char> unpackFile(std::vector<Chunk>& _chunks, char _fileId); + }; + +} + +#endif +\ No newline at end of file diff --git a/source/virusTestConsole/CMakeLists.txt b/source/virusTestConsole/CMakeLists.txt @@ -17,11 +17,11 @@ if(UNIX AND NOT APPLE) target_link_libraries(virusTestConsole PUBLIC -static-libgcc -static-libstdc++) endif() -install(TARGETS virusTestConsole DESTINATION . COMPONENT OsirusTestConsole) +install(TARGETS virusTestConsole DESTINATION . COMPONENT OsTIrusTestConsole) if(MSVC) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/deploy/win/ DESTINATION . COMPONENT OsirusTestConsole) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/deploy/win/ DESTINATION . COMPONENT OsTIrusTestConsole) else() - install(DIRECTORY ${CMAKE_SOURCE_DIR}/deploy/linux/ DESTINATION . COMPONENT OsirusTestConsole) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/deploy/linux/ DESTINATION . COMPONENT OsTIrusTestConsole) endif() set_property(TARGET virusTestConsole PROPERTY FOLDER "Virus") diff --git a/source/virusTestConsole/virusTestConsole.cpp b/source/virusTestConsole/virusTestConsole.cpp @@ -79,7 +79,7 @@ int main(int _argc, char* _argv[]) const std::string audioFilename = app->getSingleNameAsFilename(); - app->run(audioFilename, 0, g_createDebugger, g_dumpAssembly); + app->run(audioFilename, 0, 64, g_createDebugger, g_dumpAssembly); std::cout << "Program ended. Press key to exit." << std::endl; ConsoleApp::waitReturn();