| Hi,
I've made some progress on making LADSPA and DSSI host opcodes for
csound5. Since I won't have time during this month to work on them, I've
decided to commit what I've got so far.
DONE:
-LADSPA plugins work.
-DSSI plugins load, but nothing else has been implemented, though the
infrastructure to support everything should be there
TODO:
-Clean up and optimize (clean up on deinit).
-implement dssi plugins
It should be now on cvs, both the opcodes and the manual entries.
To build you can add the following to SConstruct:
# DSSI HOST OPCODES
if getPlatform() == 'linux':
dssiEnvironment = vstEnvironment.Copy()
print "CONFIGURATION DECISION: Building DSSI plugin support."
pluginLibraries.append(dssiEnvironment.SharedLibrary('dssi4cs',
Split('''
Opcodes/dssi4cs/src/load.c
Opcodes/dssi4cs/src/dssi4cs.c
''')))
Any comments or suggestions are very welcome. Do the opcode names make
sense or using dssi might confuse people and lead to think LADSPA
plugins don't work? Any suggestions there?
Enjoy,
Andrés
The new opcodes are:
---------------------------------------------
dssiinit
dssiinit — Loads a DSSI or LADSPA plugin.
Syntax
ihandle dssiinit ilibraryname, iplugindex [, iverbose]
Description
dssiinit is used to load a DSSI or LADSPA plugin into memory for use
with the other dssi4cs opcodes. Both LADSPA effects and DSSI instruments
can be used.
Initialization
ihandle - the number which identifies the plugin, to be passed to other
dssi4cs opcodes.
ilibraryname - the name of the .so (shared object) file to load.
iplugindex - The index of the plugin to be used.
iverbose (optional) - show plugin information and parameters when
loading. (default = 1)
dssiinit looks for ilibraryname on LADSPA_PATH and DSSI_PATH. One of
these variables must be set, otherwise dssiinit will return an error.
LADSPA and DSSI libraries may contain more than one plugin which must be
referenced by its index. dssiinit then attempts to find plugin index
iplugindex in the library and load the plugin into memory if it is
found. To find out which plugins you have available and their index
numbers you can use: dssilist
If iverbose is not 0 (the default), information about the plugin
detailing its characteristics and its ports will be shown. This
information is important for opcodes like dssictls.
Plugins are set to inactive by default, so you *must* use dssiactivate
to get the plugin to produce sound. This is required even if the plugin
doesn't provide an active() function.
dssiinit may cause audio stream breakups when used in realtime, so it is
recommended to load all plugins to be used before playing.
--------------------------------------------------------------
dssilist
dssilist — Lists all available DSSI and LADSPA plugins.
Syntax
dssilist
Description
dssilist checks the variables DSSI_PATH and LADSPA_PATH and lists all
plugins available in all plugin libraries there.
LADSPA and DSSI libraries may contain more than one plugin which must be
referenced by the index provided by dssilist.
This opcode produces a long printout which may interrupt realtime audio
output, so it should be run at the start of a performance.
--------------------------------------------------------------
dssiactivate
dssiactivate — Activates or deactivates a DSSI or LADSPA plugin.
Syntax
dssiactivate ihandle, ktoggle
Description
dssiactivate is used to activate or deactivate a DSSI or LADSPA plugin.
It calles the plugin's activate() and deactivate() functions if they are
provided.
Initialization
ihandle - the number which identifies the plugin, generated by dssiinit.
Performance
ktoggle - Selects between activation (ktoggle=1) and deactivation
(ktoggle=0).
dssiactivate is used to turn on and off plugins if they provide this
facility. This may help conserve CPU processing in some cases. For
consistency, all plugins must be activated to produce sound. An inactive
plugin produces silence.
Depending on the plugin's implementation, this may cause interruptions
in the realtime audio process, so use with caution.
dssiactivate may cause audio stream breakups when used in realtime, so
it is recommended to load all plugins to be used before playing.
--------------------------------------------------------------------
dssiaudio
dssiaudio — Processes audio using a LADSPA or DSSI plugin.
Syntax
aout1 [, aout2, aout3, aout4] dssiaudio ihandle, ain1 [,ain2, ain3, ain4]
Description
dssiaudio generates audio by processing an input signal through a LADSPA
plugin.
Initialization
ihandle - handle for the plugin returned by dssiinit
Performance
aout1, aout2, etc - Audio ouput generated by the plugin
ain1, ain2, etc - Audio provided to the plugin for processing
dssiaudio runs a plugin on the provided audio and produces audio output.
Currently upto four inputs and outputs are provided. You should provide
signal for all the plugins audio inputs, otherwise unpredictable results
may occur. If the plugin doesn't have any input (e.g Noise generator)
you must still provide at least one input variable, which will be
ignored with a message.
Only one dssiaudio should be executed once per plugin, or strange
results may occur.
---------------------------------------------------------------------
dssictls
dssictls — Send control information to a LADSPA or DSSI plugin.
Syntax
dssictls ihandle, iport, kvalue, ktrigger
Description
dssictls sends control values to a plugin's control port
Initialization
ihandle - handle for the plugin returned by dssiinit
iport - control port number
Performance
kvalue - value to be assigned to the port
ktrigger - determines whether the control information will be sent
(ktrigger = 1) or not. This is useful for thinning control information,
generating ktrigger with metro
dssictls sends control information to a LADSPA or DSSI plugin's control
port. The valid control ports and ranges are given by dssiinit. Using
values outside the ranges may produce unspecified behaviour.
-------------------------------------------------------------------
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net |