End of Semester 1 Already!

Well its the end already, that went rediculously quick. So we have learnt in the laptop musicianship module this semester? We learnt some fundamentals of music theory, which we incorporated with our Supercollider compositions. We have performed live laptop performances/improvisations with the use of IXI Quarks, and of course we have been keeping up this Blog, which I found to be quite a rewarding task. It can be used for something to build on. I know that this is something that I am going to be doing quite a lot in the future. All very helpful practise, thanks to Juliio for that.

Since I wrote my first Blog, I mentioned that I would like to take up piano lessons, which I have duly taken up with Emily Stevenson. I am very lucky because I live with her, she is a grade 8 pianist and has full size piano in her room! How good is that!? I am going to be undertaking grades over the next few years and she is going to be starting me in at grade 3. Great fun. I have put up a video of Debussy’s Claire de Lune, performed by Maria Kovalszki, which is a beautiful piece of music that I frequently dream of being able to play…   …one day…

I have also recently fallen madly in love with Tech and Progressive House, which are now my all time favourite genre. I have put up some of my favourite tracks at the moment. Oxia – Sunstep (Tech House) and Mike 303, Fisher and Fiebak – Chicago Disco (Tocadisco Remix) (Progressive House)

Advertisements

Supercollider to Logic Composition

//First thing we need to do is to activate the server and activate Supercollider’s MIDIOut function, which lets us link up with Logic Pro. To do this, just evaluate the next three lines of code by pressing Shift-Return (Enter).

s.boot

MIDIClient.init(0, 1);

m    = MIDIOut(0, MIDIClient.destinations[0].uid);

////////////////////////////////////////////////

//My first attempt at the piece turned out to be way too complicated and I ended up confusing my self a bit and basically making it too comlpicate for myself, so I decided to use lines of code that were simple, that performed exactly what was required to cover the criteria. The criteria required us to make a composition that changed scales, whether the scales be completely made up, or already existing was up to us.

//These are the scales that I used for my composition:

(

//the C major scale

(

Pdef(\c_maj,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,4,5,7,9,11,12],

\degree, Pseq([1,2,3,4,5,6,7,8]-1, inf),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//the C minor scale

(

Pdef(\c_min,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12],

\degree, Pseq([1,2,3,4,5,6,7,8]-1, inf),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//the B minor scale

(

Pdef(\b_min,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-1,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, inf),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//the C minor scale

(

Pdef(\c_min,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-0,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//the D minor scale

(

Pdef(\d_min,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]+1,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//the E minor scale

(

Pdef(\e_min,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]+2,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//the F minor scale

(

Pdef(\f_min,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]+3,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6

))

)

)

////////////////////////////////////////////////

//Start

////////////////////////////////////////////////

//This first line of code is set to channel 0 (1 in Logic), which is the piano. It is playing the degrees 1 and 3 together, then the degree 4, 6 and 8 together from the scale of C major; 0, 2, 4, 5 ,7 ,9, 11, 12), which corresponds to C,D,E,F,G,A,B,C on the keyboard. This sequence is being played 2 times at octaves 4 and 6 (also in sequence) at a rate of 2/1 (once every 2 counts of 4 beats)

(

(

Pdef(\c_majonea,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,4,5,7,9,11,12],

\degree, Pseq([[1,3],[4,6,8]]-1, 2),

\dur, 2/1,

//4 bars

\db, -6,

\octave, Pseq([4,6], inf)

))

);

////////////////////////////////////////////////

//delete this

//This is using the same channel and the same notes, but it is played at a faster rate (1/1). Because the rate that the sequence is being played, I had to increase the number of times it goes through the cycle to finish at the same point as the previous line of code.

(

Pdef(\c_majoneb,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,4,5,7,9,11,12],

\degree, Pseq([[1,3],[4,6,8]]-1, 4),

\dur, 1/1,

//4 bars

\db, -6,

\octave, Pseq([4,6], inf)

))

);

////////////////////////////////////////////////

//This is using the same channel and the same notes, but it is played at a faster rate 1/2 (two times each bar of 4 beats). Because the rate of this sequence is being played faster, I would have had to increase the number of times it goes through the cycle to finish at the same point as the previous line of code, but because there are more degrees in the sequence I didnt have  to. The degrees are being played in octave sequence 5, then 7 infinitely.

(

Pdef(\c_majtwo,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,4,5,7,9,11,12],

\degree, Pseq([[1,3], 2, 6, 4,

[6,8], [1,3,5], 2, 8]-1, 2),

\dur, 1/2,

\db, -6,

\octave, Pseq([5,7], inf)

))

);

////////////////////////////////////////////////

//This sequence is using the same C major scale, playing on channel 1 (2 in Logic), which is my Cello. It is a simple sequence of 4 notes per bar, played at octave sequence 4,4,5,4.

(

Pdef(\celloseq,

Pbind(\type, \midi, \chan, 1, \midiout, m,

\scale, [0,2,4,5,7,9,11,12],

\degree, Pseq([1, 5, 2, 7] -1, 2),

\dur, 1/1,

\db, -6,

\octave, Pseq([4,4,5,4], inf)

))

);

