fixing patterns for ending fadeout and random number generation

This commit is contained in:
mwinter 2021-01-23 15:34:48 +01:00
parent 2c11afac7a
commit 483162b94d
11 changed files with 7238 additions and 7413 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -99,7 +99,7 @@
\header {
title = \markup { \italic {to kill a monarch}}
composer = \markup \right-column {"michael winter" "(berlin, germany; 2020)"}
composer = \markup \right-column {"michael winter" "(berlin, germany; 2021)"}
poet = "seed: 19800725"
tagline = ""
}
@ -109,7 +109,7 @@
\layout {
indent = 0.0\cm
line-width = 17.5\cm
ragged-last = ##t
ragged-last = ##f
ragged-right = ##f
\context {

View file

@ -99,7 +99,7 @@
\header {
title = \markup { \italic {to kill a monarch}}
composer = \markup \right-column {"michael winter" "(berlin, germany; 2020)"}
composer = \markup \right-column {"michael winter" "(berlin, germany; 2021)"}
poet = "seed: xxx"
tagline = ""
}
@ -109,7 +109,7 @@
\layout {
indent = 0.0\cm
line-width = 17.5\cm
ragged-last = ##t
ragged-last = ##f
ragged-right = ##f
\context {

View file

@ -457,21 +457,25 @@ genAmpCurve = {arg temporalData1, temporalData2, offset1, offset2, type;
sectionNavDict.add([sectionCount, subsectionCount]->[(curLen / 16 + 1).asInteger]);
4.do({arg part;
var musicData, partState, noteCountInd;
var musicData, partState, accompRoutine;
# musicData, partState = genEnsemblePart.value(partStates[part], modeState, temporalData[part], roots, part, curLen);
ensData[part] = ensData[part] ++ musicData;
partStates[part] = partState;
thisThread.randSeed = Date.seed;
6.do({arg register;
musicData = genAccompPart.value(modeState, temporalData[part], curLen, pow(2, part + register), part, register);
accompData[part][register] = accompData[part][register] ++ musicData;
//use and independent random number generator for the accompaniment
accompRoutine = Routine({
thisThread.randSeed = Date.seed;
6.do({arg register;
musicData = genAccompPart.value(modeState, temporalData[part], curLen, pow(2, part + register), part, register);
accompData[part][register] = accompData[part][register] ++ musicData;
});
});
accompRoutine.value;
});
subsectionCount = subsectionCount + 1;
thisThread.randSeed = (seed + (sectionCount * 200) + subsectionCount);
//thisThread.randSeed = (seed + (sectionCount * 200) + subsectionCount);
if(curLen == 0, {
lastCadenceTemporalData = temporalData;

View file

@ -46,12 +46,12 @@ var formatPatternData;
Out.kr(bus, amp.lag)
});
sdEns = SynthDef(\ens_ ++ ~hash, {arg freq = 440, amp = 1, dur = 1, gate = 1, bus = 0, ampBus = 0;
Out.ar(bus, SinOsc.ar(freq, 2pi.rand, 0.1) * amp * Latch.kr(In.kr(ampBus), Impulse.kr(0)) * EnvGen.kr(Env.asr(0.1, 1, 0.1), gate, doneAction: 2))
sdEns = SynthDef(\ens_ ++ ~hash, {arg freq = 440, amp = 1, dur = 1, gate = 1, bus = 0, ampBus = 0, rel = 0.1;
Out.ar(bus, SinOsc.ar(freq, 2pi.rand, 0.1) * amp * Latch.kr(In.kr(ampBus), Impulse.kr(0)) * EnvGen.kr(Env.asr(0.1, 1, rel), gate, doneAction: 2))
});
sdAccomp = SynthDef(\accomp_ ++ ~hash, {arg freq = 440, amp = 1, attack = 1, dur = 1, gate = 1, bout = 0, ampBus = 0;
Out.ar(bout, SinOsc.ar(freq, 2pi.rand, 1) * 0.01 * amp * Latch.kr(In.kr(ampBus), Impulse.kr(0)) * EnvGen.kr(Env.asr(attack, 1, 0.01), gate, doneAction: 2))
sdAccomp = SynthDef(\accomp_ ++ ~hash, {arg freq = 440, amp = 1, attack = 1, dur = 1, gate = 1, bout = 0, ampBus = 0, rel = 0.01;
Out.ar(bout, SinOsc.ar(freq, 2pi.rand, 1) * 0.01 * amp * Latch.kr(In.kr(ampBus), Impulse.kr(0)) * EnvGen.kr(Env.asr(attack, 1, rel), gate, doneAction: 2))
});
sdClip = SynthDef(\clip_ ++ ~hash, {arg dur = 1, gate = 1, bin = 0, bus = 0;
@ -74,12 +74,14 @@ var formatPatternData;
// group data by measures for navigation
formatPatternData = {arg musData, measureLen;
formatPatternData = {arg musData, measureLen, rel, print = false;
var dataLen;
dataLen = musData[0][0].size;
dataLen = musData[0][0].size + 1;
musData.collect({arg partData;
var res;
res = partData.flop;
res = partData;
res = res.collect({arg mData, index; mData.add(if(index != (res.size - 1), {rel}, {5.rand + 5}))});
res = res.flop;
res = res.add(res[1]);
res[1] = (res[1].differentiate.drop(1) ++ [10]);
res = res.flop ++ measureLen.collect({arg measure; dataLen.collect({0}) ++ [measure * 16]});
@ -103,8 +105,8 @@ formatPatternData = {arg musData, measureLen;
accompData.flatten.collect({arg partData; partData.last[1]})
).maxItem.ceil(16) / 16).asInteger + 1;
ensDataFormatted = formatPatternData.value(ensData, measureLen);
accompDataFormatted = formatPatternData.value(accompData.flatten, measureLen);
ensDataFormatted = formatPatternData.value(ensData, measureLen, 0.1, true);
accompDataFormatted = formatPatternData.value(accompData.flatten, measureLen, 0.01);
dUnit = 8.reciprocal;
patterns = measureLen.collect({arg measure;
@ -114,20 +116,21 @@ formatPatternData = {arg musData, measureLen;
});
Ppar(
//check how amplitude is being handled
ensDataFormatted[measure].collect({arg musData, m;
ensDataFormatted[measure].collect({arg musData, p;
Pbind(
\instrument, \ens_ ++ ~hash,
\freq, Pseq(musData[0].replace(0, Rest(0))),
\dur, Pseq(musData[1] * dUnit),
\sustain, Pseq(musData[2] * dUnit),
\amp, [1, 0.7, 0.5, 0.3][m],
//\amp, Pseq(musData[2].collect({arg item; [0, 0.25, 0.5, 0.75][item]}) * [1, 0.5, 0.25, 0.1][m] * 16);
\amp, [1, 0.7, 0.5, 0.3][p],
//\amp, Pseq(musData[2].collect({arg item; [0, 0.25, 0.5, 0.75][item]}) * [1, 0.5, 0.25, 0.1][p] * 16);
\ampBus, preampBusses[0].index,
\bus, postampBusses[m].index
\bus, postampBusses[p].index,
\rel, Pseq(musData[6])
)
}) ++
//check how amplitude and attack are being handled
accompDataFormatted[measure].collect({arg musData, m;
accompDataFormatted[measure].collect({arg musData;
Pbind(
\instrument, \accomp_ ++ ~hash,
\freq, Pseq(musData[0].replace(0, Rest(0))),
@ -137,7 +140,8 @@ formatPatternData = {arg musData, measureLen;
//\attack, Pseq(musData[1] * abs(musData[3].clip(0, 0.25) * 2 - 1) * dUnit),
\attack, Pseq(musData[2] * 1 * dUnit),
\ampBus, preampBusses[0].index,
\bout, Pseq(musData[4].collect({arg index; accompBusses[index].index}))
\bout, Pseq(musData[4].collect({arg index; accompBusses[index].index})),
\rel, Pseq(musData[5])
)
}) ++
[

View file

@ -23,8 +23,9 @@ formatMusicData = {arg rawMusicData;
});
// make them all the same length
maxSize = maxSize.trunc(16) + 16;
musicData = musicData.collect({arg partData, p; partData.extend(maxSize, [-1, -1, -1, partData.last[1]])});
maxSize = maxSize.trunc(64) + 64;
//musicData = musicData.collect({arg partData, p; partData.extend(maxSize, [-1, -1, -1, partData.last[1]])});
musicData = musicData.collect({arg partData, p; partData.extend(maxSize, partData.last)});
musicData
};
@ -68,7 +69,7 @@ lyFinalizeMusic = {arg lyStr, part, name, nameShort, nameMidi, clef;
"\n\\set Score.markFormatter = #format-mark-box-numbers " +
"\\tempo 2 = 60\n" +
"\\numericTimeSignature \\time 2/2\n" +
"\\clef " ++ clef ++ "\n" ++ lyStr ++
"\\clef " ++ clef ++ "\n" ++ lyStr + "\\fermata" +
" }>> \\bar \"|.\" \n} \n\n>>" ++
"\n>>"
};