Clapping music

From XPUB & Lens-Based wiki
Revision as of 14:16, 13 October 2010 by Michael Murtaugh (talk | contribs)

... continuing from the sedsongs exercise

See the page on Bash for help with using loops & variables

This is an exercise to create a Bash version of wikipedia:Steve Reich's wikipedia:Clapping music using Bash and a pipeline using midge and timidity.

To start, create the first two bars "by hand" as a midge file:

@head {
    $tempo 120
    $time_sig 4/4
}
@body {
    @channel 1 {
        $patch 1
        $length 16
        $octave 4

    # the main pattern (3, 2, 1, 2 claps with rests in between)
    c c c r c c r c r c c r
    # the first performer simply repeats the pattern...
    c c c r c c r c r c c r

    }
    @channel 2 {
        $patch 2
        $length 16
        $octave 7

    # the 2nd performer starts with the main pattern
    c c c r c c r c r c c r
    # .. and (eventually) shifts the pattern
    c c r c c r c r c c r c

    }
}

The trivial bashified version, note the need to escape (backslash) the $s.

cat << END
@head {
    \$tempo 120
    \$time_sig 4/4
}
@body {
    @channel 1 {
        \$patch 1
        \$length 16
        \$octave 4

    c c c r c c r c r c c r
    c c c r c c r c r c c r


    }
    @channel 2 {
        \$patch 2
        \$length 16
        \$octave 7

    c c c r c c r c r c c r
    c c r c c r c r c c r c


    }
}
END
for ((i=0; i<13;i++))
do
done