Source: arts/artsmodules.idl
|
|
|
|
/*
Copyright (C) 2000-2001 Stefan Westerfeld
stefan@space.twc.de
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/*
* DISCLAIMER: The interfaces in artsmodules.idl (and the derived .cc/.h files)
* DO NOT GUARANTEE BINARY COMPATIBILITY YET.
*
* They are intended for developers. You shouldn't expect that applications in
* binary form will be fully compatibile with further releases of these
* interfaces.
*/
#include <artsflow.idl>
#include <artsmidi.idl>
module Arts {
// EXPERIMENTAL MIDI
interface MidiChannel {
//oneway void noteOn(byte channel, byte note, byte volume);
//oneway void noteOff(byte channel, byte note);
readonly attribute TimeStamp time;
oneway void noteOnAt(TimeStamp time, byte channel, byte note, byte volume);
oneway void noteOffAt(TimeStamp time, byte channel, byte note);
void noteOn(byte channel, byte note, byte volume);
void noteOff(byte channel, byte note);
};
interface ObjectCache {
void put(object obj, string name);
object get(string name);
};
interface MidiReleaseHelper : SynthModule {
attribute SynthModule voice;
attribute string name;
attribute ObjectCache cache;
boolean terminate();
in audio stream done;
};
/**
* this interface currently has probably a problem - usually, if you are
* using such a module, you would expect that you can specify the filename
* with it - BUT, if you allow this, then any instrument definition file
* (.arts) and similar might overwrite every file the user can access, which
* might not be what you want, so I currently save it to a file in
* /tmp/mcop-<username>/capture.wav (which might be unlucky since the user
* might not have too much space there)
*/
interface Synth_CAPTURE_WAV : SynthModule {
default in audio stream left, right;
};
// END EXPERIMENTAL MIDI
interface Synth_NIL : SynthModule {
};
interface Synth_DEBUG : SynthModule {
attribute string comment;
in audio stream invalue;
};
interface Synth_DATA : SynthModule {
attribute float value;
out audio stream outvalue;
};
interface Synth_ATAN_SATURATE : SynthModule {
attribute float inscale;
in audio stream invalue;
out audio stream outvalue;
};
interface Synth_BRICKWALL_LIMITER : SynthModule {
in audio stream invalue;
out audio stream outvalue;
};
interface Synth_AUTOPANNER : SynthModule {
in audio stream invalue, inlfo;
out audio stream outvalue1, outvalue2;
};
interface Synth_DELAY : SynthModule {
in audio stream invalue, time;
out audio stream outvalue;
};
interface Synth_CDELAY : SynthModule {
attribute float time;
in audio stream invalue;
out audio stream outvalue;
};
interface Synth_FM_SOURCE : SynthModule {
in audio stream frequency, modulator, modlevel;
out audio stream pos;
};
interface Synth_TREMOLO : SynthModule {
in audio stream invalue, inlfo;
out audio stream outvalue;
};
interface Synth_FX_CFLANGER : SynthModule {
attribute float mintime, maxtime;
in audio stream invalue, lfo;
out audio stream outvalue;
};
interface Synth_NOISE : SynthModule {
out audio stream outvalue;
};
interface Synth_WAVE_TRI : SynthModule {
in audio stream pos;
out audio stream outvalue;
};
interface Synth_WAVE_SQUARE : SynthModule {
in audio stream pos;
out audio stream outvalue;
};
interface Synth_WAVE_PULSE : SynthModule {
attribute float dutycycle;
in audio stream pos;
out audio stream outvalue;
};
interface Synth_WAVE_SOFTSAW : SynthModule {
in audio stream pos;
out audio stream outvalue;
};
interface Synth_ENVELOPE_ADSR : SynthModule {
in audio stream active,invalue,attack,decay,sustain,release;
out audio stream outvalue,done;
};
interface Synth_SHELVE_CUTOFF : SynthModule {
in audio stream invalue,frequency;
out audio stream outvalue;
};
interface Synth_XFADE : SynthModule {
in audio stream invalue1,invalue2,percentage;
out audio stream outvalue;
};
interface Synth_MIDI_TEST : SynthModule, MidiPort {
attribute string filename;
};
interface Synth_MIDI_DEBUG : SynthModule, MidiChannel {
};
interface Synth_FREEVERB : StereoEffect {
attribute float roomsize, damp, wet, dry, width, mode;
};
interface Synth_STD_EQUALIZER : SynthModule {
attribute float low, mid, high, frequency, q;
in audio stream invalue;
out audio stream outvalue;
};
interface Synth_RC : SynthModule {
attribute float b, f;
in audio stream invalue;
out audio stream outvalue;
};
interface Synth_MOOG_VCF : SynthModule {
attribute float frequency, resonance;
in audio stream invalue;
out audio stream outvalue;
};
interface Synth_PSCALE : SynthModule {
attribute float top;
in audio stream invalue, pos;
out audio stream outvalue;
};
interface Synth_SEQUENCE : SynthModule {
attribute float speed;
attribute string seq;
out audio stream frequency, pos;
};
interface Synth_PITCH_SHIFT : SynthModule {
attribute float speed, frequency;
in audio stream invalue;
out audio stream outvalue;
};
/*----------------------------------------------------------------------------
* everything below this line is obsolete, but provided to help with porting
* old structures
*/
interface Interface_MIDI_NOTE : SynthModule {
out audio stream frequency,velocity,pressed;
};
interface Synth_STRUCT_KILL : SynthModule {
in audio stream ready;
};
};
Generated by: stefan@stefan on Sat Feb 24 19:11:36 2001, using kdoc 2.0a47. |