diff --git a/OB-Xd.jucer b/OB-Xd.jucer index d8937ea..760c149 100644 --- a/OB-Xd.jucer +++ b/OB-Xd.jucer @@ -7,10 +7,11 @@ pluginManufacturer="Datsounds" pluginManufacturerCode="Dats" pluginCode="Obxd" pluginChannelConfigs="{0, 2}" pluginIsSynth="1" pluginWantsMidiIn="1" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" - pluginEditorRequiresKeys="0" pluginAUExportPrefix="" pluginRTASCategory="ePlugInCategory_SWGenerators" - aaxIdentifier="" pluginAAXCategory="" jucerVersion="4.3.0" companyName="2Dat" + pluginEditorRequiresKeys="0" pluginAUExportPrefix="" pluginRTASCategory="2048" + aaxIdentifier="" pluginAAXCategory="" jucerVersion="5.4.3" companyName="2Dat" companyWebsite="http://obxd.wordpress.com" companyEmail="" buildAUv3="0" - pluginIsMidiEffectPlugin="0" pluginAUMainType=""> + pluginIsMidiEffectPlugin="0" pluginFormats="buildVST,buildAU" + pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn"> @@ -66,11 +67,10 @@ vst3Folder="modules/vstsdk3"> + stripLocalSymbols="0" osxCompatibility="10.6 SDK" linkTimeOptimisation="0"/> + linkTimeOptimisation="0"/> @@ -88,92 +88,46 @@ - + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/Source/Engine/Motherboard.h b/Source/Engine/Motherboard.h index d673c66..21d9201 100755 --- a/Source/Engine/Motherboard.h +++ b/Source/Engine/Motherboard.h @@ -48,8 +48,9 @@ public: bool vibratoEnabled; float Volume; - const static int MAX_VOICES=8; - float pannings[MAX_VOICES]; + const static int MAX_VOICES = 32; + const static int MAX_PANNINGS = 8; + float pannings[MAX_PANNINGS]; ObxdVoice voices[MAX_VOICES]; bool uni; bool Oversample; @@ -79,7 +80,7 @@ public: // pannings = new float[MAX_VOICES]; totalvc = MAX_VOICES; vq = VoiceQueue(MAX_VOICES,voices); - for(int i = 0 ; i < MAX_VOICES;++i) + for(int i = 0 ; i < MAX_PANNINGS;++i) { pannings[i]= 0.5; } @@ -363,11 +364,11 @@ public: if(Oversample) { float x2 = processSynthVoice(voices[i],lfovalue2,viblfo2); - vlo+=x2*(1-pannings[i]); - vro+=x2*(pannings[i]); + vlo+=x2*(1-pannings[i % MAX_PANNINGS]); + vro+=x2*(pannings[i % MAX_PANNINGS]); } - vl+=x1*(1-pannings[i]); - vr+=x1*(pannings[i]); + vl+=x1*(1-pannings[i % MAX_PANNINGS]); + vr+=x1*(pannings[i % MAX_PANNINGS]); } if(Oversample) { diff --git a/Source/Engine/SynthEngine.h b/Source/Engine/SynthEngine.h index 22862f1..c916590 100755 --- a/Source/Engine/SynthEngine.h +++ b/Source/Engine/SynthEngine.h @@ -166,7 +166,7 @@ public: } void setVoiceCount(float param) { - synth.setVoiceCount(roundToInt((param*7) +1)); + synth.setVoiceCount(roundToInt((param*(synth.MAX_VOICES-1)) +1)); } void procPitchWheelAmount(float param) { @@ -184,7 +184,7 @@ public: } void processPan(float param,int idx) { - synth.pannings[idx-1] = param; + synth.pannings[(idx-1) % synth.MAX_PANNINGS] = param; } void processTune(float param) { diff --git a/Source/Images/voices.png b/Source/Images/voices.png index c8af407..fdaa2a3 100644 Binary files a/Source/Images/voices.png and b/Source/Images/voices.png differ diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index d50ec73..8693073 100755 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -287,14 +287,8 @@ void ObxdAudioProcessorEditor::rebuildComponents() envelopeDetuneKnob = addTinyKnob(1353,300,ownerFilter,ENVDER,"Env",0.2); voiceSwitch = addNormalButtonList(124,338,17,ownerFilter,VOICE_COUNT,"VoiceCount",ImageCache::getFromMemory(BinaryData::voices_png,BinaryData::voices_pngSize)); - voiceSwitch ->addChoise("1"); - voiceSwitch ->addChoise("2"); - voiceSwitch ->addChoise("3"); - voiceSwitch ->addChoise("4"); - voiceSwitch ->addChoise("5"); - voiceSwitch ->addChoise("6"); - voiceSwitch ->addChoise("7"); - voiceSwitch ->addChoise("8"); + for (int i=1; i <= 32; i++) + voiceSwitch ->addChoise(String(i)); voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification); legatoSwitch = addNormalButtonList(25,338,65,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromMemory(BinaryData::legato_png,BinaryData::legato_pngSize)); @@ -400,14 +394,8 @@ void ObxdAudioProcessorEditor::rebuildComponents() bendLfoRateKnob = addNormalKnobClassic(364,345,ownerFilter,BENDLFORATE,"ModRate",0.4); voiceSwitch = addNormalButtonListClassic(172,321,38,ownerFilter,VOICE_COUNT,"VoiceCount",ImageCache::getFromFile(skinFolder.getChildFile("voices.png"))); - voiceSwitch ->addChoise("1"); - voiceSwitch ->addChoise("2"); - voiceSwitch ->addChoise("3"); - voiceSwitch ->addChoise("4"); - voiceSwitch ->addChoise("5"); - voiceSwitch ->addChoise("6"); - voiceSwitch ->addChoise("7"); - voiceSwitch ->addChoise("8"); + for (int i=1; i <= 32; i++) + voiceSwitch->addChoise(String(i)); voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification); legatoSwitch = addNormalButtonListClassic(65,321,95,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromFile(skinFolder.getChildFile("legato.png"))); @@ -511,7 +499,7 @@ void ObxdAudioProcessorEditor::sliderValueChanged (Slider* c) handleSParam(lfoAmt1Knob,LFO1AMT) handleSParam(lfoAmt2Knob,LFO2AMT) - handleSParam(pan1Knob,PAN1) + handleSParam(pan1Knob,PAN1) handleSParam(pan2Knob,PAN2) handleSParam(pan3Knob,PAN3) handleSParam(pan4Knob,PAN4)