diff options
Diffstat (limited to 'vst/drumgizmo_vst.cc')
-rw-r--r-- | vst/drumgizmo_vst.cc | 129 |
1 files changed, 79 insertions, 50 deletions
diff --git a/vst/drumgizmo_vst.cc b/vst/drumgizmo_vst.cc index 8c40b2f..c974a2a 100644 --- a/vst/drumgizmo_vst.cc +++ b/vst/drumgizmo_vst.cc @@ -85,7 +85,7 @@ void DGEditor::idle() AudioEffect* createEffectInstance(audioMasterCallback audioMaster) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); return new DrumGizmoVst(audioMaster); } @@ -123,9 +123,9 @@ DrumGizmoVst::DrumGizmoVst(audioMasterCallback audioMaster) printf("Error: %d\n", status); } - INFO(example, "We are up and running"); + INFO(vst, "We are up and running"); - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); pos = 0; buffer = nullptr; @@ -181,17 +181,26 @@ DrumGizmoVst::DrumGizmoVst(audioMasterCallback audioMaster) DrumGizmoVst::~DrumGizmoVst() { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); DEBUG(vst, "~DrumGizmoVst(1)\n"); if(drumgizmo) + { delete drumgizmo; + } + DEBUG(vst, "~DrumGizmoVst(2)\n"); if(input) + { delete input; + } + DEBUG(vst, "~DrumGizmoVst(3)\n"); if(output) + { delete output; + } + DEBUG(vst, "~DrumGizmoVst(4)\n"); hug_close(); @@ -199,7 +208,7 @@ DrumGizmoVst::~DrumGizmoVst() VstInt32 DrumGizmoVst::getChunk(void** data, bool isPreset) { - DEBUG(dgeditor, "%s - data: %p isPreset: %d\n", + DEBUG(vst, "%s - data: %p isPreset: %d\n", __PRETTY_FUNCTION__, *data, isPreset ? 1 : 0); std::string cfg = drumgizmo->configString(); DEBUG(vst, "drumgizmo->config := %s\n", cfg.c_str()); @@ -210,7 +219,7 @@ VstInt32 DrumGizmoVst::getChunk(void** data, bool isPreset) VstInt32 DrumGizmoVst::setChunk(void* data, VstInt32 byteSize, bool isPreset) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); std::string config; config.append((const char*)data, (size_t)byteSize); @@ -228,21 +237,21 @@ VstInt32 DrumGizmoVst::setChunk(void* data, VstInt32 byteSize, bool isPreset) void DrumGizmoVst::setProgram(VstInt32 program) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); } void DrumGizmoVst::setProgramName(char* name) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); } void DrumGizmoVst::getProgramName(char* name) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); name[0] = '\0'; } void DrumGizmoVst::getParameterLabel(VstInt32 index, char* label) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); label[0] = '\0'; /* switch(index) @@ -268,7 +277,7 @@ void DrumGizmoVst::getParameterLabel(VstInt32 index, char* label) void DrumGizmoVst::getParameterDisplay(VstInt32 index, char* text) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); text[0] = 0; /* switch(index) @@ -304,7 +313,7 @@ void DrumGizmoVst::getParameterDisplay(VstInt32 index, char* text) void DrumGizmoVst::getParameterName(VstInt32 index, char* label) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); /* switch(index) { @@ -328,13 +337,13 @@ void DrumGizmoVst::getParameterName(VstInt32 index, char* label) void DrumGizmoVst::setParameter(VstInt32 index, float value) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); /* DrumGizmoVstProgram *ap = &programs[curProgram]; switch(index) { case kWaveform1: fWaveform1 = ap->fWaveform1 = value; break; - case kFreq1: fFreq1 = ap->fFreq1 = value; break; + case kFreq1: fFreq1 = ap->fFreq1 = value; break; case kVolume1: fVolume1 = ap->fVolume1 = value; break; case kWaveform2: fWaveform2 = ap->fWaveform2 = value; break; case kFreq2: fFreq2 = ap->fFreq2 = value; break; @@ -346,7 +355,7 @@ void DrumGizmoVst::setParameter(VstInt32 index, float value) float DrumGizmoVst::getParameter(VstInt32 index) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); float value = 0; /* switch(index) @@ -363,10 +372,10 @@ float DrumGizmoVst::getParameter(VstInt32 index) return value; } -bool DrumGizmoVst::getOutputProperties( - VstInt32 index, VstPinProperties* properties) +bool DrumGizmoVst::getOutputProperties(VstInt32 index, + VstPinProperties* properties) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); if(index < NUM_OUTPUTS) { vst_strncpy(properties->label, "Channel ", 63); @@ -381,92 +390,108 @@ bool DrumGizmoVst::getOutputProperties( return false; } -bool DrumGizmoVst::getProgramNameIndexed( - VstInt32 category, VstInt32 index, char* text) +bool DrumGizmoVst::getProgramNameIndexed(VstInt32 category, VstInt32 index, + char* text) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); return false; } bool DrumGizmoVst::getEffectName(char* name) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); vst_strncpy(name, "DrumGizmo4", kVstMaxEffectNameLen); return true; } bool DrumGizmoVst::getVendorString(char* text) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); vst_strncpy(text, "Aasimon.org", kVstMaxVendorStrLen); return true; } bool DrumGizmoVst::getProductString(char* text) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); vst_strncpy(text, "Vst Synth", kVstMaxProductStrLen); return true; } VstInt32 DrumGizmoVst::getVendorVersion() { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); return 1000; } VstInt32 DrumGizmoVst::canDo(char* text) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); if(!strcmp(text, "receiveVstEvents")) + { return 1; + } + if(!strcmp(text, "receiveVstMidiEvent")) + { return 1; + } + // if(!strcmp(text, "midiProgramNames")) return 1; return -1; // explicitly can't do; 0 => don't know } VstInt32 DrumGizmoVst::getNumMidiInputChannels() { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); return 1; // we are monophonic } VstInt32 DrumGizmoVst::getNumMidiOutputChannels() { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); return 0; // no MIDI output back to Host app } -VstInt32 DrumGizmoVst::getMidiProgramName( - VstInt32 channel, MidiProgramName* mpn) +VstInt32 DrumGizmoVst::getMidiProgramName(VstInt32 channel, + MidiProgramName* mpn) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); VstInt32 prg = mpn->thisProgramIndex; - if(prg < 0 || prg >= 128) + if((prg < 0) || (prg >= 128)) + { return 0; + } + fillProgram(channel, prg, mpn); if(channel == 9) + { return 1; + } + return 128L; } -VstInt32 DrumGizmoVst::getCurrentMidiProgram( - VstInt32 channel, MidiProgramName* mpn) +VstInt32 DrumGizmoVst::getCurrentMidiProgram(VstInt32 channel, + MidiProgramName* mpn) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); - if(channel < 0 || channel >= 16 || !mpn) + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); + if((channel < 0) || (channel >= 16) || !mpn) + { return -1; + } + VstInt32 prg = 0; mpn->thisProgramIndex = prg; fillProgram(channel, prg, mpn); + return prg; } -void DrumGizmoVst::fillProgram( - VstInt32 channel, VstInt32 prg, MidiProgramName* mpn) +void DrumGizmoVst::fillProgram(VstInt32 channel, VstInt32 prg, + MidiProgramName* mpn) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); mpn->midiBankMsb = mpn->midiBankLsb = -1; mpn->reserved = 0; mpn->flags = 0; @@ -476,10 +501,10 @@ void DrumGizmoVst::fillProgram( mpn->parentCategoryIndex = 0; } -VstInt32 DrumGizmoVst::getMidiProgramCategory( - VstInt32 channel, MidiProgramCategory* cat) +VstInt32 DrumGizmoVst::getMidiProgramCategory(VstInt32 channel, + MidiProgramCategory* cat) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); cat->parentCategoryIndex = -1; // -1:no parent category cat->flags = 0; // reserved, none defined yet, zero. // VstInt32 category = cat->thisCategoryIndex; @@ -498,7 +523,7 @@ bool DrumGizmoVst::getMidiKeyName(VstInt32 channel, MidiKeyName* key) // if keyName is "" the standard name of the key will be displayed. // if false is returned, no MidiKeyNames defined for 'thisProgramIndex'. { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); // key->thisProgramIndex; // >= 0. fill struct for this program index. // key->thisKeyNumber; // 0 - 127. fill struct for this key number. key->keyName[0] = 0; @@ -509,28 +534,28 @@ bool DrumGizmoVst::getMidiKeyName(VstInt32 channel, MidiKeyName* key) void DrumGizmoVst::setSampleRate(float sampleRate) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); AudioEffectX::setSampleRate(sampleRate); drumgizmo->setSamplerate(sampleRate); } void DrumGizmoVst::setBlockSize(VstInt32 blockSize) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); AudioEffectX::setBlockSize(blockSize); } void DrumGizmoVst::initProcess() { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); // drumgizmo->loadkit(getenv("DRUMGIZMO_DRUMKIT")); drumgizmo->init(); } -void DrumGizmoVst::processReplacing( - float** inputs, float** outputs, VstInt32 sampleFrames) +void DrumGizmoVst::processReplacing(float** inputs, float** outputs, + VstInt32 sampleFrames) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); long lvl = getCurrentProcessLevel(); // 0 = realtime/normal // 1 = non-realtime/rendering @@ -542,9 +567,13 @@ void DrumGizmoVst::processReplacing( if(buffer_size != (size_t)sampleFrames) { if(buffer) + { free(buffer); + } + buffer_size = sampleFrames; buffer = (sample_t*)malloc(sizeof(sample_t) * buffer_size); + drumgizmo->setFrameSize(buffer_size); } @@ -555,7 +584,7 @@ void DrumGizmoVst::processReplacing( VstInt32 DrumGizmoVst::processEvents(VstEvents* ev) { - DEBUG(dgeditor, "%s\n", __PRETTY_FUNCTION__); + DEBUG(vst, "%s\n", __PRETTY_FUNCTION__); input->processEvents(ev); return 1; } |