News

Hans Mikelson

hans@csounds.com

Copter 2
May 24, 2001

copter2.orc copter2.sco

I worked on the helicopter sound a bit more. This one sounds great if you have speakers with some good bass. I combined it with the flanger below and added some pulse width modulation effects. I fixed a bug in the original copter. I got mixed up on the left and right sides. Thanks to João Miguel Pais for the bug fix.

Macros
April 28, 2001

Gabriel Maldonado has proposed the following conventions for writing macros:

One of the main problem of macros is the variable name conficts. To avoid this drawback is sufficient to add a unique suffix for each variable contained in the macro, different for each macro call.

This unique suffix must be provided by the user as a macro argument.

Suffix is necessary mainly for i-rate variables, however, even with k and a-rate variables, suffix could avoid hidden conflicts and could be a good habit.

So I suggest the following broad convention:

#define
TrivialMacro(suffix'aOutput1'aOutput2'aOutputN'xInput1'xInput2'kInput3'iInputN)#
        ;body
        a1$suffix oscil $xInput1, $xInput2, $iInputN
        a2$suffix tone a1$suffix,$kInput3
        a3$suffix delay a2$suffix, .5
        a4$suffix reverb a1$suffix, 3
        $aOutput1 =     a2$suffix
        $aOutput2 =     a3$suffix
        $aOutputN =     a4$suffix
#

I suggest to define each macro argument with the initial letter corresponding to the suggested rates, to avoid confusion:

i -> init rate
k -> control rate or init rate
a -> audio rate
x -> audio rate or control rate

(init, control or audio, obviously except the unique suffix, that, when called, could even be a simple number). Notice also the indentation tabbing for the macro body. This can help user to easily locate start and end of macro. In macro head, the conventional order could be:

  1. the unique suffix
  2. any number of output arguments
  3. any number of input arguments

I suggest to use a single letter to identificate the suffix argument, so variables names could be kept short (for example an uppercase S could be agreed as a convention):

#define
TrivialMacro(S'aOutput1'aOutput2'aOutputN'kInput1'aInput2'kInput3'iInputN)#

        ....BODY

#

Please adopt this style for future macro-based orchestras, or propose a better style.

Gabriel Maldonado

Helicopter
April 12, 2001

copter.orc copter.sco

Here is a helicopter like sound based on filtered noise. Perhaps not that realistic but a cool set of sounds anyway. Hint combine this with the flanger below for even more fun!

Through zero Flanger
February 20, 2001

flanger.orc flanger.sco

This flanger sets up both a variable delay line and a stationary delay line for the original signal. Since the original signal is delayed the flanger is capable of going through a "zero" delay time. This results in constructive interference in the positive feedback case or destructive interference in the negative feedback case. I thought the result was very nice.