void EffectSettingsPage::openEditor() { int index = pluginList->currentRow(); EffectPlugin *plugin = processor->getPlugin(index); plugin->openEditor(parentWidget()); }
int EFFECT_Init() { BFList *effects; int i; LADSPA_Descriptor *dc; EffectPlugin *m; TRACE("EFFECT_Init"); run = 0; effects=PLUGIN_GetList (PLUGIN_TYPE_EFFECT); while(effects) { m=(EffectPlugin*)effects->data; for(i=0;;i++) { if(m->dis) { dc = (LADSPA_Descriptor*) m->dis(i); if(dc == NULL) break; // printf("dc %s\n",dc->Label); } } effects=effects->next; } return 1; }
static void oss_write_audio(gpointer data, int length) { audio_buf_info abuf_info; AFormat new_format; int new_frequency, new_channels; EffectPlugin *ep; new_format = input.format.xmms; new_frequency = input.frequency; new_channels = input.channels; ep = get_current_effect_plugin(); if(effects_enabled() && ep && ep->query_format) { ep->query_format(&new_format,&new_frequency,&new_channels); } if (new_format != effect.format.xmms || new_frequency != effect.frequency || new_channels != effect.channels) { output_time_offset += (output_bytes * 1000) / output.bps; output_bytes = 0; close(fd); fd = open(device_name,O_WRONLY); oss_setup_format(new_format, new_frequency, new_channels); } if (effects_enabled() && ep && ep->mod_samples) length = ep->mod_samples(&data, length, input.format.xmms, input.frequency, input.channels); if (realtime && !ioctl(fd, SNDCTL_DSP_GETOSPACE, &abuf_info)) { while (abuf_info.bytes < length) { xmms_usleep(10000); if (ioctl(fd, SNDCTL_DSP_GETOSPACE, &abuf_info)) break; } } if (oss_convert_func != NULL) length = oss_convert_func(&data, length); if (oss_stereo_convert_func != NULL) length = oss_stereo_convert_func(&data, length, output.format.oss); if (effect.frequency == output.frequency) output_bytes += write_all(fd, data, length); else output_bytes += oss_downsample(data, length, effect.frequency, output.frequency); }
static bool_t effect_start_cb (PluginHandle * plugin, EffectStartState * state) { AUDDBG ("Starting %s at %d channels, %d Hz.\n", plugin_get_name (plugin), * state->channels, * state->rate); EffectPlugin * header = plugin_get_header (plugin); g_return_val_if_fail (header != NULL, TRUE); header->start (state->channels, state->rate); RunningEffect * effect = g_malloc (sizeof (RunningEffect)); effect->plugin = plugin; effect->header = header; effect->channels_returned = * state->channels; effect->rate_returned = * state->rate; effect->remove_flag = FALSE; running_effects = g_list_prepend (running_effects, effect); return TRUE; }
void EffectSettingsPage::addPlugin() { if (!addPluginDialog.exec()) { return; } settings->setValue("vst/searchPath", addPluginDialog.searchPath()); settings->setValue("vst/plugins", addPluginDialog.plugins()); EffectPlugin *plugin = NULL; QString name = addPluginDialog.selectedPlugin(); if (name.endsWith(" [VST]")) { plugin = new VSTPlugin(name.left(name.size() - QString(" [VST]").size())); } #ifdef Q_OS_MAC if (name.endsWith(" [AudioUnit]")) { plugin = new AudioUnitPlugin(name.left(name.size() - QString(" [AudioUnit]").size())); } #endif if (!plugin) { return; } if (!plugin->load()) { delete plugin; return; } /* Opening the editor window frequently blocks for a short amount of time. * Do it before inserting the plugin so audio processing is unaffected. */ plugin->openEditor(parentWidget()); if (!processor->insertPlugin(0, plugin)) { delete plugin; return; } pluginList->insertItem(0, plugin->getName()); pluginList->setCurrentRow(0); }
static void op_write (void *ptr, int len) { EffectPlugin *ep; if (paused) return; /* This sucks but XMMS totally broke the effect plugin code when they added support for multiple enabled effects. Complain to the non-existent XMMS team if a plugin does not work, however this does not seem to affect any plugins in our ports tree. */ ep = get_current_effect_plugin (); ep->mod_samples (&ptr, len, afmt, par.rate, par.pchan); /* Do not lock sio_write as this will cause the GUI thread to block waiting for a blocked sio_write to return. */ len = sio_write (hdl, ptr, len); pthread_mutex_lock (&mutex); wrpos += len; pthread_mutex_unlock (&mutex); }
void EffectSettingsPage::routeClicked() { int index = pluginList->currentRow(); EffectPlugin *plugin = processor->getPlugin(index); EffectPluginRoutingDialog dialog(plugin->getName()); dialog.setWetDryMix(plugin->getWetDryMix()); dialog.setReceiveMidi(plugin->getReceiveMidi()); if (dialog.exec() == QDialog::Accepted) { plugin->setWetDryMix(dialog.getWetDryMix()); plugin->setReceiveMidi(dialog.getReceiveMidi()); } }