////////////////////////////////////////////////

//This is my first drum sequence, which plays through channel 2 (3 in Logic). Note the differnce from the previous lines of code; I used a \midinote key instead of the \scale and \degree keys. It still plays the sequence in order from left to right again, but instead I have input midinote values, which are as follows: 36, which is the kick, 40, which is the snare and 44, which is the hi-hat.

(

Pdef(\drums,

Pbind(\type, \midi, \chan, 2, \midiout, m,

\midinote, Pseq([36, 36, 40, 36, 36, 44, 40, 44], 2),

\dur, 1/2,

\db, -6

))

);

////////////////////////////////////////////////

//This is the same pattern sequence, but I have changed the duration(rate) to make it double the tempo of the previous one. Note: I increased the number of cycles to make it play the same amount of bars.

(

Pdef(\drumsquick,

Pbind(\type, \midi, \chan, 2, \midiout, m,

\midinote, Pseq([36, 36, 40, 36, 36, 44, 40, 44], 4),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//This drum sequence uses the same midinotes, but I rearranged them slightly to produce a slighty different result.

(

Pdef(\drumsquick2,

Pbind(\type, \midi, \chan, 2, \midiout, m,

\midinote, Pseq([36, 36, 40, 36, 44, 36, 40, 44], 4),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//This is just a simple few extra tamborine hits I added using the same technique I did to make the drum pattern. Note the use of the \rest key, which produces a rest instead of returning a given note/sound. This turned out to be very useful.

(

Pdef(\tamborine,

Pbind(\type, \midi, \chan, 2, \midiout, m,

\midinote, Pseq([\rest, 54, 54, 54], 8),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//This is my first harp that I use in my piece. It is playing through channel 4 (5 in Logic) I used the midinote key here to select the notes I desired by playing them on my MIDI keyboard and translating them to values in that fashion. I found this way a bit easier for composing more comlpicated note sequences. I found that when I wanted to produce chord progressions, it was (sometimes) eaisier selecting the degree numbers i.e. [1,3,5], (a simple triad) using the degree/scale sequence technique, but not this was not always the case.

(

Pdef(\harp,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\midinote, Pseq([72, 67, 69, 72, 64, 67, 72, 67], 4),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//Here I have added a couple more chords with the harp. All of this is still using the C major scale

(

Pdef(\harptwo,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\midinote, Pseq([[52,55], [48, 52]], 4),

\dur, 1/1,

\db, -6

))

);

////////////////////////////////////////////////

//This is my Clarinet playing through channel 5 (6 in Logic). I am still using the same pattern sequence technique as previously with the harp. I added this simply for more texture. Again this is still using the C major scale.

(

Pdef(\clarinet,

Pbind(\type, \midi, \chan, 5, \midiout, m,

\midinote, Pseq([[48 ,52], [64,72]], 2),

\dur, 2/1,

\db, -6

))

);

////////////////////////////////////////////////

//This is my first key change, which is to B minor. It is very easy to change the keys from C min, to B min, A min and so on. All you need to do is add a value (here it is -1) after the list of notes in the \scale key. In this certain example, if i was to remove the -1 completely and have nothing, the key would be in C minor, so by putting the -1 there transposes the whole lot down by a tone, making it B minor. Very useful.

(

Pdef(\b_minone,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-1,

\degree, Pseq([[1,3], 2, [6,8], [1,3,5] ]-1, 4),

\dur, 1/2,

\db, -6

))

);

////////////////////////////////////////////////

//This is exactly the same piece of code as before except that I have changed the duration (tempo) to make it play faster, put a Pxrand on the degree instead of a Pseq and increased the number of repeats accordingly to match my 4 bar patterns. Note: see next comment for explanation on Pxrands.

(

Pdef(\b_mintwo,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-1,

\degree, Pxrand([[1,3], 2, [6,8], [1,3,5] ]-1, 32),

\dur, 1/4,

\db, -6

))

);

////////////////////////////////////////////////

//This is another Cello, but it has a Pxrand on the degree, so instead of playing the notes in sequence with a Pseq, the Pxrand   chooses which degrees to play at random (funnily enough). The Pxrand differs to the Prand in that it never plays the same note twice in sequence, so basically always producing different notes each time it goes through the cycle. I have come across some really good results using the Pattern randomisers. This is using the B minor scale.

(

Pdef(\b_mincellorand,

Pbind(\type, \midi, \chan, 1, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-1,

\degree, Pxrand([5, 8, 7, 2] -1, 16),

\dur, 1/2,

\db, -6,

\octave, Pxrand([5,6,5,5], inf)

))

);

////////////////////////////////////////////////

//This my first randomised harp. This particular one is in B minor. I got a really good result by randomising the octave sequence on this.

(

Pdef(\b_minrandharp,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-1,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 4),

\dur, 1/4,

\db, -6,

\octave, Prand([5, 6, 4], inf)

))

);

////////////////////////////////////////////////

//This is the same code as before, but in C minor.

(

Pdef(\c_minrandharp,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12],

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 4),

\dur, 1/4,

\db, -6,

\octave, Prand([5, 6, 4], inf)

))

);

////////////////////////////////////////////////

//This is the same as the previous C minor random harp but it is randomising from higher octaves. By putting these together came up with good results too.

(

Pdef(\c_minrandharp2,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12],

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 4),

\dur, 1/4,

\db, -6,

\octave, Prand([6, 7, 5], inf)

))

);

