This is a just a draft, All comment are welcome. Excuse my poor english. All name and osc message are not fixed but provided as examples.
I want a software different everyday, sometime a dj turntable with a sampler, other time something like fruity loops.
I want a software I can use without spending 3 weeks to understand how it work
I want a software with simple component that a can arrange the way I want
I want preset that remember the disposition of each widget
I want something that can be like fruity loops, mixxx, reason, cubase, traktor
all audio software share lot's of idea in common, we can stop reinventing the wheel
a plugins system can implement major software components, splitting the development effort
try to regroup all audio development effort (with plugins)
re-use open source existing code (galan, beast, etc, ...) to make plugins
allow us to choose the sequencer plugins we want, etc..
the UI allow you to construct your studio, you put element together to get what you want, element are like widget in gtk. All parameters are controlled by basic element (pot/slider/knob/button). They control plugins, encapsulated jackapp or the UI itself. A plugins is an audio, osc or midi processor with parameters binded to osc and an optional UI that only display information, and an optional XML file can define the arrangement of the parameters). Encapsulated jackapp are handle like plugins. Audasse work like glade:
you construct your UI, with spliter, tabs, plugins, jackapp,..
like reason you connect all your element together and define some osc binding (for example a button can show or hide a part of the UI)
you play music
An input module is provided to bind hardware data to osc event (kbdz+kbdz transformer). All element have a learn mode.
all element can be controlled by OSC
all element have a learn function (like ableton live)
three mode:
edit the software (or preset), create new element, change bindings and mappings. In this mode you can see all osc message available from all element and link them together, you can although link midi and audio
hardware learn / assignation (midi/osc/mouse/kbd)
run the software (or preset)
allow two type of link between element (except osc) (some element can't be linked):
one to one
group (if a sequencer is linked to and effect rack, when the sequencer get one more track (one audio output), the new audio output is automatically linked to the new effect rack one) (when the number of output or input change, osc message are send to relevant dest to adapt themselve to the new configuration)
do it the unix way. the base application is big, but all plugins can be developed separately.
/spliter/move (diff)
/spliter/orientation (horizontal|vertical)
/spliter/get/state <= the current orientation
/tab/select (tab)
/tab/state <= the current tab
/area/Vscrollable (true|false)
/area/Hscrollable (true|false)
/area/collapse
...
/pot/value
/pot/style
/slider/orientation
/slider/value
/button/toggle
/button/value
jackapp: encapsulate a jack application (audio+jackmidi+osc+
GUI) !!! is that possible?? (no need for a special wm furthermore!!!)
transport bar: handle playpos, loop, stop, play, rec
A plugins is a modular element, that embedded a specific functionality. It could be reused by all applications that support LV3 (the successor of LADSPA/DSSI/LV2). A plugins could be a midi sequencer, a sampler, a turntable, an effect, a synth, a track collection manager (that just send osc), a midi processor, or whatever you what that process osc, midi or audio.
<drop>
<file>
filename.mp3
</file>
<sample>
CDATA
</sample>
</midi type=noteon channel=omni vel=12>
123
</midi>
</drop>
/turntable/play
/turntable/cue
/turntable/stop
/turntable/drop
/turntable/loadtrack
/turntable/pitch
/turntable/seek
/turntable/get/playpos
/turntable/get/pitch
crossfader: no
GUI just osc, and an optionnal
GUI XML file
/crossfader/crossfader
/crossfader/left/plf (headphone)
/crossfader/right/plf (headphone)
/crossfader/left/gain
/crossfader/right/gain
/crossfader/left/volume
/crossfader/right/volume
/crossfader/headphone/volume
/crossfader/headphone/mix
/soundcollection/drag
those message could be implemented by all plugins:
-
basic plugins: a simple turntable, a simple crossfader (we already have eq)
a simple
GUI apps that allow to test plugins (a clone of mixxx would be cool)
define each element with learn, etc..