Toccata Arpeggiata


#1

Generated using below code. (Of course I didn’t use the default instrument. I sent the output to a hardware synth instead).

Enjoy the ride!

(
var arp = {
    | notes, tail |
    var splitnotes = notes.split($ );
    var result = splitnotes.collect({
        | note |
        note + tail
    });
    result.join(" ");
};

var repeat = {
    | times, notes |
    times.collect({
        notes;
    }).join(" ");
};

var melody = Panola.new(
    repeat.value(2, [
        arp.value("e5_16*2/3 e5 e5 e5", "c5 a4 e a c5"),
        arp.value("e5_16*2/3 e5 f5 g5", "c5 a-4 f a- c5"),
        arp.value("e5_16*2/3 e5 e5 e5", "c5 a4 e a c5"),
        arp.value("e5_16*2/3 f5 g5 a-5", "c5 a-4 f a- c5"),
        arp.value("g5 g5 g5 g5", "e-5 d c d e-"),
        repeat.value(2, [
            arp.value("g5", "e-5 c5 b-4 c5 e-5"),
            arp.value("a-5", "e-5 c5 a-4 c5 e-5")].join(" ")),
        arp.value("g5 g5 g5 g5", "e-5 d c d e-"),
        arp.value("g5", "e-5 c5 b-4 c5 e-5"),
        arp.value("a-5", "e-5 c5 a-4 c5 e-5"),
        arp.value("b-5", "e-5 c5 b-4 c5 e-5"),
        arp.value("c6", "e-5 c5 a-4 c5 e-5"),
        arp.value("b-5 b-5 b-5 b-5", "g-5 f e- f g-"),
        repeat.value(2, [
            arp.value("b-5", "g-5 e-5 d-5 e-5 g-5"),
            arp.value("b5", "g-5 e-5 b4 e-5 g-5")].join(" ")),
        arp.value("b-5 b-5 b-5 b-5", "g-5 f e- f g-"),
        arp.value("b-5 a-5 g-5 f5", "g-5 e-5 d-5 e-5 g-5"),
        arp.value("a5 a5 a5 a5", "f#5 d#5 c5 d#5 f#5"),
        arp.value("a-5 a-5 a-5 a-5", "f5 d5 b4 d5 f5"),
        arp.value("g5 g5 g-5 g-5", "e-5 c5 a4 c5 e-5"),
        arp.value("f5 f5 f5 f5", "d5 b4 a-4 b4 d5"),
        arp.value("e-5 e-5 e-5 e-5", "c5 a4 g-4 a4 c5"),
        arp.value("d5 d5 d5 d5", "b4 a-4 f4 a-4 b4"),
        arp.value("c#5 c#5 c5 c5", "a4 f#4 d#4 f#4 a4"),
        arp.value("b4 b4 b-4 b-4", "a-4 f4 d4 f4 a-4"),
        arp.value("a4 a4", "g-4 e-4 c4 e-4 g-4"),
        arp.value("a-4 a-4", "g-4 e-4 b3 e-4 g-4"),
        arp.value("a-4 a-4 a-4 a-4", "f4 d4 b-3 d4 f4"),
        arp.value("e-5 e-5 e-5 e-5", "b-4 a-4 g4 a-4 b-4"),
        arp.value("e-5 e-5 e-5 e-5", "b-4 g4 e-4 g4 b-4")].join(" ")) + "<e-4_1 g4 b-4 e-5>");
var accompaniment = Panola.new([
    repeat.value(2, [
        "<a2_1 a3>",
        "<f2_1 f3>",
        "<a2_1 a3>",
        "<f2_1 f3>",
        repeat.value(2, [
            "<c3_2 c4> <b-2_2 b-3>",
            "<a-2_1 a-3>"].join(" ")),
        repeat.value(2, [
            "<e-3_2 e-4> <d-3_2 d-4>",
            "<b2_1 b3>"].join(" ")),
        "<a2_1 a3>",
        repeat.value(9, "<b-2_1 b-3>"),
        "<e-2_1 e-3> <e-1_1 e-2>"
    ].join("")),
    "<e-2_1 e-3>"
].join(" ")
);

Ppar([
    melody.asPbind,
    accompaniment.asPbind]).play;
)