////////////////////////////////////////////////

//This is exactly the same as \c_minrandharp except it only plays one bar instead of 4.

(

Pdef(\c_minrandharponebar,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]-0,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6,

\octave, Pseq([5, 6, 4], inf)

))

);

////////////////////////////////////////////////

//Again, using same code as previous line, but transposing up to D minor.

(

Pdef(\d_minrandharp,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]+1,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6,

\octave, Pseq([5, 6, 4], inf)

))

);

////////////////////////////////////////////////

//Same again, but transpose to E minor

(

Pdef(\e_minrandharp,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]+2,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6,

\octave, Pseq([5, 6, 4], inf)

))

);

////////////////////////////////////////////////

//And to F minor

(

Pdef(\f_minrandharp,

Pbind(\type, \midi, \chan, 4, \midiout, m,

\scale, [0,2,3,5,7,8,11,12]+3,

\degree, Pseq([1,2,3,4,5,6,7,8]-1, 1),

\dur, 1/4,

\db, -6,

\octave, Pseq([5, 6, 4], inf)

))

);

////////////////////////////////////////////////

//This is my first octave randomised piano. I have altered the \scale input a little here so there are less values, but they still correspond to C minor.

(

Pdef(\c_minpiano,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,3,5,7,8,12],

\degree, Pseq([[1,2,4],[3,5,6],[1,2,4],[1,2,4]], 8),

\dur, 1/4,

\octave, Prand([6, 7, 5], inf),

\db, -8

))

);

////////////////////////////////////////////////

//This is my C major octave randomised piano.

(

Pdef(\c_majpiano,

Pbind(\type, \midi, \chan, 0, \midiout, m,

\scale, [0,2,5,7,9,12],

\degree, Pseq([[1,2,4],[3,5,6],[1,2,4],[1,2,4]], 8),

\dur, 1/4,

\octave, Prand([7, 8, 6], inf),

\db, -8

))

)

)

////////////////////////////////////////////////

(

(

//C major

Ppar( [ Pdef(\c_majonea), Pdef(\c_majonea)], 1 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo) ], 1 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo), Pdef(\harp)], 1 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo),  Pdef(\harp), Pdef(\harptwo), Pdef(\drums), Pdef(\tamborine) ], 1 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo) ], 1 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo), Pdef(\celloseq), Pdef(\drums), Pdef(\tamborine), Pdef(\harp), Pdef(\harptwo), Pdef(\clarinet)  ], 2 )

++

//Change to B minor

Ppar( [Pdef(\b_minone) ], 1)

++

Ppar( [Pdef(\tamborine), Pdef(\b_mintwo) ], 1)

++

Ppar( [Pdef(\tamborine), Pdef(\b_mintwo), Pdef(\b_minrandharp) ], 1)

++

Ppar( [Pdef(\tamborine), Pdef(\b_mintwo), Pdef(\b_minrandharp), Pdef(\cellorand), Pdef(\drumsquick2) ], 1)

++

//Back to C major

Ppar( [ Pdef(\c_majonea), Pdef(\c_majonea)], 1 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo), Pdef(\celloseq), Pdef(\drumsquick2), Pdef(\tamborine), Pdef(\harp), Pdef(\harptwo)  ], 2 )

++

//Change to C minor

Ppar( [ Pdef(\c_minrandharp)], 1 )

++

Ppar( [ Pdef(\c_minrandharp), Pdef(\c_minrandharp2) ], 1 )

++

Ppar( [ Pdef(\c_minrandharp), Pdef(\c_minrandharp2), Pdef(\c_minpiano) ], 1 )

++

Ppar( [ Pdef(\c_minrandharponebar) ], 1 )

++

//Change to D minor

Ppar( [ Pdef(\d_minrandharp) ], 1 )

++

//Change to E minor

Ppar( [ Pdef(\e_minrandharp) ], 1 )

++

//Change to F minor

Ppar( [ Pdef(\f_minrandharp) ], 1 )

++

//Change back to C major

Ppar( [ Pdef(\c_majonea), Pdef(\c_majtwo), Pdef(\celloseq), Pdef(\drumsquick2), Pdef(\tamborine), Pdef(\harp), Pdef(\harptwo), Pdef(\c_majpiano)  ], 2 )

++

Ppar( [ Pdef(\c_majonea), Pdef(\c_majonea)], 1 )

).play

)