Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS

Audio mit Max/MSP

Stand: 2012-01-01

Max/MSP ist ebenso in der experimentellen Musik beliebt wie als Werkzeug für Signalverarbeitung.

Geschichte und Umfang

Grundprinzip

Fehlersuche

Parametrischer Equalizer

Meine Demodatei (siehe Zip): eq.maxpat

sfplay~ spielt Audiodateien ab. Die Message 1 startet, die Message 0 stoppt und spult zurück.

filtergraph~ berechnet second-order sections gemäß der Kennlinien, die man mit der Maus in seiner grafischen Oberfläche zurechtklickt. Die nfilters-Message gibt dabei an, wie viele Sektionen es werden sollen. cascade~ ist das eigentliche Filter.

Monophoner Synthesizer

Meine Demodatei: synth.maxpat

mtof wandelt MIDI-Notennummern in Hertz.

gain~ ist ein logarithmischer Pegelsteller; es unterdrückt Zipper-Noise.

rect~ erzeugt eine Rechteck-Welle ohne Aliasing. Der zweite Eingang von rect~ kann benutzt werden, um die Pulsweite zu verstellen. Im Beispiel hängt hier ein 0,7-Hz-Sinus dran.

Der Hüllkurvengenerator adsr~ nimmt nicht nur ein Triggersignal an, sondern verwendet den dort ankommenden Zahlenwert als Maximalamplitude.

Monophoner Sampleplayer

Meine Demodatei: sampleplayer.maxpat

Die Audiodaten landen in einem buffer~. Der wird nicht eigens verdrahtet. Zum Laden schickt man ihm die Message read. Anzeigen lässt sich der Inhalt mit waveform~.

Zum Abspielen dient groove~. Dieses Objekt will die Abspielgeschwindigkeit im Verhältnis zum Original haben. Um die zu bestimmen, wird das Verhältnis des Frequenz des Originals (mit Zahlenfeld einstellen) und der per MIDI angefordeten Frequenz gebildet. Damit das Sample immer wieder von vorne spielt, wird bei Note On die Message 0 generiert und an groove~ gesendet.

Polyphoner Synthesizer

Meine Demodateien: polysynth.maxpat und mySynth~.maxpat

Das Objekt poly~ kann ein weiteres Patch (hier mySynth~) mehrfach intern ausführen und Notenbefehle auf diese Stimmen verteilen. Dazu versteht es zum Beispiel MIDI-Tonhöhe und MIDI-Velocity mit einem davorgehängten „midinote“ als Message. Das Patch, das von poly~ vervielfältigt wird, muss mit dem Objekt thispoly~ angeben, ob es gerade spielt oder nicht. Solange es spielt, wird ihm von poly~ keine neue Note zugewiesen (Ausnahme: steal ist an und es sind nicht genügend Stimmen frei). Die einfachste Art, thispoly~ mit dieser Information zu füttern, ist, ein Signal an seinen Eingang anzulegen, das null wird, wenn die Note beendet ist. Am einfachsten nimmt man dazu den Ausgang des Hüllkurvengenerators adsr~. Obendrein hat adsr~ noch einen speziellen Ausgang, an dem er eine mute-Message für thispoly~ generiert. Wenn man auch die noch mit thispoly~, wird die jeweilige Stimme in Notenpausen zur Senkung der Rechenlast schlafen gelegt.