examples\book\digital-artists\chapter9\SmartMandolin\MandoScore.ck
// Listing 9.21 MandoScore.ck makes and plays your new MandoPlayer
// let's try all this out!! Make a MandoPlayer object
MandoPlayer m;  // (1) Makes a smart MandoPlayer object

// and declare some data for chording and strumming
["G","C","G","D","D","D","D","G"] @=> string chords[]; // (2) Array of string chord names
[0.4,0.4,0.4,0.1,0.1,0.1,0.1,0.01] @=> float durs[];
[79,81,83] @=> int strums[];                           // (3) Array of things to strum

// counter to iterate through the arrays
0 => int i;

// roll the basic chords, reading through the arrays
while (i < chords.cap()) {        // (4) ...through whole chord name array
    m.roll(chords[i],durs[i] :: second); // (5) Rolls each chord
    i++;
}

// now strum a few notes
0 => i;
while (i < strums.cap()) {          // (6) Strums through the array of strums
    m.strum(strums[i++], 1.0 :: second);
}

// then end up with a big open G chord
m.damp(1.0);                 // (7) Lets strings ring a long time
m.roll("G", 0.02 :: second); // (8) Rolls a chord
2.0 :: second => now;

// damp it to silence, letting it ring a little
m.damp(0.01);                // (9) Damps strings at the end
1.0 :: second => now;
home .. language .. program .. examples