Merge branch 'master' into master
This commit is contained in:
commit
2d882ec6f8
6 changed files with 54 additions and 23 deletions
|
@ -90,7 +90,8 @@
|
||||||
<MODULEPATH id="juce_audio_utils" path="modules"/>
|
<MODULEPATH id="juce_audio_utils" path="modules"/>
|
||||||
</MODULEPATHS>
|
</MODULEPATHS>
|
||||||
</XCODE_MAC>
|
</XCODE_MAC>
|
||||||
<LINUX_MAKE targetFolder="Builds/LinuxMakefile" smallIcon="nnY63W" bigIcon="nnY63W">
|
<LINUX_MAKE targetFolder="Builds/LinuxMakefile" smallIcon="nnY63W" bigIcon="nnY63W"
|
||||||
|
vstLegacyFolder="modules/vstsdk2.4">
|
||||||
<CONFIGURATIONS>
|
<CONFIGURATIONS>
|
||||||
<CONFIGURATION name="Release64" libraryPath="/usr/X11R6/lib/" isDebug="0" optimisation="3"
|
<CONFIGURATION name="Release64" libraryPath="/usr/X11R6/lib/" isDebug="0" optimisation="3"
|
||||||
targetName="Obxd64"/>
|
targetName="Obxd64"/>
|
||||||
|
@ -139,8 +140,8 @@
|
||||||
<VS2019 targetFolder="Builds/VisualStudio2019" smallIcon="nnY63W" bigIcon="nnY63W">
|
<VS2019 targetFolder="Builds/VisualStudio2019" smallIcon="nnY63W" bigIcon="nnY63W">
|
||||||
<CONFIGURATIONS>
|
<CONFIGURATIONS>
|
||||||
<CONFIGURATION isDebug="1" name="Debug" useRuntimeLibDLL="0"/>
|
<CONFIGURATION isDebug="1" name="Debug" useRuntimeLibDLL="0"/>
|
||||||
<CONFIGURATION isDebug="0" name="Release32" useRuntimeLibDLL="0"/>
|
<CONFIGURATION isDebug="0" name="Release32" useRuntimeLibDLL="0" winArchitecture="Win32"/>
|
||||||
<CONFIGURATION isDebug="0" name="Release64" useRuntimeLibDLL="0" winArchitecture="Win32"/>
|
<CONFIGURATION isDebug="0" name="Release64" useRuntimeLibDLL="0"/>
|
||||||
</CONFIGURATIONS>
|
</CONFIGURATIONS>
|
||||||
<MODULEPATHS>
|
<MODULEPATHS>
|
||||||
<MODULEPATH id="juce_opengl"/>
|
<MODULEPATH id="juce_opengl"/>
|
||||||
|
|
|
@ -48,9 +48,8 @@ public:
|
||||||
bool vibratoEnabled;
|
bool vibratoEnabled;
|
||||||
|
|
||||||
float Volume;
|
float Volume;
|
||||||
const static int MAX_VOICES = 32;
|
const static int MAX_VOICES=8;
|
||||||
const static int MAX_PANNINGS = 8;
|
float pannings[MAX_VOICES];
|
||||||
float pannings[MAX_PANNINGS];
|
|
||||||
ObxdVoice voices[MAX_VOICES];
|
ObxdVoice voices[MAX_VOICES];
|
||||||
bool uni;
|
bool uni;
|
||||||
bool Oversample;
|
bool Oversample;
|
||||||
|
@ -80,7 +79,7 @@ public:
|
||||||
// pannings = new float[MAX_VOICES];
|
// pannings = new float[MAX_VOICES];
|
||||||
totalvc = MAX_VOICES;
|
totalvc = MAX_VOICES;
|
||||||
vq = VoiceQueue(MAX_VOICES,voices);
|
vq = VoiceQueue(MAX_VOICES,voices);
|
||||||
for(int i = 0 ; i < MAX_PANNINGS;++i)
|
for(int i = 0 ; i < MAX_VOICES;++i)
|
||||||
{
|
{
|
||||||
pannings[i]= 0.5;
|
pannings[i]= 0.5;
|
||||||
}
|
}
|
||||||
|
@ -363,12 +362,11 @@ public:
|
||||||
float x1 = processSynthVoice(voices[i],lfovalue,viblfo);
|
float x1 = processSynthVoice(voices[i],lfovalue,viblfo);
|
||||||
if(Oversample)
|
if(Oversample)
|
||||||
{
|
{
|
||||||
float x2 = processSynthVoice(voices[i],lfovalue2,viblfo2);
|
float x2 = processSynthVoice(voices[i],lfovalue2,viblfo2); vlo+=x2*(1-pannings[i]);
|
||||||
vlo+=x2*(1-pannings[i % MAX_PANNINGS]);
|
vro+=x2*(pannings[i]);
|
||||||
vro+=x2*(pannings[i % MAX_PANNINGS]);
|
|
||||||
}
|
}
|
||||||
vl+=x1*(1-pannings[i % MAX_PANNINGS]);
|
vl+=x1*(1-pannings[i]);
|
||||||
vr+=x1*(pannings[i % MAX_PANNINGS]);
|
vr+=x1*(pannings[i]);
|
||||||
}
|
}
|
||||||
if(Oversample)
|
if(Oversample)
|
||||||
{
|
{
|
||||||
|
|
|
@ -166,7 +166,7 @@ public:
|
||||||
}
|
}
|
||||||
void setVoiceCount(float param)
|
void setVoiceCount(float param)
|
||||||
{
|
{
|
||||||
synth.setVoiceCount(roundToInt((param*(synth.MAX_VOICES-1)) +1));
|
synth.setVoiceCount(roundToInt((param*7) +1));
|
||||||
}
|
}
|
||||||
void procPitchWheelAmount(float param)
|
void procPitchWheelAmount(float param)
|
||||||
{
|
{
|
||||||
|
@ -184,7 +184,7 @@ public:
|
||||||
}
|
}
|
||||||
void processPan(float param,int idx)
|
void processPan(float param,int idx)
|
||||||
{
|
{
|
||||||
synth.pannings[(idx-1) % synth.MAX_PANNINGS] = param;
|
synth.pannings[idx-1] = param;
|
||||||
}
|
}
|
||||||
void processTune(float param)
|
void processTune(float param)
|
||||||
{
|
{
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 3.4 KiB |
|
@ -287,8 +287,14 @@ void ObxdAudioProcessorEditor::rebuildComponents()
|
||||||
envelopeDetuneKnob = addTinyKnob(1353,300,ownerFilter,ENVDER,"Env",0.2);
|
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 = addNormalButtonList(124,338,17,ownerFilter,VOICE_COUNT,"VoiceCount",ImageCache::getFromMemory(BinaryData::voices_png,BinaryData::voices_pngSize));
|
||||||
for (int i=1; i <= 32; i++)
|
voiceSwitch ->addChoise("1");
|
||||||
voiceSwitch ->addChoise(String(i));
|
voiceSwitch ->addChoise("2");
|
||||||
|
voiceSwitch ->addChoise("3");
|
||||||
|
voiceSwitch ->addChoise("4");
|
||||||
|
voiceSwitch ->addChoise("5");
|
||||||
|
voiceSwitch ->addChoise("6");
|
||||||
|
voiceSwitch ->addChoise("7");
|
||||||
|
voiceSwitch ->addChoise("8");
|
||||||
voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification);
|
voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification);
|
||||||
|
|
||||||
legatoSwitch = addNormalButtonList(25,338,65,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromMemory(BinaryData::legato_png,BinaryData::legato_pngSize));
|
legatoSwitch = addNormalButtonList(25,338,65,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromMemory(BinaryData::legato_png,BinaryData::legato_pngSize));
|
||||||
|
@ -394,8 +400,14 @@ void ObxdAudioProcessorEditor::rebuildComponents()
|
||||||
bendLfoRateKnob = addNormalKnobClassic(364,345,ownerFilter,BENDLFORATE,"ModRate",0.4);
|
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 = addNormalButtonListClassic(172,321,38,ownerFilter,VOICE_COUNT,"VoiceCount",ImageCache::getFromFile(skinFolder.getChildFile("voices.png")));
|
||||||
for (int i=1; i <= 32; i++)
|
voiceSwitch ->addChoise("1");
|
||||||
voiceSwitch->addChoise(String(i));
|
voiceSwitch ->addChoise("2");
|
||||||
|
voiceSwitch ->addChoise("3");
|
||||||
|
voiceSwitch ->addChoise("4");
|
||||||
|
voiceSwitch ->addChoise("5");
|
||||||
|
voiceSwitch ->addChoise("6");
|
||||||
|
voiceSwitch ->addChoise("7");
|
||||||
|
voiceSwitch ->addChoise("8");
|
||||||
voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification);
|
voiceSwitch ->setValue(ownerFilter->getParameter(VOICE_COUNT),dontSendNotification);
|
||||||
|
|
||||||
legatoSwitch = addNormalButtonListClassic(65,321,95,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromFile(skinFolder.getChildFile("legato.png")));
|
legatoSwitch = addNormalButtonListClassic(65,321,95,ownerFilter,LEGATOMODE,"Legato",ImageCache::getFromFile(skinFolder.getChildFile("legato.png")));
|
||||||
|
@ -499,7 +511,7 @@ void ObxdAudioProcessorEditor::sliderValueChanged (Slider* c)
|
||||||
handleSParam(lfoAmt1Knob,LFO1AMT)
|
handleSParam(lfoAmt1Knob,LFO1AMT)
|
||||||
handleSParam(lfoAmt2Knob,LFO2AMT)
|
handleSParam(lfoAmt2Knob,LFO2AMT)
|
||||||
|
|
||||||
handleSParam(pan1Knob,PAN1)
|
handleSParam(pan1Knob,PAN1)
|
||||||
handleSParam(pan2Knob,PAN2)
|
handleSParam(pan2Knob,PAN2)
|
||||||
handleSParam(pan3Knob,PAN3)
|
handleSParam(pan3Knob,PAN3)
|
||||||
handleSParam(pan4Knob,PAN4)
|
handleSParam(pan4Knob,PAN4)
|
||||||
|
@ -659,8 +671,8 @@ void ObxdAudioProcessorEditor::mouseUp(const MouseEvent& e)
|
||||||
|
|
||||||
int bankStart = 1000;
|
int bankStart = 1000;
|
||||||
{
|
{
|
||||||
const String currentBank = getFilter()->getCurrentBankFile().getFileName();
|
const String currentBank = getFilter()->getCurrentBankFile().getFileName();
|
||||||
|
|
||||||
for (int i = 0; i < banks.size(); ++i)
|
for (int i = 0; i < banks.size(); ++i)
|
||||||
{
|
{
|
||||||
const File bank = banks.getUnchecked(i);
|
const File bank = banks.getUnchecked(i);
|
||||||
|
|
|
@ -491,7 +491,7 @@ const String ObxdAudioProcessor::getParameterName (int index)
|
||||||
case FREL:
|
case FREL:
|
||||||
return S("FilterRelease");
|
return S("FilterRelease");
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
const String ObxdAudioProcessor::getParameterText (int index)
|
const String ObxdAudioProcessor::getParameterText (int index)
|
||||||
|
@ -769,6 +769,7 @@ void ObxdAudioProcessor::getCurrentProgramStateInformation(MemoryBlock& destData
|
||||||
copyXmlToBinary(xmlState, destData);
|
copyXmlToBinary(xmlState, destData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ObxdAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
|
void ObxdAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
|
||||||
{
|
{
|
||||||
if (std::unique_ptr<XmlElement> xmlState = getXmlFromBinary(data,sizeInBytes))
|
if (std::unique_ptr<XmlElement> xmlState = getXmlFromBinary(data,sizeInBytes))
|
||||||
|
@ -801,6 +802,8 @@ void ObxdAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
setCurrentProgram(xmlState->getIntAttribute(S("currentProgram"), 0));
|
setCurrentProgram(xmlState->getIntAttribute(S("currentProgram"), 0));
|
||||||
|
|
||||||
|
delete xmlState;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -821,9 +824,26 @@ void ObxdAudioProcessor::setCurrentProgramStateInformation(const void* data,int
|
||||||
programs.currentProgramPtr->name = e->getStringAttribute(S("programName"), S("Default"));
|
programs.currentProgramPtr->name = e->getStringAttribute(S("programName"), S("Default"));
|
||||||
|
|
||||||
setCurrentProgram(programs.currentProgram);
|
setCurrentProgram(programs.currentProgram);
|
||||||
|
|
||||||
|
delete e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObxdAudioProcessor::getCurrentProgramStateInformation(MemoryBlock& destData)
|
||||||
|
{
|
||||||
|
XmlElement xmlState = XmlElement("Datsounds");
|
||||||
|
|
||||||
|
for (int k = 0; k < PARAM_COUNT; ++k)
|
||||||
|
{
|
||||||
|
xmlState.setAttribute(String(k), programs.currentProgramPtr->values[k]);
|
||||||
|
}
|
||||||
|
|
||||||
|
xmlState.setAttribute(S("programName"), programs.currentProgramPtr->name);
|
||||||
|
|
||||||
|
copyXmlToBinary(xmlState, destData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
bool ObxdAudioProcessor::loadFromFXBFile(const File& fxbFile)
|
bool ObxdAudioProcessor::loadFromFXBFile(const File& fxbFile)
|
||||||
{
|
{
|
||||||
|
@ -949,7 +969,7 @@ void ObxdAudioProcessor::scanAndUpdateBanks()
|
||||||
DirectoryIterator it(getBanksFolder(), false, "*.fxb", File::findFiles);
|
DirectoryIterator it(getBanksFolder(), false, "*.fxb", File::findFiles);
|
||||||
while (it.next())
|
while (it.next())
|
||||||
{
|
{
|
||||||
bankFiles.addUsingDefaultSort(it.getFile());
|
bankFiles.addUsingDefaultSort(it.getFile());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue