// a macro class. creates a texture out of
a function that returns a continuous sound.
XFadeTexture {
*ar { arg inputPatchFunc, sustainTime
= 4.0, transitionTime = 4.0, numChannels = 1,
maxRepeats, mul = 1.0, add = 0.0;
var env, period;
period = transitionTime + sustainTime;
env = Env.new(
#[ 0.0,
1.0, 1.0,
0.0],
[ transitionTime, sustainTime, transitionTime ],
'welch'
);
^Spawn.ar({ arg spawn, i, synth;
EnvGen.kr(env, timeScale:
synth.tempo.reciprocal) * inputPatchFunc.value(spawn, i, synth);
},
numChannels, period, maxRepeats, mul, add
)
}
}
OverlapTexture {
*ar { arg inputPatchFunc, sustainTime
= 4.0, transitionTime = 4.0, density = 2,
numChannels = 1, maxRepeats, mul = 1.0, add = 0.0;
var env, period;
period = (2 * transitionTime + sustainTime) / density;
env = Env.new(
#[ 0.0,
1.0, 1.0,
0.0],
[ transitionTime, sustainTime, transitionTime ],
'welch'
);
^Spawn.ar({ arg spawn, i, synth;
EnvGen.kr(env, timeScale:
synth.tempo.reciprocal) * inputPatchFunc.value(spawn, i, synth);
},
numChannels, period, maxRepeats, mul, add
)
}
}
TrigXFade {
*ar { arg inputPatchFunc, trig,
transitionTime = 0.01, numChannels = 1,
maxRepeats, mul = 1.0, add = 0.0;
var envgen, env, tspawn,
prevSynth;
env = Env.new(
[ 1.0,
1.0,
0.0],
[ transitionTime, transitionTime ],
'linear', 1
);
thisSynth.sched(0, { tspawn.source.trigger }); // start first
event..
^tspawn = TSpawn.ar({ arg spawn, i, synth;
if (prevSynth.notNil, { // second and subsequent
events
env.levels.put(0, 0.0); // begin at
zero amp.
prevSynth.release;
});
prevSynth = synth;
envgen = EnvGen.kr(env);
envgen * inputPatchFunc.value(spawn, i, synth);
},
numChannels, maxRepeats, trig, mul, add
)
}
}
This page was created by SimpleText2Html 1.0.3 on 22-Feb-100.