Alexander Huber bio photo

Alexander Huber

Software guy, full-stack web developer, full-time computer geek. Blogs in English and German.

Twitter Github

Tags

Mein allererster Blogeintrag, und gleich ein Rundumschlag ;)

Fällt außer mir eigentlich keinem auf, daß sich die Riffs der angesagten Metalcorebands immer ähnlicher anhören? Als Beispiele seien mal “A bid farewell” (Killswitch) verglichen mit “My fiction beauty” (Caliban), “Fixation on the darkness” (auch Killswitch) im Vergleich mit “I refuse to keep on living” (auch Caliban) oder “Like a thousand suns” (Heaven Shall Burn) im Vergleich zu “This mortal coil” (Carcass, jetzt kein Beispiel für modernen Metal, sondern eher für Paten in einem dreisten Riffklau) genannt. Selbst bei Songs von ein- und derselben Band hören sich Songs auf verschiedenen Platten einer Band ziemlich ähnlich an (als Beispiel müssen leider wieder Caliban herhalten, da fällt es mir halt am meisten auf, z.B. bei “Stop running” und “I rape myself”). Hierbei fällt ins Auge bzw. Ohr, daß es sich dabei immer um die selben Töne auf der meist auf C gestimmten Gitarre handelt, und zwar um die der guten alten E-phrygischen Tonleiter, und zwar da: Für solche Riffs sind nur bpm-Zahlen in einer sehr geringen Bandbreite möglich (sonst wird es schnell unspielbar schnell oder abartig langweilig), und da es nur sechs Notenlängen gibt, die Sinn machen (Ganze bis 32tel), bleiben gar nicht mal so viele Möglichkeiten für mögliche Noten übrig. Diese werden noch durch das benutzen der E-Saite als Basseite wie in den Beispielen oben noch beschränkt. Bei so etwas läuten bei mir als Pseudo-Informatiker natürlich sofort alle Alarmglocken. Das muß sich doch irgendwie automatisieren lassen…?

Neu ist die Idee von Musik komplett aus der Dose nun wirklich nicht. Dank Auto-Tune ist das Musikaufnehmen zur plastischen Chirurgie geworden, und es wird nicht lange dauern, bis die restlichen Instrumente durch MIDI-gesteuerte Roboter ersetzt werden. Aber ich schweife ab…

Nehmen wir der Einfachheit halber an, daß so ein Riff 4 Takte dauern soll. Bei Notenwerten bis maximal 32tel passen also insgesamt 128 Noten, die unter 9 Tönen aufgeteilt werden. Lächerlich wenig Möglichkeiten also. Da heute jede moderne Programmiersprache vom Grabbeltisch irgendwas mit MIDI anfangen kann, beginnen wir doch einfach mal. Zum Beispiel mit Java: Wir erzeugen ein Sequencer-Objekt:

Sequencer player = MidiSystem.getSequencer();
player.open();
Sequence seq = new Sequence(Sequence.PPQ, 4);

Man fügt dem Sequencer einen neuen Track hinzu:

Track track = seq.createTrack();

Diesem lassen sich nun MIDI-Steuerbefehle in Form von Messages schicken, z.B:

ShortMessage wechsel = new ShortMessage();
wechsel.setMessage(192, 1, 31, 0);

So wird das Instrument auf Kanal 1 auf 31 “Distortion Guitar” gesetzt. Mit dieser Message erzeugen wir ein neues MidiEvent:

MidiEvent changeInstrument = new MidiEvent(wechsel, 1);

..und fügen es dem Track hinzu:

  track.add(ChangeInstrument);

Töne lassen sich genauso leicht erzeugen:

ShortMessage ton1 = new ShortMessage();
ton1.setMessage(144, 1, 40, 100);
MidiEvent ton1Anschlag = new MidiEvent(ton1, 1);
track.add(Ton1Anschlag);
ShortMessage ton1ende = new ShortMessage();
ton1ende.setMessage(128, 1, 40, 100);
MidiEvent ton1Ende= new MidiEvent(ton1ende, 3);
track.add(Ton1Ende);

Wir müssen noch dem Sequencer eine Sequenz zum abspielen geben:

player.setSequence(seq);
player.start();
Thread.sleep(5000);
player.close();

So lassen wir eine Distortion Guitar den MIDI-Ton 40 abspielen, mit der Länge von 3 MIDI-Ticks. Ergebnis: Mit einem Array aus zugelassenen Noten, die von einem Random-Objekt ausgewählt werden und natürlich auch Zufälliger Ticklänge kann man sich sehr leicht einen Riffgenerator schreiben. Stellt sich dann noch die Frage, wozu das Progrämmchen eigentlich gut ist. Immerhin erledigen tausende von schlechten Metalcorebands den Job mindestens genausogut…


Twitter

Blogroll