sound synthesis with foo “once again text & parenthesis – but less silly” • non-realtime sound synthesis • written in objective-c and scheme • text interface (scheme) • priority to high quality audio rendering over performance lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 1
foo history • free software project • *1993 zkm: gerhard eckel, ramón gonzález-arroyo • NeXT platform, NeXT foundation library • 1994: presentation at ICMC • 1996 zkm: last version for a long time (2.1) • only user: ramón gonzález-arroyo • 2003 fraunhofer institute: first port to linux (martin rumori) lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 2
“foo”: the name • from RFC 3092 (etymology of foo and bar): "Used very generally as a sample name for absolutely anything, esp. programs and files (esp. scratch files)." • in the beginning the admin was not willing to setup a cvs repository • now: sourceforge project (takeover of the “foo” sample project) do they know what they did? lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 3
parts of foo • foo kernel (objective-c) • foo interface (c/objective-c) • foo control library (scheme) • abstraction • envelope • interface-lib • node • processes • tools • utilities lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 4
the first sine wave (syn 1 3 (output~ 1 (sine~ (~ 440)))) • syn convenience macro: channels, synth duration • ~ indicates signal-processing module • output~ to specific channel • “everything is a signal” lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 5
key features of foo • simple • clean semantics of context , task , time • scalable sinc interpolator for resampling (expensive!) • bandlimited noise • incremental mixing lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 6
context – task context context (output~ 1 (gate~ (noise~) 2)) (output~ 2 (...)) (output~ 1 (gate~ (noise~) 2)) (output~ 2 (...)) task task reference, offset, samplerate.. reference, offset, samplerate.. soundfile lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 7
future plans • port from old-stype NeXTStep to OpenStep • LADSPA plugins as modules • port to mac os x • dynamically loadable modules (unit generators) • typed signals • rudimentary realtime support ( → jack support) • cleanup context/task semantics lad meeting #2 zkm karlsruhe, april 30th 2004, martin rumori: foo sound synthesis – p. 8
Recommend
More recommend