Création de partition

Précédent Sommaire Suivant

La création de partitions sur SuperCollider n’est pas normalisée. Il existe différentes solutions pour exporter les résultats de vos algorithmes sous la forme de notation musicale.

Le premier projet présenté est Ctk (Composition Tool Kit – CtkScore), il se trouve dans Quarks. Il permet de créer des fichiers au format MusicXML. Toutefois, ce format n’est pas standardisé et les éditeurs de partition l’utilisent différemment. L’auteur de cette librairie, Joshua Parmenter, affirme que les fichiers produits sont compatibles avec Sibelius, Finale et NoteAbility Pro.

(
z = XMLScore.new;// add a voice to the XMLScore
z.add(y = XMLPart(meter: XMLMeter(4, 4), key: XMLKey.major(\Bf)));
// create a B-flat major scale in quarter notes

// uses XMLVoice’s internal ‘clock’ to keep track of beats
[58, 60, 62, 63, 65, 67, 69, 70].do({arg keynum;
y.add(XMLNote(keynum, y.now, \q))
});

// output the XMLScore
z.output(« ~/Desktop/test.xml ».standardizePath);
)

Une solution plus universelle, pour le moment, est d’utiliser le format Midi. La commande SimpleMIDIFile, élément de la bibliothèque wslib accessible dans Quarks, est capable de créer un tel fichier.

//a MIDI file implementation capable of reading and writing all types of MIDI data (except sysex messages).
(
m = SimpleMIDIFile( « ~/Desktop/midifiletest.mid » ); // create empty filem.

init1( 3, 120, « 4/4 » ); // init for type 1 (multitrack); 3 tracks, 120bpm, 4/4 measuresm.

timeMode = \seconds;  // change from default to something useful((0,(1/8)..5)).do({ |starttime| // add random notes

m.addNote( 36 + 50.rand, 32 + 96.rand, starttime, [0.1,0.05].choose, 127,
track: 1 )
});

((0,(1/4)..5)).do({ |starttime| // add random notes to next track
m.addNote( 36 + 50.rand, 64 + 64.rand, starttime, [0.1,0.025].choose, 127, 
channel: 1,  // note: = midi channel 2
track: 2 )
});
)
m.midiEvents.dopostln; // all midi events
m.metaEvents.dopostln; // notice the incorrect ‘endOfTrack’ events for track 1 & 2;

m.adjustEndOfTrack;
m.metaEvents.dopostln; // try again

m.tempoMap; // get the tempo map ( [[ startTime, bpm ], [ etc.. ]] )
m.timeSignatures; // get the time signatures ( ( [[ startTime, a/b ], [ etc.. ]] )

m.p.play; // convert to Pattern and play

m.write; // now play the file in Quicktime, or open with another app

m.plot;  // uses ScaledUserView

LilyCollider est une librairie d’aide à la génération de code LilyPond.

// A class library for SuperCollider, providing support for Lilypond score generation. Original code by Bernardo Barros. Modifications by Hanns Holger Rutz. Published under the GNU General Public License.

a = RhythmicCell([2, [1, 5, 1]]);
b = RhythmicCell([2/3, [1, -1, 1]]);

[a, b].asRhythmicSeq.plot;
// Cell a has length 2/8, while cell b has length 2/(3*8) = 1/12. In cell a, the element 5 is split into 4 + 1 which are tied. In cell b, the negative element -1 is interpreted as a pause lasting for 1 unit.

Le projet SCSore est prometteur et pour le moment il permet d’afficher une partition sur votre écran. On peut envisager une interaction dynamique avec un interprète sans l’intervention d’un logiciel tiers.

// Class in really begin stages of development designed to musical notation in SuperCollider.
(
a = [[ [« 2/4 »], [61,[64,67],66], [1.5,[0.5,0.5],2] ],
[ [« 3/4 »], [68,70,68,66,66], [0.5,0.5,0.5,0.5,1]],
[ [« 3/8 »], [64,[88, 89],0,65], [0.25,[0.25,0.25],0.5,0.5]]
];b = SCScore.new(a);
b.scScore
)

Différentes solutions de haut niveau sont accessibles sous SuperCollider pour produire des partitions. Ces projets sont en cours de développement et méritent notre attention. Néanmoins l’exportation d’un fichier Midi est entièrement fonctionnelle bien que ce protocole ne se destine pas à la création de partition.

Sébastien Clara – Avril 2013

Précédent Sommaire Suivant
Publicités