Accueil
 

AUdio Dream Studio SE

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.

Rationnal

  • 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..

UI

Basic

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.

Spec

  • 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.

UI Element

basic element
  • spliter
/spliter/move (diff)
/spliter/orientation (horizontal|vertical)
/spliter/get/state <= the current orientation
  • tabbar
/tab/select (tab)
/tab/state <= the current tab
  • area (element can be disposed everywhere on the area)
/area/Vscrollable (true|false)
/area/Hscrollable (true|false)
/area/collapse
...
  • pot
/pot/value
/pot/style
  • slider
/slider/orientation
/slider/value
  • button
/button/toggle
/button/value
  • pad : xy value are controlled by mouse or wallet


Special element
  • jackapp: encapsulate a jack application (audio+jackmidi+osc+GUI) !!! is that possible?? (no need for a special wm furthermore!!!)

  • lv3 plugins:
    • gui: the gui only hold visual information (it doesnt control a parameter) (it is optionnal)
    • a group of osc parameters (pot/button/slider), there is a dtd on the web who spec something like that

  • fxRack: more than one lv3 or jackapp (with collapse, dry/wet, send)

  • transport bar: handle playpos, loop, stop, play, rec


Plugins

Basic

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.

Spec

  • support midi/osc/audio
  • allow to define the number of each input and output during runtime
  • all is controllable by osc (a xml could define the osc GUI)
  • a GUI could be providing just to show information (like track preview)
  • support drag and drop:
    • get message with /source/drag
    • send message to dest with /dest/drop
    • send XML message like that:
<drop>
  <file>
    filename.mp3
  </file>
  <sample>
    CDATA
  </sample>
  </midi type=noteon channel=omni vel=12>
    123
  </midi>
</drop>

Sample plugins

  • turntable: display track preview, and current peak
    • command:
/turntable/play
/turntable/cue
/turntable/stop
/turntable/drop
/turntable/loadtrack
/turntable/pitch
/turntable/seek
  • answer
/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
  • midi sequencer
  • audio sequencer
  • sound collection: allow to drag'n'drop file into one turntable or one sampler
/soundcollection/drag
  • sampler
  • finalscratch input: read audio input, send osc message to turntable

OSC Plugins Standard Messages

those message could be implemented by all plugins:

  • /drag : get a an XML string to send
  • /drop : receive an XML string
  • /transport/playpos : transport position
  • /transport/stop
  • /transport/play
  • /transport/rec
  • input/output number (setter)
    • /audio/input : change the number of audio input
    • /audio/output : change the number of audio input
    • /osc/input : change the number of audio input
    • /osc/output : change the number of audio input
    • /midi/input : change the number of audio input
    • /midi/output : change the number of audio input
  • input/ouput (getter)
    • /audio/get/input : change the number of audio input
    • /audio/get/output : change the number of audio input
    • /osc/get/input : change the number of audio input
    • /osc/get/output : change the number of audio input
    • /midi/get/input : change the number of audio input
    • /midi/get/output : change the number of audio input

OSC Element Standard Messages

  • /value
  • /orientation
  • ...

ROADMAP

  • the plugins spec
  • 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..

TODO

  • pattern editor
  • tracker
  • piano roll
  • some kind of intelligent auto-connect like reason
  • correct the document
  • SLEEP!! (really)
 
audasse.txt · Last modified: 2006/11/28 07:16 by ctaf
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki