intro text and some fixes

main
Luka Prinčič 2022-01-30 23:48:14 +01:00
parent eb3aa5624f
commit dafbcc78ad
1 changed files with 40 additions and 11 deletions

View File

@ -1,22 +1,49 @@
/* /*
algoforte #3 (220105b)
code for first track of "algoforte01" - a two-tracker release on my
bandcamp: https://music.lukaprincic.si or https://bandcamp.com/lukaprincic
track 2 is a live performance of most the ideas in here with some changes
that seem to be necessary for live coding performance. :/
to use this code you need to be able to send midi out to either virtual
instrument that plays a grand piano (a sampler or similar). i personally
used Salamander Grand Piano SFZ loaded into Renoise.
you can also use disklavier if you have one handy nearby.
by starting MIDIClient.init (and waiting for a second or two)
and then m=MIDIOut(0) a midi output/input is created for SC.
the midi out from SC must go into midi input of the sampler/piano,
use test Pbindef to test. midichannel on sampler/piano: 1 (in SC: 0)
route audio output from piano back to SC and disconnect it from
main output (speakers). this is easily done using JACK.
requirement for this patch is also DEINDUGens which include JPverb
*/ */
// algoforte #3 /////////////////////////////////////////////////////////////////////// // helpers:
// s.boot
// s.meter
// s.plotTree
//
//
// init midi
MIDIClient.init(1,1);
// create output on channel 1
m = MIDIOut(0)
// connect.
m.connect
// test
Pbindef(\testmidi, \type, \midi, \midicmd, \noteOn, \midiout, m, \chan, 1, \amp, 0.5).play
Pbindef(\testmidi).stop
// processing input from piano // processing input from piano
( (
Ndef(\inDSPout, { Ndef(\inDSPout, {
@ -34,6 +61,7 @@ Ndef(\inDSPout, {
Ndef(\inDSPout).fadeTime = 4 Ndef(\inDSPout).fadeTime = 4
Ndef(\inDSPout).play(fadeTime:5) Ndef(\inDSPout).play(fadeTime:5)
// when needed:
Ndef(\inDSPout).end(30) Ndef(\inDSPout).end(30)
Ndef(\inDSPout).stop Ndef(\inDSPout).stop
@ -90,7 +118,7 @@ Pbindef(\p220105b, \type, \midi, \midicmd, \noteOn, \midiout, m, \chan, 1,
) )
// --> // allocate new buffer
b = Buffer.alloc(s, s.sampleRate*10, 1) b = Buffer.alloc(s, s.sampleRate*10, 1)
// start recording into buffer via 'in' // start recording into buffer via 'in'
@ -99,10 +127,10 @@ Ndef(\recbuf, {var sn=\in.ar(0!2); RecordBuf.ar(sn[0], b)})
// plug output from inDSPout to in of \recbuf // plug output from inDSPout to in of \recbuf
Ndef(\recbuf) <<>.in Ndef(\inDSPout) Ndef(\recbuf) <<>.in Ndef(\inDSPout)
// is there something in a buffer? // is there something being recorded in a buffer?
b.plot b.plot
// stop recording to a buffer // when needed - stop recording to a buffer
Ndef(\recbuf).clear Ndef(\recbuf).clear
@ -123,7 +151,8 @@ Ndef(\gran, {
}) })
) )
Ndef(\gran).fadeTime = 5 Ndef(\gran).fadeTime = 5
Ndef(\recbuf).play Ndef(\gran).play
Ndef(\gran).end(30) // fadeout Ndef(\gran).end(30) // fadeout
Ndef(\recbuf).stop // stop immediately (send note offs) Ndef(\gran).stop // stop immediately (send note offs)