2020_07_11_01
This commit is contained in:
parent
ff0136caf9
commit
d69884511b
Binary file not shown.
|
|
@ -3,15 +3,15 @@
|
||||||
~generateGUI = {
|
~generateGUI = {
|
||||||
var win, clockStringFunc, metronomeStringFunc, metronomeColorFunc, masterView, faderView, helpView, tabs;
|
var win, clockStringFunc, metronomeStringFunc, metronomeColorFunc, masterView, faderView, helpView, tabs;
|
||||||
var tabButtonReset, transportButton, mixerButton, helpButton, startPos = 0;
|
var tabButtonReset, transportButton, mixerButton, helpButton, startPos = 0;
|
||||||
var partAbbr = ["guitar", "accompHigh", "accompLowLower", "accompLowUpper", "interlude"];
|
var partAbbr = ["guitar", "accompHigh", "accompLowLower", "accompLowUpper", "interlude", "click"];
|
||||||
var trackNames = ["guitar", "high", "low 1", "low 2", "interlude"];
|
var trackNames = ["guitar", "high", "low 1", "low 2", "interlude", "click"];
|
||||||
var partVols, partMutes, partPans;
|
var partVols, partMutes, partPans;
|
||||||
var masterMute, masterVol;
|
var masterMute, masterVol;
|
||||||
|
|
||||||
// set initial mixer values
|
// set initial mixer values
|
||||||
partVols = [1, 1, 1, 1, 1];
|
partVols = [1, 1, 1, 1, 1, 1];
|
||||||
partMutes = [0, 1, 1, 1, 1];
|
partMutes = [0, 1, 1, 1, 1, 0];
|
||||||
partPans = [0, 0, 0, 0, 0];
|
partPans = [0, 0, 0, 0, 0, 0];
|
||||||
masterMute = 1;
|
masterMute = 1;
|
||||||
masterVol = 1;
|
masterVol = 1;
|
||||||
|
|
||||||
|
|
@ -71,6 +71,23 @@
|
||||||
subSection = ((~sectionOrder[~currentSection] % 4) + 1).asInteger;
|
subSection = ((~sectionOrder[~currentSection] % 4) + 1).asInteger;
|
||||||
sectionDisplay.string = "section: " ++ section.asString ++ "." ++ subSection.asString;
|
sectionDisplay.string = "section: " ++ section.asString ++ "." ++ subSection.asString;
|
||||||
if(~isPlaying, {
|
if(~isPlaying, {
|
||||||
|
countOff = {
|
||||||
|
if(~interludes && ((~currentSection % 4) == 0), {
|
||||||
|
Pbind(
|
||||||
|
\instrument, \click ++ ~hash,
|
||||||
|
\beat, Pseq([1, 2, 1, 2]),
|
||||||
|
\dur, 1
|
||||||
|
).play(~tempoClock, quant: 0);
|
||||||
|
[1, 2, 1, 2].do({arg beat;
|
||||||
|
{
|
||||||
|
metronome.stringColor = metronomeColorFunc.value(beat);
|
||||||
|
metronome.string = metronomeStringFunc.value(beat);
|
||||||
|
}.defer;
|
||||||
|
0.75.wait;
|
||||||
|
{metronome.string = ""}.defer;
|
||||||
|
0.25.wait;
|
||||||
|
});
|
||||||
|
});
|
||||||
~play.set(\sel, ~currentSection % 2);
|
~play.set(\sel, ~currentSection % 2);
|
||||||
~patterns[~sectionOrder[~currentSection]].play(~tempoClock, quant: 0);
|
~patterns[~sectionOrder[~currentSection]].play(~tempoClock, quant: 0);
|
||||||
if(~interludes && ((~currentSection % 4) == 3) && (~currentSection != (~sectionOrder.size - 1)), {
|
if(~interludes && ((~currentSection % 4) == 3) && (~currentSection != (~sectionOrder.size - 1)), {
|
||||||
|
|
@ -88,6 +105,7 @@
|
||||||
if(((~currentSection % 4)) != 0 && ((~currentSection % 4) != 3), {
|
if(((~currentSection % 4)) != 0 && ((~currentSection % 4) != 3), {
|
||||||
~interludeTremelo.set(\gate, 0, \amp, 0);
|
~interludeTremelo.set(\gate, 0, \amp, 0);
|
||||||
});
|
});
|
||||||
|
}.fork(~tempoClock, quant: 0);
|
||||||
}, {
|
}, {
|
||||||
var measure, beat;
|
var measure, beat;
|
||||||
measure = ~sectionStartMeasure[~sectionOrder[~currentSection]];
|
measure = ~sectionStartMeasure[~sectionOrder[~currentSection]];
|
||||||
|
|
@ -140,6 +158,11 @@
|
||||||
~interludeTremelo.set(\gate, 0, \amp, 0);
|
~interludeTremelo.set(\gate, 0, \amp, 0);
|
||||||
},{
|
},{
|
||||||
countOff = {
|
countOff = {
|
||||||
|
Pbind(
|
||||||
|
\instrument, \click ++ ~hash,
|
||||||
|
\beat, Pseq([1, 2, 1, 2]),
|
||||||
|
\dur, 1
|
||||||
|
).play(~tempoClock, quant: 0);
|
||||||
[1, 2, 1, 2].do({arg beat;
|
[1, 2, 1, 2].do({arg beat;
|
||||||
{
|
{
|
||||||
metronome.stringColor = metronomeColorFunc.value(beat);
|
metronome.stringColor = metronomeColorFunc.value(beat);
|
||||||
|
|
@ -218,13 +241,13 @@
|
||||||
var view, masterIndicators, trackIndicators, master, tracks;
|
var view, masterIndicators, trackIndicators, master, tracks;
|
||||||
view = View(win);
|
view = View(win);
|
||||||
masterIndicators = {LevelIndicator()} ! 2;
|
masterIndicators = {LevelIndicator()} ! 2;
|
||||||
trackIndicators = {LevelIndicator()} ! 5;
|
trackIndicators = {LevelIndicator()} ! 6;
|
||||||
|
|
||||||
OSCFunc.new({arg msg; {
|
OSCFunc.new({arg msg; {
|
||||||
{arg i; masterIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 2}.defer},
|
{arg i; masterIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 2}.defer},
|
||||||
'/masterLevels' ++ ~hash, s.addr);
|
'/masterLevels' ++ ~hash, s.addr);
|
||||||
OSCFunc.new({arg msg; {
|
OSCFunc.new({arg msg; {
|
||||||
{arg i; trackIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 5}.defer},
|
{arg i; trackIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 6}.defer},
|
||||||
'/trackLevels' ++ ~hash, s.addr);
|
'/trackLevels' ++ ~hash, s.addr);
|
||||||
|
|
||||||
master = HLayout(
|
master = HLayout(
|
||||||
|
|
@ -247,17 +270,17 @@
|
||||||
trackIndicators[part]),
|
trackIndicators[part]),
|
||||||
Button(view).states_([["mute", Color.black], ["mute", Color.black, Color.grey]]).action_(
|
Button(view).states_([["mute", Color.black], ["mute", Color.black, Color.grey]]).action_(
|
||||||
{arg v; partMutes[part] = (1 - v.value).abs; ~play.set(partAbbr[part] ++ "Mute", partMutes[part])}.inEnvir).value_(
|
{arg v; partMutes[part] = (1 - v.value).abs; ~play.set(partAbbr[part] ++ "Mute", partMutes[part])}.inEnvir).value_(
|
||||||
{if(part == 0, {1}, {0})}.value),
|
{if((part == 0) || (part == 5), {1}, {0})}.value),
|
||||||
StaticText(view).string_("pan").align_(\center),
|
StaticText(view).string_("pan").align_(\center),
|
||||||
Knob(view).value_(0.5).action_(
|
Knob(view).value_(0.5).action_(
|
||||||
{arg v; partPans[part] = v.value * 2 - 1; ~play.set(partAbbr[part] ++ "Pan", partPans[part])}.inEnvir),
|
{arg v; partPans[part] = v.value * 2 - 1; ~play.set(partAbbr[part] ++ "Pan", partPans[part])}.inEnvir),
|
||||||
StaticText(view).string_(trackNames[part]).align_(\center)
|
StaticText(view).string_(trackNames[part]).align_(\center)
|
||||||
),
|
),
|
||||||
nil)
|
nil)
|
||||||
} ! 5;
|
} ! 6;
|
||||||
view.layout_(HLayout(master, nil, *tracks))};
|
view.layout_(HLayout(master, nil, *tracks))};
|
||||||
helpView = {
|
helpView = {
|
||||||
StaticText(win).string_(File.readAllString(~dir +/+ "cicc_readme.scd"));
|
TextView(win).string_(File.readAllString(~dir +/+ "cicc_readme.scd")).editable_(false);
|
||||||
};
|
};
|
||||||
tabButtonReset = {transportButton.value = 1; mixerButton.value = 1; helpButton.value = 1};
|
tabButtonReset = {transportButton.value = 1; mixerButton.value = 1; helpButton.value = 1};
|
||||||
win.layout = VLayout(
|
win.layout = VLayout(
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,5 @@ The default seed given in the application and reseeded when the "reset seed" but
|
||||||
|
|
||||||
|
|
||||||
~~~~mixer tab
|
~~~~mixer tab
|
||||||
This allow invidual control of each of the sonic elements. The synthesized guitar part is automatically muted is at should only be used for audition and practice. The low accompaniment has two separate tracks in case a performer cannot play both the notes.
|
This allow invidual control of each of the sonic elements. The synthesized guitar part is automatically muted is at should only be used for audition and practice. The low accompaniment has two separate tracks in case a performer cannot play both the notes. The sonification will go out outputs 1 and 2 while the click will go out outputs 3 and 4.
|
||||||
*/
|
*/
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
~accompLowLowerBusB = Bus.audio(s, 1);
|
~accompLowLowerBusB = Bus.audio(s, 1);
|
||||||
~accompLowUpperBusB = Bus.audio(s, 1);
|
~accompLowUpperBusB = Bus.audio(s, 1);
|
||||||
~interludeTremoloBus = Bus.audio(s, 1);
|
~interludeTremoloBus = Bus.audio(s, 1);
|
||||||
|
~clickBus = Bus.audio(s, 1);
|
||||||
|
|
||||||
SynthDef(\masterPlayerControl ++ ~hash, {
|
SynthDef(\masterPlayerControl ++ ~hash, {
|
||||||
arg sel = 0,
|
arg sel = 0,
|
||||||
|
|
@ -16,9 +17,10 @@ SynthDef(\masterPlayerControl ++ ~hash, {
|
||||||
accompHighVol = 1, accompHighPan = 0, accompHighMute = 1,
|
accompHighVol = 1, accompHighPan = 0, accompHighMute = 1,
|
||||||
accompLowLowerVol = 1, accompLowLowerPan = 0, accompLowLowerMute = 1,
|
accompLowLowerVol = 1, accompLowLowerPan = 0, accompLowLowerMute = 1,
|
||||||
accompLowUpperVol = 1, accompLowUpperPan = 0, accompLowUpperMute = 1,
|
accompLowUpperVol = 1, accompLowUpperPan = 0, accompLowUpperMute = 1,
|
||||||
interludeVol = 1, interludePan = 0, interludeMute = 1;
|
interludeVol = 1, interludePan = 0, interludeMute = 1,
|
||||||
var guitarSig, accompHighSig, accompLowLowerSig, accompLowUpperSig, interludeSig,
|
clickVol = 1, clickPan = 0, clickMute = 1;
|
||||||
guitarSigPanned, accompHighSigPanned, accompLowLowerSigPanned, accompLowUpperSigPanned, interludeSigPanned,
|
var guitarSig, accompHighSig, accompLowLowerSig, accompLowUpperSig, interludeSig, clickSig,
|
||||||
|
guitarSigPanned, accompHighSigPanned, accompLowLowerSigPanned, accompLowUpperSigPanned, interludeSigPanned, clickSigPanned,
|
||||||
masterSig, imp;
|
masterSig, imp;
|
||||||
|
|
||||||
guitarSig = In.ar(~guitarBus) * guitarVol;
|
guitarSig = In.ar(~guitarBus) * guitarVol;
|
||||||
|
|
@ -36,12 +38,15 @@ SynthDef(\masterPlayerControl ++ ~hash, {
|
||||||
]
|
]
|
||||||
) * accompLowUpperVol;
|
) * accompLowUpperVol;
|
||||||
interludeSig = In.ar(~interludeTremoloBus) * interludeVol;
|
interludeSig = In.ar(~interludeTremoloBus) * interludeVol;
|
||||||
|
clickSig = In.ar(~clickBus) * clickVol;
|
||||||
|
|
||||||
guitarSigPanned = Pan2.ar(guitarSig * guitarMute, guitarPan);
|
guitarSigPanned = Pan2.ar(guitarSig * guitarMute, guitarPan);
|
||||||
accompHighSigPanned = Pan2.ar(accompHighSig * accompHighMute, accompHighPan);
|
accompHighSigPanned = Pan2.ar(accompHighSig * accompHighMute, accompHighPan);
|
||||||
accompLowLowerSigPanned = Pan2.ar(accompLowLowerSig * accompLowLowerMute, accompLowLowerPan);
|
accompLowLowerSigPanned = Pan2.ar(accompLowLowerSig * accompLowLowerMute, accompLowLowerPan);
|
||||||
accompLowUpperSigPanned = Pan2.ar(accompLowUpperSig * accompLowUpperMute, accompLowUpperPan);
|
accompLowUpperSigPanned = Pan2.ar(accompLowUpperSig * accompLowUpperMute, accompLowUpperPan);
|
||||||
interludeSigPanned = Pan2.ar(interludeSig * interludeMute, interludePan);
|
interludeSigPanned = Pan2.ar(interludeSig * interludeMute, interludePan);
|
||||||
|
clickSigPanned = Pan2.ar(clickSig * clickMute, clickPan);
|
||||||
|
|
||||||
masterSig = Mix.ar(
|
masterSig = Mix.ar(
|
||||||
[
|
[
|
||||||
guitarSigPanned,
|
guitarSigPanned,
|
||||||
|
|
@ -52,6 +57,7 @@ SynthDef(\masterPlayerControl ++ ~hash, {
|
||||||
]) * masterVol * masterMute;
|
]) * masterVol * masterMute;
|
||||||
|
|
||||||
Out.ar(0, masterSig);
|
Out.ar(0, masterSig);
|
||||||
|
Out.ar(2, clickSigPanned); //change this if you want the click to go somewhere else
|
||||||
|
|
||||||
imp = Impulse.kr(10);
|
imp = Impulse.kr(10);
|
||||||
SendReply.kr(imp,
|
SendReply.kr(imp,
|
||||||
|
|
@ -63,7 +69,7 @@ SynthDef(\masterPlayerControl ++ ~hash, {
|
||||||
[
|
[
|
||||||
Amplitude.kr(guitarSig), Amplitude.kr(accompHighSig),
|
Amplitude.kr(guitarSig), Amplitude.kr(accompHighSig),
|
||||||
Amplitude.kr(accompLowLowerSig), Amplitude.kr(accompLowUpperSig),
|
Amplitude.kr(accompLowLowerSig), Amplitude.kr(accompLowUpperSig),
|
||||||
Amplitude.kr(interludeSig)
|
Amplitude.kr(interludeSig), Amplitude.kr(clickSig)
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}).add;
|
}).add;
|
||||||
|
|
@ -76,6 +82,12 @@ SynthDef(\transport ++ ~hash, {arg measure = 0, beat = 0, gate = 1, dur = 1;
|
||||||
}).add;
|
}).add;
|
||||||
|
|
||||||
|
|
||||||
|
SynthDef(\click ++ ~hash, {arg beat = 0, gate = 1, dur = 1;
|
||||||
|
Out.ar(~clickBus, 10 * BPF.ar(WhiteNoise.ar * EnvGen.kr(Env.perc(0.01, 0.1), gate), 440 * ((beat <= 1) + 1), 0.02));
|
||||||
|
EnvGen.kr(Env.sine(dur), gate, doneAction: 2);
|
||||||
|
}).add;
|
||||||
|
|
||||||
|
|
||||||
//~~~~karplus
|
//~~~~karplus
|
||||||
SynthDef(\karplus ++ ~hash, {arg freq, gate = 1, amp = 0.5, bus;
|
SynthDef(\karplus ++ ~hash, {arg freq, gate = 1, amp = 0.5, bus;
|
||||||
Out.ar(bus,
|
Out.ar(bus,
|
||||||
|
|
@ -250,6 +262,11 @@ SynthDef(\interludeTremelo ++ ~hash, {arg gate = 0, amp = 1, freq1, freq2, tremR
|
||||||
\measure, Pseq(measureSeq),
|
\measure, Pseq(measureSeq),
|
||||||
\beat, Pseq(beatSeq),
|
\beat, Pseq(beatSeq),
|
||||||
\dur, beatFrac * 8
|
\dur, beatFrac * 8
|
||||||
|
),
|
||||||
|
Pbind(
|
||||||
|
\instrument, \click ++ ~hash,
|
||||||
|
\beat, Pseq(beatSeq.drop(-1)),
|
||||||
|
\dur, beatFrac * 8
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
pattern
|
pattern
|
||||||
|
|
@ -257,34 +274,3 @@ SynthDef(\interludeTremelo ++ ~hash, {arg gate = 0, amp = 1, freq1, freq2, tremR
|
||||||
};
|
};
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
|
||||||
//machine options
|
|
||||||
(
|
|
||||||
var durUnit = 0.15;
|
|
||||||
|
|
||||||
SynthDef(\machine, {arg freq, gate = 1, sustain, amp;
|
|
||||||
var sound;
|
|
||||||
sound = TWChoose.ar(Impulse.kr(0), [
|
|
||||||
PinkNoise.ar(EnvGen.kr(Env.perc(0.01, sustain, amp * 10), gate, doneAction: 2)),
|
|
||||||
BrownNoise.ar(EnvGen.kr(Env.perc(0.01, sustain, amp * 2), gate, doneAction: 2))
|
|
||||||
], [0, 20], 1);
|
|
||||||
Out.ar([0, 1], sound)
|
|
||||||
}).add;
|
|
||||||
|
|
||||||
~machine1 = Pbind(
|
|
||||||
\instrument, \machine,
|
|
||||||
\amp, Pseq(3000.collect({arg i; (i / 2000).clip(0, 0.03)})),
|
|
||||||
\dur, Pseq(1000.collect({[durUnit, durUnit + (durUnit / 100).rand2].wchoose([10, 1].normalizeSum)}).flat),
|
|
||||||
\sustain, Pseq(1000.collect({durUnit * (1.75 + 0.5.rand)})),//2.25].wchoose([1, 20].normalizeSum)})),
|
|
||||||
\freq, Pseq(1000.collect({[[300, 250], [300, 250].choose].wchoose([10, 1].normalizeSum)}).flat / 2)
|
|
||||||
).play;
|
|
||||||
|
|
||||||
SynthDef(\machine, {arg freq, gate = 1, sustain, amp = 0.03;
|
|
||||||
var trig, sound;
|
|
||||||
trig = Impulse.kr(10);
|
|
||||||
sound = BrownNoise.ar(EnvGen.kr(Env.perc(0.01, 0.3 + TRand.kr(0, 0.1, trig), amp), TDelay.kr(trig, TRand.kr(0, 0.002, Dust.kr(0.75)))));
|
|
||||||
Out.ar([0, 1], sound)
|
|
||||||
}).play;
|
|
||||||
)
|
|
||||||
*/
|
|
||||||
Loading…
Reference in a new issue