Hi everyone,
studying the
http://doc.sccode.org/Tutorials/Streams-Patterns-Events3.html tutorial, I found a nice example showing one way to write for a monophonic instrument, specifically for drum.
(
SynthDef( \help_SPE3_Mridangam, { |out, t_amp|
var sound;
sound = Resonz.ar(
WhiteNoise.ar(70) * Decay2.kr( t_amp, 0.002, 0.1 ),
60.midicps,
0.02,
4
).distort * 0.4;
Out.ar(out, sound);
DetectSilence.ar(sound, doneAction: Done.freeSelf);
}).add;
SynthDef( \help_SPE3_Drone, { |out|
var sound;
sound = LPF.ar(
Saw.ar([60, 60.04].midicps)
+
Saw.ar([67, 67.04].midicps),
108.midicps,
0.007
);
Out.ar(out, sound);
}).add;
)
(
// percussion solo in 10/8
var stream, pat, amp;
pat = Pseq([
Pseq(#[0.0], 10),
// intro
Pseq(#[0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 2),
Pseq(#[0.9, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.2, 0.0, 0.0], 2),
Pseq(#[0.9, 0.0, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.0], 2),
Pseq(#[0.9, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.2, 0.0, 0.2], 2),
// solo
Prand([
Pseq(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.2, 0.0, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.2]),
Pseq(#[0.9, 0.0, 0.0, 0.7, 0.2, 0.2, 0.0, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.2, 0.2, 0.7, 0.2, 0.0]),
Pseq(#[0.9, 0.2, 0.2, 0.7, 0.2, 0.2, 0.2, 0.7, 0.2, 0.2]),
Pseq(#[0.9, 0.2, 0.2, 0.7, 0.2, 0.2, 0.2, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.0, 0.0, 0.7, 0.2, 0.2, 0.2, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.0, 0.4, 0.0, 0.4, 0.0, 0.4, 0.0, 0.4, 0.0]),
Pseq(#[0.9, 0.0, 0.0, 0.4, 0.0, 0.0, 0.4, 0.2, 0.4, 0.2]),
Pseq(#[0.9, 0.0, 0.2, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.0, 0.0, 0.7, 0.0, 0.0]),
Pseq(#[0.9, 0.7, 0.7, 0.0, 0.0, 0.2, 0.2, 0.2, 0.0, 0.0]),
Pseq(#[0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])
], 30),
// tehai : 7 beat motif 3 times sharing 1st beat with next 7x3
// and again the third time:
// 123456712345671234567 123456712345671234567
// 123456712345671234567
// ! ! ! !
// 1234567890123456789012345678901234567890123456789012345678901
Pseq(#[2.0, 0.0, 0.2, 0.5, 0.0, 0.2, 0.9,
1.5, 0.0, 0.2, 0.5, 0.0, 0.2, 0.9,
1.5, 0.0, 0.2, 0.5, 0.0, 0.2], 3),
Pseq(#[5], 1), // sam
Pseq(#[0.0], inf)
]);
stream = pat.asStream;
Task({
Synth(\help_SPE3_Drone);
loop({
if( ( amp = stream.next ) > 0,
{ Synth(\help_SPE3_Mridangam, [ \t_amp, amp ]) }
);
(1/8).wait;
})
}).play
)
In this example is used the amplitude to write silences, notes with different dynamics and accents.
Every note lasts 1/8…
Okay, so if someone would love to transcribe a piece for snare drum like this one:
And then apply algorithmic variations, it could become extremely long and tedious to write in separate arrays the notes length and the related dynamics.
I’m pretty sure I’m not the first one facing this kind of problem, I saw that exists Panola for writing with notes c - d - e… And length of them, but not specifically dynamic values.(Or maybe it’s possible with custom functions?)
I also saw that SC supports a variation of Mikael Laurson’s rhythm list RTM-notation.1
it’s not super intuitive … even if it is very powerful and integrated using lilycollier http://bernardobarros.com/files/lilycollider-sc2013/slides.pdf
I kindly ask you if you know a nice way to write for monophonic drum specifying dynamics.
ideally like that:
Pseq(((1/16).amp(0.3)!8)++((1/9).amp(1.0)!1)++(1/9).amp(0.4)!8)),inf);
Or if there is something to write the score in a notation software and then translate the parameters in arrays.
Or if it’s better to use midi files.
Or… ?
Thanks in advance like always.