[haskell-art] jack-0.6
I have updated jack to use midi-0.1.5, removed orphan instances and some more cleanup. Edward Amsden added a function for querying the samplerate. Can you please check, whether it still works for you: http://code.haskell.org/jack/ ___ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art
Re: [haskell-art] Haskell art?
On 23.02.2011, at 00:41, Evan Laforge wrote: > The notion of a "play time" (i.e. an implicit global "now" at which > point samples are computed) seems antithetical to the ability to > manipulate sounds in the same way as notes, and in fact to functional > programming in general. Doesn't global "now" defeat closure, and thus > compositionality? I think even local "now" defeats strict closure, just like any interaction does. The standard pure functional part of SuperCollider for instance has no notion of now. I can imagine that it is easy to invent many notions of time that could lead to specific subsets, each interesting for itself. ___ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art
Re: [haskell-art] Haskell art?
On 2/23/11 1:07 PM, John Lato wrote: SuperCollider classically was a real-time tuned Smalltalk-like language for sound synthesis. The language allows you to do pretty much any symbolic processing you would expect - of course some things will be easy whereas others will be hard. Here's the score to play a scale from Stephen Travis Pope's book 'Sound and Music Processing in SuperCollider': defaudioout L, R; -- Declareoutputs. deftabletabl1, env1; -- Declare2wavetables--onefor theenvelope. start { -- Playascoreinthestart function -- time instrument dur pitch amp [0.00, ‘chorus_instr, 0.25, 48, 0.5].sched; [0.25, ‘chorus_instr, 0.25, 50, 0.5].sched; [0.50, ‘chorus_instr, 0.25, 52, 0.5].sched; [0.75, ‘chorus_instr, 0.25, 53, 0.5].sched; [1.00, ‘chorus_instr, 0.25, 55, 0.5].sched; } Score and orchestra are the same language - I'm guessing start is the equivalent of main. SC has a GUI toolkit so you can make elements controllable in real-time via sliders and the like. From my (admittedly limited) experience with SC, they're the same language only insofar as you can intermix lines with score and orchestra control, however the orc/sco division seems alive and well. The above code uses the score metaphor. The instrument 'chorus_instr' is created with the orc metaphor (likely a synthdef). The supercollider server understands both, either creating (or modifying) signal processes, or turning them off and on, as instructed, but there are two layers of control. It's certainly useful to be able to mix the two in the same document, but I think there's a useful gulf between signal processing and note scheduling. fwiw, this distinction was introduced in supercollider 3 server around 2002 [1,2]. the synthesis server (scsynth) is a separate process from the control language (sclang). scsynth is a DSP graph interpreter quite similar to, but more flexible than, e.g. csound or pure data. synth definitions, graphs of unit generators similar to csound instruments, are sent to the server in a binary format and serve as templates that can be instantiated and controlled through the OpenSoundControl protocol. sclang is a smalltalk-like language with single inheritance, a bytecode interpreter and a realtime garbage collector. versions prior to supercollider 3 server [3] didn't have such a clear separation between synthesis and control; language statements were executed synchronously from within the audio interrupt, but afaik only at buffer (or control) rate, not at the sample rate. this synchronicity even allowed for the DSP graph to be changed in realtime on the unit generator level, something which is not possible anymore with SC3. (i don't have any real experience with SC2, though). [1] http://en.wikipedia.org/wiki/SuperCollider [2] http://www.mitpressjournals.org/doi/abs/10.1162/014892602320991383 [3] http://www.audiosynth.com/icmc96paper.html ___ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art
Re: [haskell-art] Haskell art?
On Wed, Feb 23, 2011 at 8:50 AM, Stephen Tetley wrote: > On 22 February 2011 23:41, Evan Laforge wrote: > > > > > I'm not super knowledgable about supercollider, but isn't it basically > > a synthesizer which you configure by sending OSC over, and can then > > play it by sending more OSC? > > SuperCollider classically was a real-time tuned Smalltalk-like > language for sound synthesis. The language allows you to do pretty > much any symbolic processing you would expect - of course some things > will be easy whereas others will be hard. > > Here's the score to play a scale from Stephen Travis Pope's book > 'Sound and Music Processing in SuperCollider': > > defaudioout L, R; -- Declareoutputs. > deftabletabl1, env1; -- Declare2wavetables--onefor theenvelope. > start { -- Playascoreinthestart function > -- time instrument dur pitch amp > [0.00, ‘chorus_instr, 0.25, 48, 0.5].sched; > [0.25, ‘chorus_instr, 0.25, 50, 0.5].sched; > [0.50, ‘chorus_instr, 0.25, 52, 0.5].sched; > [0.75, ‘chorus_instr, 0.25, 53, 0.5].sched; > [1.00, ‘chorus_instr, 0.25, 55, 0.5].sched; > } > > Score and orchestra are the same language - I'm guessing start is the > equivalent of main. SC has a GUI toolkit so you can make elements > controllable in real-time via sliders and the like. > >From my (admittedly limited) experience with SC, they're the same language only insofar as you can intermix lines with score and orchestra control, however the orc/sco division seems alive and well. The above code uses the score metaphor. The instrument 'chorus_instr' is created with the orc metaphor (likely a synthdef). The supercollider server understands both, either creating (or modifying) signal processes, or turning them off and on, as instructed, but there are two layers of control. It's certainly useful to be able to mix the two in the same document, but I think there's a useful gulf between signal processing and note scheduling. John ___ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art
Re: [haskell-art] Haskell art?
Stephen Tetley schrieb: > On 22 February 2011 23:41, Evan Laforge wrote: >> Can you write 'inst2 pitch = reverse (inst1 pitch)'? > > Is 'inst2 pitch = reverse (inst1 pitch)' the backwards instrument? My > first thought would be this is hard to write in any continuous > language even functional/FRP. Since SuperCollider is intended as realtime synthesizer it supports certainly only causal signal processes, which 'reverse' is not. I do not think that its internal design of linked nodes and arrays of input and output buffers can be extended to do something like 'reverse'. If lazy evaluation in Haskell would work properly, that is reliably without memory leaks, then you could nicely combine causal processes (via lazy evaluation) and non-causal processes like reverse (not lazy, but could work on the same signal representation). Another nice example of breaking the orchestra-score barrier is the effect of slowing down a record containing synthesized music. That said, I think separating causal and non-causal processes is a good thing anyway, because e.g. feedback can be done reliably (i.e. without deadlocks) only with causal arrows. However Haskell integrates both causal processing (via arrows) and non-time restricted evaluation (via laziness). ___ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art
Re: [haskell-art] Haskell art?
On 22 February 2011 23:41, Evan Laforge wrote: > > I'm not super knowledgable about supercollider, but isn't it basically > a synthesizer which you configure by sending OSC over, and can then > play it by sending more OSC? SuperCollider classically was a real-time tuned Smalltalk-like language for sound synthesis. The language allows you to do pretty much any symbolic processing you would expect - of course some things will be easy whereas others will be hard. Here's the score to play a scale from Stephen Travis Pope's book 'Sound and Music Processing in SuperCollider': defaudioout L, R; -- Declareoutputs. deftabletabl1, env1; -- Declare2wavetables--onefor theenvelope. start { -- Playascoreinthestart function -- time instrument dur pitch amp [0.00, ‘chorus_instr, 0.25, 48, 0.5].sched; [0.25, ‘chorus_instr, 0.25, 50, 0.5].sched; [0.50, ‘chorus_instr, 0.25, 52, 0.5].sched; [0.75, ‘chorus_instr, 0.25, 53, 0.5].sched; [1.00, ‘chorus_instr, 0.25, 55, 0.5].sched; } Score and orchestra are the same language - I'm guessing start is the equivalent of main. SC has a GUI toolkit so you can make elements controllable in real-time via sliders and the like. > Can you write 'inst2 pitch = reverse (inst1 pitch)'? Is 'inst2 pitch = reverse (inst1 pitch)' the backwards instrument? My first thought would be this is hard to write in any continuous language even functional/FRP. ___ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art