Re: [haskell-art] Haskell art?

2011-02-23 Thread Stephen Tetley
On 22 February 2011 23:41, Evan Laforge qdun...@gmail.com 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


Re: [haskell-art] Haskell art?

2011-02-23 Thread Henning Thielemann
Stephen Tetley schrieb:
 On 22 February 2011 23:41, Evan Laforge qdun...@gmail.com 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?

2011-02-23 Thread John Lato
On Wed, Feb 23, 2011 at 8:50 AM, Stephen Tetley stephen.tet...@gmail.comwrote:

 On 22 February 2011 23:41, Evan Laforge qdun...@gmail.com 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?

2011-02-23 Thread Stefan Kersten

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


sk

[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


[haskell-art] jack-0.6

2011-02-23 Thread Henning Thielemann


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