Computermusik (richtig: Musikinformatik) soll bedeuten:
Analyse und Synthese von Musik
mithilfe der Informatik (Algorithmen, Software)
(An.: hören, verstehen; Syn.: komponieren, aufführen)
beruht auf Modellen aus der Musiktheorie, z.B. für
Erzeugung von Klängen in physikalischen Systemen,
das Tonmaterial:
Tonhöhe, Konsonanz und Dissonanz, Akkorde, Skalen
die zeitliche Anordnung des Materials:
Rhythmen, Melodien, Kadenzen, Kontrapunkt
die Kunst der zeitlichen Anordnung von Klängen.
(Edgar Varese 1883–1965: I call it organised sound)
Kunst bedeutet: der Autor (Komponist, Interpret) will im Hörer Empfindungen hervorrufen
das geht sowohl sehr direkt, Beispiele:
Tonreihe aufsteigend: Frohsinn, absteigend: Trübsal
Dissonanz \(\Rightarrow\)
Spannung, Unruhe;
Konsonanz \(\Rightarrow\) Auflösung,
Ruhe
als auch indirekt, Beispiele:
Zitat (Parodie) von Elementen andere Musikwerke:
Anerkennung (Daft Punk \(\Rightarrow\) Giorgio Moroder), Aneignung (F.S.K.), Ablehnung (Punk \(\Rightarrow\) Prog Rock).
die mechanische (Aufnahme und) Vervielfältigung von Audiosignalen
(seit ca. 1920, Grammophon)
trennt die Aufführung vom ihrem Resultat (dem
Klang)
(Elijah Wald, An Alternative History of American Popular Music, Oxford Univ. Press, 2009)
dadurch entsteht Popmusik, das ist etwas Neuartiges
statt Komposition (Klassik) oder Improvisation (Jazz): Produktion des Klangs in einem Studio
rezipiert wird nicht nur der Klang, sondern unzählige Nebenprodukte, insb. Bilder (z.B. Schallplattenhüllen)
die Bedeutung wird daraus vom Fan konstruiert
(Diederich Diederichsen, Über Popmusik, Kiepenheuer, 2014)
Daft Punk (Guy-Manuel de Homem-Christo und Thomas Bangalter): Giorgio by Moroder (LP Random Access Memories, 2013)
Donna Summer: I Feel Love (Single, 1977) Produzent: G. Moroder
Kraftwerk (Ralf Hütter und Florian Schneider): Autobahn (LP 1974), aufgenommen im Studio Conny Plank
Neu! (Michael Rother und Klaus Dinger): Hallogallo (1972), Produzent: Conny Plank
Stereolab (Tim Gaine, Laetitia Sadier u.a.): Jenny Ondioline (1993)
Grandmaster Flash (Joseph Sadler) The Message(1982)
Big Black (Steve Albini u.a.): Kerosene (1986)
KW 43: Klang-Erzeugung (Physik der Musikinstrumente)
KW 44: Klang-Analyse (Spektren) und Klangveränderung
KW 45: Analog-Synthesizer (und ihre Simulation)
KW 46: Algebraische Beschreibung von Klängen (csound-expression)
KW 47: Töne, Skalen, Konsonanzen, Akkorde, Kadenzen
KW 48: Algebra Of Music (haskore), Notensatz (lilypond)
KW 49: A Pattern Language (tidal-cycles, supercollider)
ab hier Themen und Reihenfolge noch offen
Rhythmus (breakbeat science)
Mathematische Musiktheorie
Musikgeschichte
Zwischenstand Projekte
Digital Audio Workstations (ardour, sooperlooper)
algorithmische Mechanik
Zusammenfassung, Abschluß Projekte
jede Woche eine Vorlesung, eine Übung
Prüfungszulassung: regelmäßiges und erfolgreiches Bearbeiten von Übungsaufgaben (teilw. autotool)
Prüfung:
(gemeinsames) Abschluß-Konzert
(individuelle) Dokumentation (welche kreative Idee wurde wie realisiert)
Sie benutzen die Rechner im Pool (Z423/430) mit dort installierter Software. — Kopfhörer mitbringen!
Es ist zu empfehlen, die gleiche Software auch auf Ihren privaten Rechnern zu installieren, damit Sie selbst experimentieren und Hausaufgaben erledigen können.
wir verwenden ausschließlich freie Software (Definition: siehe https://www.gnu.org/philosophy/free-software-intro.html) (Debian-Pakete oder selbst kompiliert). Alles andere wäre unwissenschaftlich — weil man es eben nicht analysieren und ändern kann.
…kompliziert, weil
alles sehr modular funktionieren soll,
korrekt (bei Musik: mit geringer Latenz)
für einen großen Bereich von Hardware (neu bis alt, teuer bis billig)
Hardware (Soundkarte, intern/extern), Treiber
ALSA https://alsa-project.org/ Advanced Linux Sound Architecture
Jack https://wiki.archlinux.org/title/JACK_Audio_Connection_Kit
Pipewire, Pulseaudio (kämpfen mit Jack um Zugriff auf Hardware bzw. Alsa-Treiber)
Das sind Beispiele für Tätigkeiten, die in dieser LV (und in allen anderen) immer wieder vorkommen: nicht nur Software bedienen und Knöpfchen drehen, sondern auch:
Analysieren, Rechnen, Recherchieren, historisch einordnen, Programmieren (Synthetisieren).
(bereits in Ü) ausprobieren: Hydrogen (Drum-Sequencer) \(\to\) Rakarrack (Effekt-Prozessor)
Audio-Routing mit qjackctl
Finden Sie die von Hydrogen benutzte Audio-Datei für TR808 Emulation Kit, Kick Long
anhören mit vlc
,
konvertieren Sie mit sox
in wav
-Format,
(Hinweis: man sox
),
betrachten Sie Dateiinhalt (Amplituden-Verlauf) mit
gnuplot -persist -e "plot 'kick.wav' binary format='%int16' using 0:1 with lines"
Bestimmen Sie mittels dieses Bildes die Grundfrequenz der Schwingung. Welche weitere Information ist dazu nötig, woher bekommen Sie diese?
betrachten Sie Dateiinhalt mit
od -cx kick.wav | less
Wo endet der Header (wo steht das erste Datenbyte)?
Suchen Sie die offizielle WAV-Spezifikation, bestimmen Sie deren bibliografische Daten (Autor/Gremium, Ort, Jahr)
Erzeugen Sie durch ein selbstgeschriebenes Programm (Sprache beliebig) eine wav-Datei, die einen (kurzen) Sinus-, Dreieck-, oder Rechteckton enthält,
ansehen mit gnuplot
, abspielen mit vlc
,
verwenden Sie das als Sample in Hydrogen.
Wie sah diese Maschine (TR808) aus?
Welche Band führt diese Maschine im Namen?
(Hinweis: http://www.vintagesynth.com/)
Kann Hydrogen alle dort angegebenen Eigenschaften des Originals simulieren?
beschreiben Sie Struktur und (einige) Elemente von Ritchie Hawtin: Minus Orange 1, Aphex Twin: Flaphead o.ä., simulieren Sie mit Hydrogen und Rakarrack.
Geräusch:
erzeugt durch Schwingungen eines physikalischen Systems (z.B. Musikinstrument)
übertragen durch Druckschwankungen in einem Medium (z.B. Luft), durch Ohr wahrnehmbar
Klang: …durch periodische Schwingungen …
virtuelle (elektronische) Instrumente
simulieren den physikalischen Vorgang
oder speichern nur dessen Verlauf
Unterschied zu automatischem Spiel reeller Instrumente
Modell:
ein Körper mit Masse \(m\) und Ruhelage \(0\)
bewegt sich auf einer Geraden \(g\),
d.h., hat zum Zeitpunkt \(t\) die Koordinate \(y(t)\)
die Rückstellkraft (bei Pendel: durch Schwerkraft, bei schwingender Saite: durch Elastizität) ist \(F= -k\cdot y\).
Notation: das ist eine Gl. zw. Funktionen (der Zeit)!
mathematische Beschreibung
Geschwindigkeit \(v = y'\), Beschleunigung \(a = v' = y''\)
nach Ansatz ist \(a= F/m = - (k/m) \cdot y\)
\(y\) ist Lsg. der Differentialgleichung \(-(k/m) y = y''\)
gegeben \(k, m\), bestimme Funktion \(y\) mit \(-(k/m) y = y''\)
numerische Näherungslösung durch Simulation:
ersetze Differentialgleichung durch Differenzengleichung
wähle \(y_0\) (initiale Auslenkung), \(\Delta>0\) (Zeitschritt),
bestimme Folgen \(y_0, y_1,\dots,v_0=0,v_1,\dots,a_0,a_1,\dots\)
mit \(a_i=-(k/m) y_i\), \(v_{i+1}=v_i+\Delta a_i\), \(y_{i+1}=y_i+\Delta v_i\)
genaueres in VL Numerik,
z.B.: Stabilität besser, wenn \(y_{i+1}=y_i+\Delta v_{i+1}\)
Zustandstyp: \(\mathbb{R}\times\mathbb{R}\) (Ort \(\times\) Geschwindigkeit),
Zustandsfolge mit
iterate :: (a -> a) -> a -> [a]
let { d = 0.1 } in iterate
(\ (y,v) ->
let { a = negate y
; vn = v + d * a ; yn = y + d * vn
} in (yn,vn))
(1,0)
anzeigen:
(Henning Thielemann), WAV ausgeben:
(Bart Massey)
gegeben \(k, m\), bestimme Funktion \(y\) mit \(-(k/m) y = y''\)
genaueres siehe VL Analysis, z.B. Ansatz von \(y\) als
Potenzreihe \(y=\sum_{k\in\mathbb{N}} c_k x^k\), Koeffizientenvergleich von linker und rechter Seite der Dgl.
Linearkombination von anderen Basisfunktionen (anstatt Potenzen)
wenn man Glück hat, oder die numerische Lösung gesehen hat:
Ansatz \(y(t) = \cos (f \cdot t)\)
wir erhalten die reine harmonische Schwingung
…aus vielen Massepunkten, \(u:\text{Ort}\times\text{Zeit}\to\text{Auslenkung}\)
Elastizität des Materials wirkt in jedem Punkt
als Kraft in Richtung beider Nachbarn
Differenzengl., diskret: \(y_k''=(y_{k-1}-y_k)+(y_{k+1}-y_k)\)
math. Modell, kontinuierlich: \(d^2 u/(d t)^2 = c\cdot d^2 u/(d x)^2\),
Randbedingungen \(u(0,t)=u(1,t)=0\), \(u(x,0)=0\)
Ansatz \(u(x,t)=f(x)\cdot g(t)\), es gibt mehrere Lösungen
Dgl. ist linear: jede Summe von Lösungen ist Lösung
Hermann Helmholtz: Vorl. über die mathematischen Prinzpien der Akustik, Leipzig 1898 https://archive.org/details/vorlesungenber03helmuoft
diese Modell ist Energie-erhaltend
tatsächlich wird aber Energie abgegeben (1.über das Medium an den Sensor, 2. durch Reibung im schwingenden Körper als Wärme an die Umgebung)
Modellierung der Dämpfung z.B. durch Reibungskraft proportional zu Geschwindigkeit \(F_R = r\cdot v = r\cdot y'\)
Aufstellen und Simulation der Dgl. in Übung.
mit diesem Modell können wir beschreiben:
Klang einer Saite (Gitarre, Klavier, Cembalo)
(nicht Geige)
Klang eines Trommelfells (Fußtrommel, nicht Snare)
Zungen aus Holz oder Metall auf Resonanzkörper
Hörbeispiele: Stella Chiweshi: Chigamba,
Konono No. 1: Konono Wa Wa
Spielzeug-klavier
Fender-Rhodes-Piano (1965–1984) https://www.fenderrhodes.com/org/manual/toc.html
Hörbeispiele: Miles Davis: Spanish Key 1969,
Steely Dan: Babylon Sisters 1980
Vibraphon (Metallstäbe, Resonanzröhren mit beweglicher Abdeckung)
Hörbeispiele: Tortoise: Ry Cooder 1994,
Claudia Quintet: September 20 Soterious Lakshmi 2013
Wirkung der Dämpfung kann durch regelmäßige Energiezufuhr ausgeschaltet werden (\(\Rightarrow\) angeregte Schwingung) z.B. das Anstoßen einer Schaukel
Geige:
Bewegung des Bogens führt der Saite Energie zu
regelmäßige Unterbrechung durch Kontaktverlust Bogen–Saite bei zu starker Auslenkung
Blasinstrumente:
Anblasen führt der schwingenden Luftmenge Energie zu
regelmäßige Unterbrechung durch Blatt (Oboe, Saxofon), Lippen (Trompete) oder Luftsäule selbst (Orgel, Flöte)
Querflöte
Bobbi Humphrey Harlem River Drive 1973
Saxophon
John Coltrane, A Love Supreme, 1965
Posaune, Mundharmonika (?)
Lee Perry Heavy Rainford 2019 (Prod. Adrian Sherwood)
Melodica (angeblasene Metallzungen, vgl. Triola)
Augustus Pablo King Tubbys Meets The Rockers Uptown 1974,
vgl. David Katz: A beginner’s guide to Augustus Pablo Fact Magazine, 2015 https://www.rockersinternational.com/
nichtperiodisches Verhalten kann erzeugt werden durch
Überlagerung (fast gleichzeitiger Ablauf) sehr vieler unterschiedlicher periodischer Schwingungen
für zahlreiche (Rhythmus)-Instrumente benutzt, z.B.
Maracas (Rumba-Kugel): enthalten viele kleine harte Klangkörper, die aneinanderstoßen
Snare (kleine Trommel): mehrere Federn, die gegen Fell der Unterseite schlagen (schnarren)
nichtperiodische Schwingung eines phys. Systems
z.B. Doppel-Pendel, Mehr-Körper-System
keine direkte Anwendung als Instrument bekannt,
Simulation evtl. für virtuelle Instrumente nützlich
wenn man das wirklich nur simulieren möchte (nicht physikalisch realisieren)
dann kann man auch mathematische Modelle ohne physikalisches Äquivalent betrachten
Bsp: Iteration von \(f: [0,1]\to[0,1]: x\mapsto 4\cdot (x - 1/2)^2\)
zeigt aperiodisches (chaotisches) Verhalten
Bsp: bitweise Manipulation (der Zeit)
t * ((t>>12|t>>8)&63&t>>4)
ergibt (im Allgemeinen) nur ein Rauschen,
Grundlage für Simulation andere Klänge (mit Filtern)
aber im Speziellen: interessante Klänge möglich
Wie wird Musikgeschichte zitiert (im Klang und) im Text von: DJ Hell: Electronic Germany (2009)
Wer singt auf U Can Dance des gleichen Albums? War früher (viel früher) in welcher Band? Wer hat dort anfangs elektronische Instrumente gespielt? Danach welchen Musikstil erfunden?
weitere Beispiele für Musikzitate suchen, genau beschreiben, was zitiert wird, wie groß der Abstand ist (zeitlich, inhaltlich) und diskutieren, warum.
harmonischen bzw. gekoppelten Oszillator modifizieren: Schwingungen simulieren, Resultate ansehen,
periodische
gedämpfte (durch Zusatz-Term in harmonischem)
chaotische (durch Nichtlinearität in der Kopplung)
anhören
einzeln
als Drumkit in Hydrogen
die Simulation der Saite verändern:
das Beispiel aus Helmholtz § 39 Fig. 7 realisieren (Zupfen der Saite nicht in der Mitte), Resultat mit Fig. 11 vergleichen
§ 42 realisieren (belastete Saite: ein Punkt hat andere Masse)
kleine Bit-Musikstücke (Beispiel:
t << (t>>10)
) vollständig analysieren, dann
modifizieren.
jede periodische Schwingung kann als gewichtete Summe harmonischer Schwingungen dargestellt werden
(Jean Fourier, 180?, http://www-history.mcs.st-and.ac.uk/Biographies/Fourier.html)
die Folge dieser Gewichte der Obertöne ist das Spektrum, das charaktetisiert die Klangfarbe
Änderung des Wellenform
linear (z.B. Filter), nichtlinear (z.B. Verzerrer)
kann beschrieben werden als Änderung des Spektrums,
diese ist ggf. leichter zu berechnen
für \(\Omega=[-\pi,\pi]\) betrachte \(\textsf{P}=\{f\mid f:\Omega\to\mathbb{R}\}\).
\(\textsf{P}\) ist Vektorraum (Addition, Skalierung) und Hilbert-Raum
Skalarprodukt \(\displaystyle \langle f,g\rangle := \int_\Omega f(x)\cdot g(x) ~ dx\), Norm \(|f|=\sqrt{\langle f,f\rangle}\)
\(b_1=1, b_2=\sin(x),b_3=\cos(x),b_4=\sin(2x),b_5=\cos(2x),\dots\)
bilden eine orthogonale Basis für \(\textsf{P}\)
nach geeigneter Skalierung sogar orthonormal
jedes \(f\in \textsf{P}\) eindeutig darstellbar als Linearkombination von Basisvektoren \(\displaystyle f = \sum_i~ \langle f,b_i\rangle / |b_i|^2 \cdot b_i\)
weitere Voraussetzungen sind nötig (damit Integrale und Summen existieren), siehe VL Analysis
numerisch: approximiere Integral durch Summe
\(\Omega\to\mathbb{R}: t\mapsto \textsf{if~}t<0 \textsf{~then~}-1 \textsf{~else~}\textsf{if~}t = 0 \textsf{~then~}0 \textsf{~else~}1\)
das ist die Signum- (Vorzeichen)-Funktion \(\operatorname{sign}\)
\(\displaystyle \operatorname{sign}(x) = (4/\pi) \sum_{k~\text{ungerade}} \frac{\sin(kx)}{k}\)
(nur ungerade Oberwellen)
Nebenrechnungen:
\(\cos(kx)\) ist gerade Funktion, \(\operatorname{sign}(x)\) ungerade,
deswegen \(\langle \operatorname{sign}(x),\cos(kx)\rangle=0\)
\(\langle\operatorname{sign}(x),\sin(kx)\rangle = 2\cdot \int_{[0,\pi]} \sin(kx)dx=[-1/k\cdot \cos(kx)]_0^\pi=\)
\(\textsf{if~}2|k \textsf{~then~}0 \textsf{~else~}4/k\)
\(f: \Omega\to\mathbb{R}: x\mapsto x\)
numerische Bestimmung der Fourier-Koeffizienten
let k = 4 ; d = 0.01
in sum $ map (\x -> d * x * sin (k*x))
[ negate pi, negate pi + d .. pi ]
==> -1.570723326585521
Vermutung \(\displaystyle f = -\frac{2}{\pi} \sum_{k\ge 1} \frac{(-1)^k}{k}\sin(kx)\) ( alle Oberwellen )
Spektrum eines Signals \(f\) kann so bestimmt werden:
teile Signal in Zeit-Intervalle (z.B. \(\Delta=1/10\) s),
\(f_i : [-\Delta, \Delta] \to \mathbb{R}: t \mapsto f(i\Delta + t)\)
wähle Frequenz-Werte \(k_1, k_2, \dots\)
bestimme Koeffizienten der Freq \(k_j\) zur Zeit \(i\Delta\) als \(\langle f_i,k_j\rangle\)
Anzeige z.B. in vlc
: Audio \(\to\) Visualisations \(\to\) Spectrum
es gibt schnellere Algorithmen
(diskrete Fourier-Transformation)
das Ohr bestimmt die Fourier-Koeffizienten durch Resonanz in der Schnecke (Cochlea), Frequenz-Auflösung ist ca. 3 Hz bei 1 kHz
Chris Cannam, Christian Landone, and Mark Sandler: Sonic Visualiser: An Open Source Application for Viewing, Analysing, and Annotating Music Audio Files, in Proceedings of the ACM Multimedia 2010 International Conference.
Anwendungsbeispiel:
Aphex Twin, \(\Delta M_i^{-1}=-\alpha \Sigma D_i[\eta] Fj_i[\eta-1]+F\text{ext}_i[\eta^-1]\),
Album: Windowlicker, 1999.
hergestellt mit Metasynth (Eric Wenger, Edward Spiegel, 1999) http://www.uisoftware.com/MetaSynth/,
wenn man ein Audio-Signal \(f:\TT\to\mathbb{R}\) zeitlich dehnt
(Bsp: \(g(x)= f(s\cdot x)\) mit \(s=1/2\)),
dann ändert man damit die Frequenzen.
Zeit-Dehnung ohne Frequenz-Änderung:
\(\text{Signal}_1 \stackrel{\text{Spektral-Analyse}}{\longrightarrow} \text{Spektrogramm}_1 \stackrel{\text{Zeit-Dehnung}}{\longrightarrow} \text{Spektrogramm}_2 \stackrel{\text{Spektral-Synthese}}{\longrightarrow} \text{Signal}_2\)
Audio-Kompressoren MP3, AAC haben bereits solche Signalkette, mit Kompression (Bitbreiten-Reduktion) statt Zeit-Dehnung, diese kann leicht hinzugefügt werden
Bsp: 7038634357 (Neo Gibson): Barry White Stretched Out And Reworked 2022
harmonische Schwingung: keine Oberwellen,
kommt in der Natur selten vor und ist für Musikinstrumente auch gar nicht erwünscht:
Oberwellen ergeben interessantere Klänge,
die auch variiert werden können
Bsp: Gitarre: Anschlagen nahe dem Steg: viele Oberwellen, zur Saitenmitte: weniger.
Bsp. Schlagzeug (Trommel, Tom): Anschlag Mitte/Rand
Bsp: Orgel: offene und gedackte Pfeifen, siehe dazu Kalähne 1913 (Hausaufgabe)
In Autobahn (Kraftwerk) fährt bei ca. 1:49 ein Auto am Hörer vorbei. Wie schnell?
(Hinweis: Frequenzen mit sonic-visualier bestimmen, Doppler-Effekt verwenden)
wie unterscheiden sich Spektren der Luftschwingungen in offenen von einseitig geschlossenen Röhren? nach: Alfred Kalähne: Grundzüge der mathematisch-physikalischen Akustik, Leipzig 1913,
Fourier-Koeffizienten einer Rechteck-, Sägezahn-, Dreiecks-Schwingung bestimmen:
Skalarprodukte symbolisch oder numerisch bestimmen
Wellenform in WAVE-Datei schreiben und Spektrum analysieren
(sonic-visualiser
)
Bestimmen Sie für das Signal Rechteck \(+\) 2 mal Sägezahn
die Wellenform
die Fourier-Koeffzienten (unter Verwendung der im Skript angegebenen Koeffz. der einzelnen Signale)
Software zu diskreter (und schneller) Fourier-Transformation: https://git.imn.htwk-leipzig.de/waldmann/computer-mu/-/tree/master/dft?ref_type=heads
Invertierbarkeit der Transformation ausprobieren.
Vergleichen Sie Klangeindruck bei Rasterung (geringe Bitbreite) für originale Wellenform mit gleicher Rasterung für Fourier-Koeffizienten.
Realisieren Sie ähnliches Experiment (schlechte MP3-Kodierung) durch
Wahl einer (geringen) Bitbreite für ffmpeg
.
bei verschiedenen Musikalienhändlern kann man Audio-Dateien in
verschiedenen Formaten kaufen, u.a. flac (verlustfreie Kompression) und
ogg (verlustbehaftet). Ist flac immer besser als ogg? Das kommt darauf
an, was der Künstler abgeliefert hat. Wenn man Pech hat, war das ein
schlechtes mp3 und der Händler hat alles weitere daraus mit
ffmpeg
ausgerechnet. An Beispielen überprüfen— und
hoffentlich widerlegen! Kurz-Ausschnitte von Test-Dateien im Repo. Schon
das Kurz-Schneiden ist nicht trivial, es soll wirklich nur schneiden und
nicht neu kodieren.
(evtl.) hörbare Audio-Wasserzeichen? Matt Montag, https://www.mattmontag.com/music/universals-audible-watermark, 2013
bisher: mechanische Schwingungen
Bsp: Massepunkt/Feder,
Anwendung: akustische Musikinstrumente
Bsp: Saiten, Membrane, Luftsäulen
jetzt: elektrische Schwingungen (und Filter)
Bsp: Oszillator (LC), Tiefpaß (RC)
Anwendungen: diese VL: Filter, nachfolgende:
Analog-Synthesizer (Robert Moog 64, Don Buchla 63)
Simulation von A.-S. (csound, Barry Vercoe, 1985)
Ziele: 1. möglichst exakte Nachbildung (des Akustischen, des Analogen), 2. völlig neuartige Klänge
Schaltung: gerichteter Graph,
Kanten sind Bauelemente
ohne Zustand: Widerstände, Verstärker (Transistor)
mit Zustand: Kondensator: elektrisches Feld,
Spule: magnetisches Feld
durch jede Kante fließt Strom,
jeder Knoten hat Potential
besondere Knoten: Masse (0), Eingabe, Ausgabe
Zustandsänderung nach Gesetzen der Physik (Elektrik)
vergleiche: Massepunkte, Trägheits-, Federkräfte
Schaltung realisiert Operator \(F\) von Eingabesignal \(g:\Omega\to\mathbb{R}\) zu Ausgabesignal \(F(g):\Omega\to\mathbb{R}\)
Schaltung:
(0,3) node [left]\(U_E\) to [short,i=\(I\),*-] (1,3) to [R,l=\(R\), -*] (4,3) to [C,l=\(C\)] (4,1) node [ground] (3,3) to [short,-*] (5,3) node [right] \(U_A\) ;
Widerstand: \(U_E-U_A=R \cdot I\)
(siehe auch Kraftwerk: Ohm Sweet Ohm, 1975)
Kondensator: \(\displaystyle I = C \cdot \frac{d U_A}{d t} = C\cdot U_A'\)
Bsp: \(U_E(t) = 1 \text{V}\), \(U_A(0)=0\) (Kondensator leer)
\(C\cdot U_A' = I = (1-U_A)/R\), Simulation, exakte Lösung
Bsp: \(U_E(t)=\sin(2\pi f t)\), \(U_A(t)=?\)
wirkt als Tiefpaß-Filter: Schwächung hoher Frequenzen
(analoge) Schaltungstechnik, seit \(\ge\) 100 Jahren alles wohlbekannt,
Umformung zur praktischen Berechnung: 1. Analyse harmonischer Schwingungen, 2. Linearkombination.
Harmonische Schwingungen fester Frequenz
sind bestimmt durch Betrag \(r\) und Phase \(\phi\),
dargestellt als eine komplexe Zahl \(z = r \exp(i\phi)\in\mathbb{C}\)
verwende Kirchhoffsche Regeln f. komplexe Größen
Bsp: Kondensator mit Kapazität \(C\) hat bei Kreisfrequenz \(\omega\) den komplexen Widerstand (Impedanz) \(1/(i\omega C)\),
Spule mit Induktivität \(L\) hat Impedanz \(i\omega L\).
funktioniert, solange alle Bauelemente linear sind (Widerstand hängt nur von Frequenz ab)
(0,3) node [left]\(U_E\) to [short,i=\(I\),*-] (1,3) to [R,l=\(R\), -*] (4,3) to [L,l=\(L\)] (4,1) node [ground] (3,3) to [short,-*] (5,3) node [right] \(U_A\) ;
, Spule: \(\displaystyle U_A = L \cdot\frac{d I}{d t}= L \cdot I'\)
wirkt als Hochpaß (tiefe Frequenzen werden geschwächt)
(0,3) node [left]\(U_E\) to [short,i=\(I\),*-] (1,3) to [R,l=\(R\), -*] (4,3) to [L,l=\(L\)] (4,1) node [ground] (4,3) to [short,-*] (6,3) to [C,l=\(C\)] (6,1) node [ground] (6,3) to [short,-*] (8,3) node [right] \(U_A\) ;
, wirkt als Bandpaß
(hohe und tiefe \(f\) geschwächt, in der Nähe der Resonanzfrequenz weniger)
Bandpaß mit Rückführung und Verstärkung:
wirkt als Oszillator (schwingt auf Resonanzfrequenz)
lattice filter (d: Gitter- oder Leiter-Filter)
(0,4) node [left] to [short,*-] (1,4) to [C,l=\(C\)] (5,4) to [short,-*] (6,4); (1,4) to [L,l=\(L\)] (3,2) to [] (5,0); (0,0) node [left] to [short,*-] (1,0) to [C,l=\(C\)] (5,0) to [short,-*] (6,0); (1,0) to [] (3,2) to [L,l=\(L\)] (5,4);
vgl. Julius O. Smith, Physical Audio Signal Processing, W3K Publishing, https://ccrma.stanford.edu/~jos/pasp/Allpass_Filters.html
angewendet im Phaser
ein Filter ist ein Operator von \((\Omega \to \mathbb{R})\) nach \((\Omega\to\mathbb{R})\)
(eine Funktion der Zeit auf eine Funktion der Zeit,
d.h., Filter ist Funktion zweiter Ordnung)
Bsp: der Operator \(\textsf{scale}_s: g\mapsto (x \mapsto s\cdot g(x))\)
Bsp: der Operator \(\textsf{shift}_t: g \mapsto (x\mapsto g(x-t))\)
akustisch ist das ein Echo. Mehrere Echos ergeben Hall.
Realisierungen:
Tonband-Schleife
Federhallstrecke
typisch für: Gitarrenklang in Surf-Musik (Bsp: Dick Dale),
Gesamtklang im (Dub) Reggae (Bsp: Lee Perry)
Operator \(F\) ist linear (L), wenn \(\forall a,b\in \mathbb{R}, g,h\in(\Omega\to\mathbb{R}): F(a\cdot g+b\cdot h)=a\cdot F(g) + b\cdot F(h)\)
\(F\) ist zeit-invariant (TI), wenn \(\forall t\in\mathbb{R}: \textsf{shift}_t\circ F = F\circ \textsf{shift}_t\)
Satz: jeder LTI-Filter kann als (Limes einer unendl.) Summe von \(\textsf{shift}\) und \(\textsf{scale}\) dargestellt werden
Satz: jeder lineare Filter operiert auch linear auf den Fourier-Koeffizienten.
Folgerung: Obertöne werden geschwächt oder verstärkt, aber niemals aus dem Nichts erzeugt.
Das begründet den Wunsch nach nichtlinearen Filtern (Verzerrern).
Lautstärke (Volume): \(\textsf{scale}_s\)
period. Lautstärkeänderung (Tremolo) (Speed, Intensity)
ist linear, aber nicht zeit-invariant
Federhall (Reverb): \(\sum_{d\in D} \textsf{shift}_d\), linear, zeit-invariant
Tiefpaß (Bass), Hochpaß (Treble)
Dunlop Crybaby GCB95
Bandpaß mit einstellbarer Resonanz-Frequenz
Fußwippe (Pedal) \(\to\) Zahnstange \(\to\) Dreh-Potentiometer
vgl. später: spannungsgesteuerte Filter (VCF)
Boss Digital Delay (DD 3, ab 1986)
erstes Delay-Fußpedal DD 2, 1983
Echo-Zeit max. 800 ms. Samplebreite 12 bit. Ü: Taktbreite 12.5 \(\mu\)s …50 \(\mu\)s. Wieviel Bit werden gespeichert?
vgl. später: Chorus (\(=\) spannungsgest. Delay), Flanger
Flanger: \(f + \textsf{shift}_d(f)\),
ursprünglich realisiert durch zwei Tonbandmaschinen
für \(f\), für \(\textsf{shift}_d(f)\), dabei \(d\) durch Bremsen des Bandes
Chorus: \(f\mapsto f+\sum_k\textsf{shift}_{d_k}(f)\) mit \(d_k=\epsilon\cdot\sin(\omega_k t)\), kleine \(\omega_k\)
(mehrere leicht unterschiedliche Stimmen in einem Chor)
bei elektronischer Realisierung:
auch mit Rückführung des Ausgangssignales
Ibanez Swell Flanger
mit analoger Speicherkette MN3207
Ibanez PH 10 (ca. 1990),
Phaser: \(f\mapsto f + \operatorname{\textsf{Allpass}}^k(f)\), \(\operatorname{\textsf{Allpass}}(f)\): erhält Amplituden, verschiebt Phasen (frequenz-abhängig)
R. G. Keen: The technology of Phase Shifters and Flangers 1999,
(Röhren)Verstärker: eigentlich (laut, aber trotzdem) linear
Betrieb außerhalb des linearen Bereiches: technisch möglich und musikalisch interessant (Jimi Hendrix, 1966)
damit auch Bedarf nach extremen und einstellbaren nichtlinearen Bauteilen (Vorverstärker, Verzerrer)
sowie Simulation durch Transistoren (preiswert, robust)
(aber: ist anderes physikalisches Prinzip, klingt anders)
Abb. rechts: Ibanez TS5 Tubescreamer, ca. 1992
Schaltkreis-Simulation https://git.imn.htwk-leipzig.de/waldmann/circuit,
Bauen Sie einen Allpaß (lattice filter), auch Kette von solchen
(\(=\) Phaser), betrachten Sie
Impulsantwort, verwenden Sie mit effect
auf Audio-Datei
(siehe unten)
mit Hydrogen und Rakarrack (oder Guitarix) Aspekte des Schlagzeugs (Rhythmus, Sound) nachbauen:
Vivien Goldman (und New Age Steppers): Private Armies Dub (1981)
(Produzent: Adrian Sherwood, vgl. Bugaloo (2003, video)
Phaser: für eine Sägezahnschwingung \(f\): bestimmen Sie Auslenkung und Spektrum des Signals \(f + \textsf{scale}_{-1}(\textsf{shift}_d (f))\) abhängig von Parameter \(d\in[0,\pi]\).
Echo, Hall, Flanger selbst implementieren:
WAVE-Datei lesen, bearbeiten (verzögern und ggf. rückkoppeln), schreiben
anwenden auf: Sinus, Rechteck, Rauschen
siehe https://gitlab.dit.htwk-leipzig.de/johannes.waldmann/effect
voriges mit dieser Implementierung vergleichen (Steve Harris) https://github.com/swh/ladspa/blob/master/phasers_1217.xml (oder andere Open-Source)
Echo, Hall, Flanger mit sox
:
weißes Rauschen erzeugen
sox -n noise.wav synth 2 noise
zu zeitversetzem Signal (um 300 Samples) addieren
sox -M noise.wav noise.wav out.wav delay 300s 0s remix 1,2
mit sonic-visualizer Spektrum betrachten und erklären
durch Handbewegung wird Kapazität eines Kondensators in einem HF-Schwingkreis (170 kHz) (!) geändert, dadurch die Frequenz \(f_1\) der Schwingung \(s_1\)
Tonhöhe: \(s=\text{Tiefpaß}(\max(0,s_1+s_2))\)
für \(s_2\) aus zweitem (nicht verstimmten) Schwingkreises,
\(s\) enthält (hörbare) Differenz-Frequenz \(|f_1-f_2|\)
Lautstärke: ähnlich: \(s_1'\) durch HF-Bandpaß, \(s_2'=0\) erzeugt Steuerspannung für VCA
Hörbeispiel: Captain Beefheart: Electricity, 1967
weitere frühere elektronische Instrumente: siehe 120 Years of Electronic Music http://120years.net/
Steuerung von System-Eigenschaften (z.B. Resonanzfrequenz, Filter-Steilheit) durch
Ausgabe-Spannung anderer Teilsysteme
Bedienerschnittstelle (Regler, Klaviatur — ebenfalls als Spannungsquellen realisiert)
\(\Rightarrow\) modularer Aufbau eines Synthesizers, Verbindung der Komponenten (\(=\) Programmierung) durch Kabel/Stecker
Robert Moog: Voltage Controlled Electronic Music Modules,
J. Audio Engineering Soc. Volume 13 Issue 3 pp. 200-206; July 1965, https://www.aes.org/e-lib/browse.cfm?elib=1204
Verstärker (VCA, voltage controlled amplifier)
eigentlich Multiplizierer: \(U_A(t) = U_C(t) \cdot U_E(t)\)
Oszillator (VCO), Steuerspannung \(\sim\) Frequenz
technische Realisierung: VCA in einer Rückkopplung
Filter (VCF): Steuerspannung \(\sim\) Resonanzfrequenz
Bsp: Moog Ladder Filter (1965),
vgl. Tim Stinchcombe:
periodische \(U_C\) mit kleiner Frequenz erzeugt durch
LFO (low frequency oscillator)
einfachste Möglichkeit: Taste drücken/loslassen
Impulslänge je nach Eingabe, Impulshöhe konstant
mehr Ausdruck: Stärke des Tastendrucks bestimmt Impulshöhe (konstant über gesamte Länge)
(Luxus: gewichtete Tastatur, simuliert Trägheit der Klavier-Mechanik)
(Hüll)kurvenparameter für nicht-konstante Impulse:
Attack (Anstiegszeit auf maximale Höhe)
Decay (Abfallzeit bei noch gedrückter Taste)
Sustain (Impulshöhe nach Decay)
Release (Abfallzeit nach Loslassen der Taste)
spannungsgesteuerte modulare Synthesizer produziert ab 1963 (Robert Moog, Don Buchla)
(Bsp: Buchla: In The Beginning Etude II, 1983?)
erste Anwendungen (auf publizierten Aufnahmen)
für exotische Klänge als Verzierung in Standard-Popmusik (Byrds: Space Odyssey, 1967)
als Solo-Instrument
als Ersatz klassischer Instrumente, für klassische Musik (Wendy Carlos: Switched on Bach, 1968)
für neuartige, eigens komponierte Musik (Morton Subotnick: Silver Apples of the Moon, 1967)
Erfinder/Hersteller: Robert Moog (1964), Don Buchla (1965) Serge Tcherepnin (1968), Peter Zinovieff (EMS Electronic Music Studios 1965), Alan Robert Pearlman (ARP, 1969) Ikutaro Kakihashi (Roland, 1976),
zum Selbstbauen: Elektor Formant Baupläne von C. Chapman, 1976-1978
Dieter Doepfer (1995), Eurorack-Standard
Quelle: Kim Bjorn, Chris Meyer: Path and Tweak, 2018
ALSA modular synthesizer
Komponenten (LFO, VCO, VCF, …) auf Arbeitsfläche,
Verbindung durch Kabel (Ausgangsgrad beliebig, Eingangsgrad 1)
Verbindungen zur Außenwelt (Bsp.)
In: MCV (MIDI control voltage) Steuerspannung ist Tonhöhe der
Taste eines virtuellen Keyboards (z.B. vkeybd
) oder
externen Keyboards (z.B. USB-MIDI)
qjackctl (Alsa): virtual keybd
output — ams
input
Out: PCM; qjackctl: ams
out — system
in
Spektral-Analyse in Echtzeit: jaaa -J
(jack audio analyser, Fons Adriaensen, 2004–2010)
Experimente mit ALSA modular synthesizer (AMS).
Beispiel: File \(\to\) Demo \(\to\)
example_ams_demo_bode.ams
Parameter einzelner Bausteine ändern (Bsp: VCF)
Anschlüsse ändern.
Eine Rückkopplung einfügen (siehe unten feedback loop)
Raten sie die Bedeutung der Einträge im Datei-Inhalt der Synthesizer-Beschreibung.
Ausprobieren (einzeln) LFO, VCO, VCF (Moog filter), ADSR (Env), MCV (MIDI control value)
die zeitliche Umkehrung einer ADSR-Kurve ist im allgemeinen nicht ADSR – sondern nur für welche Parameter?
Nachbilden bestimmter Klänge
base drum,
snare drum,
der Grashüpfer in Biene Maja (deutsche Tonspur der japanischen Verfilmung von 1975)
Becken (hihat, crash, ride)
Metallophon,
Flexaphon (Hörbeispiel: ca. bei 0:55 in Can: Sing Swan Song, 1972)
Xylophon,
Orgelpfeife, (Pan)Flöte
einzelner Wassertropfen, Regen, Wasserfall, Meer
Steuerung durch interne Quelle (LFO) oder externe:
(USB-)MIDI-Keyboard, virtuelles MIDI-Keyboard (vkeybd
),
Sequencer, der MIDI-Signale ausgibt, z.B. http://www.filter24.org/seq24/
zu Video electric/elektor-formant-2022
: den
aufgenommenen Patch in AMS nachbauen
Schaltpläne nachbauen (Krell patch, drums and percussion, feedback loop)
die Herausforderung ist: kleine Schaltung (wenige, einfache Bauteile) mit überraschendem Klang.
elektrische Schaltungen zur Klangerzeugung …
real bauen (Analog-Synthesizer, Moog, Buchla, …)
oder simulieren. Bedienung/Beschreibung
grafisch (alsa modular synthesizer)
textuell (durch eine DSL)
separate DSL, Bsp: Csound
https://csound.com/, Barry Vercoe 1985
eingebettete DSL (in Haskell): csound-expression
Anton Kholomiov
hall 0.5 ( usqr 6 * (sqr (400 * usaw 2.1)))
eDSL \(=\) eingebettete domainspezifische Sprache
benutzt Syntax, Semantik (Typen, Namen), Bibliotheken, Werkzeuge der Gastsprache
anwendungsspezifische Typen und Funktionen
Signal ist Funktion von Zeit (\(\mathbb{R}\)) nach Amplitude (\(\mathbb{R}\))
type R = Double; newtype Signal = S (R -> R)
constant :: R -> Signal; constant c = S $ \t -> c
osc :: R -> Signal; osc f = S $ \t->sin (2*pi*f*t)
plus, times :: Signal -> Signal -> Signal
plus (S f) (S g) = S $ \ t -> f t + g t
Bsp. times (constant 0.3) (osc 300)
Source:
anstatt times (constant 0.3) (osc 300)
schreibe 0.3 * osc 300
instance Num Signal where
fromInteger i = constant $ fromInteger i
(+) = plus ; (*) = times
instance Fractional Signal where
fromRational r = constant $ fromRational r
polymorphe numerische Literale: Compiler ersetzt
0.3
\(\Rightarrow\)
fromRational 0.3
,
300
\(\Rightarrow\)
fromInteger 300
.
die Wahrheit: \(\textsf{shift}_d(g) = (t \mapsto g(t-d))\), Implementierung:
shift :: R -> Signal -> Signal
shift d (S g) = S $ \ t -> g (t - d)
Erweiterung: Parameter \((d)\) zeitabhängig (ist ein Signal)
shift :: Signal -> Signal -> Signal
shift (S f) (S g) = S $ \ t -> g (t - f t)
Bsp: shift (osc 1) s
Aufgabe: (spannungs) gesteuerter Oszillator, Ansatz
osc :: Signal -> Signal
osc (S f) = S $ \ t -> sin (2 * pi * f t * t)
Teste osc (300 + 30 * osc 1)
, diskutiere.
eDSL für Signale, Bsp.
hall 0.5 ( usqr 6 * (sqr (400 * usaw 2.1)))
Signal wird symbolisch repräsentiert
(als abstrakter Syntaxbaum)
zur Ausgaben (rendering):
wird in Csound-Ausdruck kompiliert,
ansehen mit
( renderCsd $ hall ...) >>= putStrLn
dieser wird vom Csound-Backend interpretiert
(berechnet Amplitudenverlauf)
Ausgabe auf Audio-Schnittstelle oder in Datei
Fourier-Darstellung der Rechteck-Schwingung
let f = 300
in sum $ map (\k -> (osc $ k * f) / k )
$ map fromIntegral [1, 3 .. 9]
das funktioniert, weil…
k
und f
den Typ Sig
haben
(nicht Zahl!)
für Sig
die Addition definiert ist
(instance Num Sig
)
Klang vergleichen mit sqr f
, obere Grenze (9)
variieren
Übung: desgl. für Sägezahn-Schwingung,
für Summe vieler harmonischer S. mit zufälliger Frequenz
Wind, Glocke
Schlagzeuge (Hans Mikelson)
Anton Kholomiov: Speed up you Csound workflow with Haskell, Csound Journal 23 (2017)
J. W.: Types in Csound-Expression:
Signale:
Mono-Signal: Bsp. osc 300 :: Sig
Stereo-Signal: Bsp.
hall 0.5 (osc 300) :: (Sig,Sig) = Sig2
Aktion (mit Nebenwirkung), die Signal produziert: Bsp
white :: SE Sig
Typ-Fehler bei naiver Kombination, Bsp.
(upw 0.2 4 :: Sig) * (white :: SE Sig)
(fvdelay 1 0.01 0.9 :: Sig -> Sig) white
(ad-hoc) polymorphe Operatoren
mul (upw 0.2 4 :: Sig) (white :: SE Sig)
at (fvdelay 1 0.01 0.9) white
MIDI-Signalquelle
reelles Keyboard: https://github.com/spell-music/csound-expression/issues/51
virtuelles Keyboard:
vdac $ midi $ \ m -> return $ osc $ sig $ cpsmidi m
Signaturen:
midi :: Sigs a => (Msg -> SE a) -> SE a
cpsmidi :: Msg -> D
sig :: D -> Sig
osc :: Sig -> Sig
vdac :: RenderCsd a => a -> IO ()
return :: Monad m => a -> m a
\(\textsf{ringmod}(f,g)(t) := f(t)\cdot g(t)\), die Multiplikation der Signale,
dac $ (osc 300 + osc 400) * osc 60
ist in analoger Hardware aber nicht einfach.
Warum ist der RM so interessant für die Musik?
\(2 \sin \alpha\cdot\sin\beta = \cos(\alpha-\beta)-\cos(\alpha+\beta)\)
\(f:\) 2.5 kHz \(+\) 4.5 kHz, \(g:\) 500 Hz, \(\textsf{RM}(f,g)\): 2,3,4,5 kHz
Anwendungen in Populärmusik/Film:
Mahavishnu Orchestra (John McLaughlin) On the Way home to Earth 1975
BBC Radiophonic Workshop: die Stimme der Daleks in Dr. Who 1963–
csound-expression:
die Aufgaben für alsa-modular-synthesizer (Maultrommel usw.)
Tonerzeugung: Beispiele anhören (Repo zur VL,
cse/data/
) und den Csound- Expression-Ausdruck raten.
Benutzt wurden nur: osc, usaw, usqr, white, mul, at, (+), (-), (*),
hall, fvdelay
Erzeugen Sie selbst solche Beispiele! Hochladen und die anderen raten lassen.
Automatisierung dieses Aufgabentypes (bewerten, generieren): Masterarbeit (abgeschlossen 2022)
benutzen Sie fvdelay
mit veränderlicher
Zeitverschiebung.
Vergleichen Sie mit dem shift
-Operator aus
GUI benutzen
zum Vergleich — Hörbeispiel: Autechre: Perlence (Album: Quaristice, 2008)
zu Autechre:
lustige Kritik an Max/MSP:
Spektrum eines ring-modulierten Signals betrachten
writeSnd "ring.wav" $ setDur 10 $ sqr 300 * saw (100 * 4 ** osc 0.2)
:! sonic-visualizer ring.wav
Dalek-Stimme nachbauen: Stereo-Signal erzeugen
sox .local/share/SuperCollider/downloaded-quarks/Dirt-Samples/numbers/0.wav -c2 0.wav
und modulieren:
import Csound.Base; import Csound.Sam
dac $ mul (osc (( usaw 0.5) * 50 )) $ ( loop $ seg 0 0.7 "0.wav" )
bisher: Geräusche,
Töne (Grundfrequenz, Obertöne, Spektren)
heute: welche Töne klingen gut
zusammen (in Akkorden),
nacheinander (in Melodien)?
später:
Folgen von Akkorden (Kadenzen),
Führung mehrerer Stimmen (Kontrapunkt)
und Notation dafür (algebraisch, grafisch – Partituren)
Hermann von Helmholtz: Die Lehre von den Tonempfindungen als physiologische Grundlage für die Theorie der Musik, Vieweg, Braunschweig 1863.
(von H.H. zitiert) Leonhard Euler: Tentamen novae theoriae Musicae, Petropoli, 1739.
https://scholarlycommons.pacific.edu/euler-works/33/
vgl. Patrice Bailhache: Music translated into Mathematics, https://web.archive.org/web/20050313140417/http://sonic-arts.org/monzo/euler/euler-en.htm
Hugo Riemann: Katechismus der Harmonielehre, Leipzig, 1890
bei schwingender Saite, schwingender Luftsäule
kommen neben Grundton \(f\) ganzzahlige Obertöne vor,
bilden die Naturtonreihe \(f, 2f, 3f, 4f, 5f,\dots\)
einzelne Obertöne lassen sich durch passende Spielweise betonen (isolieren) (z.B. Flageolett)
Bsp: Canned Heat: On the Road Again, 196?. (Flageolett-Töne im Intro)
die Naturtonreihe bis \(15f\) reduziert (durch Halbieren)
1, | 9/8, | 5/4, | 11/8, | 3/2, | 13/8, | 7/4, | 15/8, | 2 |
c | d | e | \(\approx\) f | g | \(\approx\) a\(\flat\) | \(\approx\) b\(\flat\), | \(\approx\) b | c’ |
11/8: das Alphorn-Fa
wie stimmt man Instrumente mit mehreren Saiten?
wie stimmt man Instrumente mit mehreren Saiten \(f, g,\dots\)
\(g\) nicht als Oberton von \(f\),
sondern wir wollen neue Töne. Welche?
Töne wie z.B. 300 Hz, 315 Hz
klingen nicht gut zusammen (sondern rauh, dissonant)
das Ohr nimmt die Schwebung (mit 15 Hz) wahr
Schwebungen zw. 10 Hz und 40 Hz sind unangenehm
(nach Helmholtz: 33 Hz ist am schlimmsten)
konsonante Töne haben keine solchen Schwebungen
\(f,g\) konsonant \(:=_\text{def}\) keine Schwebung geringer Frequenz zwischen Obertönen von \(f\) und Obertönen von \(g\).
\(\displaystyle S(f,g) := \min\{ |a\cdot f - b\cdot g| : a,b\in \mathbb{N}, af \neq bg \}\)
Bsp: \(S(300, 315), S(270, 375), S(270,360) \dots\)
Satz: \(S(f,g)\) ist der …von \(f\) und \(g\).
(Begriff und Berechnung bekannt aus 1. Semester)
\(f,g\) konsonant, wenn \(\gcd(f,g)\) groß …
absolut: \(\gcd(f,g)> 40 \text{Hz}\)
relativ: \(\gcd(f,g)/\max (f,g)\to \text{groß}\)
Hör-Eindruck: \((80,120)\) gegenüber \((480,520)\)
spricht für die relative Definition.
Def: \(R(f,g) := \gcd(f,g)/\max(f,g)\)
hier \(\gcd(f,g)\) auch für \(f,g\in \QQ\) definiert als \(\min_{a,b}\{af - bg\}\)
Aufg: Bestimme \(1=f_0<f_1\ldots <f_k=2\)
mit \(W(f)=\min \{R(f_i,f_j)\mid 0\le i<j\le k\}\) maximal
Bsp: \(k=3\). Für \(1, 4/3, 5/3, 2\) ist \(W(f)=\dots\), geht besser?
nach Pythagoras (ca. 500 v.Chr.)
konstruiere Tonmenge
beginne mit \(f_0=1\) (Grundfrequenz)
multipliziere mit 3/2
(die einfachste nichtriviale Harmonie)
falls \(\ge 2\) : multipliziere mit 1/2 (die triviale Harmonie)
\(\displaystyle \begin{array}{ccccccccc} f_0=1,& f_1=\frac{3}{2},& \frac{9}{4} \to \frac{9}{8},& \frac{27}{16},& \frac{81}{32}\to \frac{81}{64},& \frac{243}{128},&\frac{729}{256} \to \frac{729}{512},&\dots \\ \end{array}\)
alle Werte sind paarweise verschieden
endliche Tonmengen bis zu Werten nahe bei 1 (bzw. 2)
\(f_5=243/128\approx 2\cdot 0.95\), pentatonische Skala: \(f_0,\dots, f_4\)
\(f_7=2187/2048\approx 1.07\), diatonische Skala: \(f_0,\dots, f_6\)
\(f_{12}=3^{12}/2^{19} \approx 1.01\), chromatische Skala: \(f_0,\dots, f_{11}\)
\(\displaystyle \begin{array}{cccccccccc} f_0&f_1&f_2&f_3&f_4&f_5& f_6 & f_7 \\ 1,& \frac{3}{2},& \frac{9}{4} \to \frac{9}{8},& \frac{27}{16},& \frac{81}{32}\to \frac{81}{64},& \frac{243}{128},&\frac{729}{256} \to \frac{729}{512}, & \frac{2187}{1024}\to \frac{2187}{2048} \\ 1 & 1.5 & 1.12 & 1.69 & 1.27 & 1.90 & 1.42 & 1.07 \end{array}\)
pentatonische Skala: \(f_0,\dots,f_4\),
nach Frequenzen geordnet: \(f_0<f_2<f_4<f_1<f_3(< 2f_0)\)
Abstände (Verhältnisse) benachbarter Töne:
\(f_2/f_0=f_4/f_2=f_3/f_1=9/8 =1.125\), \(f_1/f_4= f_0/f_3 = 32/27 \approx 1.185\)
Bsp: The Monochrome Set: Iceman, 2015.
Intro verwendet Töne \(\{d,e,f\sharp,a, b\}\),
das ist Pentatonik mit Grundton \(d\).
\(\displaystyle \begin{array}{cccccccccc} f_0&f_1&f_2&f_3&f_4&f_5& f_6 & f_7 \\ 1,& \frac{3}{2},& \frac{9}{4} \to \frac{9}{8},& \frac{27}{16},& \frac{81}{32}\to \frac{81}{64},& \frac{243}{128},&\frac{729}{256} \to \frac{729}{512}, & \frac{2187}{1024}\to \frac{2187}{2048} \\ 1 & 1.5 & 1.12 & 1.69 & 1.27 & 1.90 & 1.42 & 1.07 \end{array}\)
diatonische Skala: \(f_0,\dots,f_4,\underline{f_5},\underline{f_6}\),
geordnet: \(f_0<f_2<f_4<\underline{f_6} <f_1<f_3<\underline{f_5}(< 2f_0)\)
Abstände (Verhältnisse) benachbarter Töne:
\(f_2/f_0=\dots=9/8=1.125\), \(f_1/f_6= 2f_0/f_5=2^8/3^5 \approx 1.05\).
Anwendung: weiße Tasten (ganze Töne) auf dem Klavier
\(f_0=F, f_2=G, f_4=A, f_6=B, f_1=C, f_3=D, f_5=E\)
Benennung: alphabetisch, im Deutschen: \(H\) statt \(B\)
siehe auch https://krebszuchtaufamrum.bandcamp.com/track/es-ist-ein-b-du-arsch
\(f_0=1, f_1=3/2, f_2=9/8,\dots, f_{12}/f_0=3^{12}/2^{19}\approx 1.01\)
chromatische Skala: \(f_0,\dots, f_{11}\), geordnet:
\({f_0} <\underline{f_7} <{f_2} <\underline{f_9} <{f_4} <\underline{f_{11}} <{f_6} <{f_1} <\underline{f_8} <{f_3} <\underline{f_{10}} <{f_5}\)
unterstrichen sind die neuen (nicht diatonischen) Töne
\(\approx\) die schwarzen Tasten (Halbtöne) auf dem Klavier
Bezeichnungen: nach den ganzen Tönen,
\(f_1=C, f_8=C{\sharp}=\text{Cis}, f_3=D\)
Abstände sind \(f_7/f_0=f_9/f_2=\dots=3^7/2^{11}\approx 1.07\), \(f_2/f_7=f_4/f_9=\dots=2^8/3^5\approx 1.05\)
d.h., in dieser Stimmung gibt es zwei verschiedene Halbton-Abstände
die pythagoreische Reihe:
schließt nicht \(1\neq 3^{12}/2^{19}\) (pythagoreisches Komma)
Konsonanzen aus der Naturtonreihe fehlen, z.B. 4:5:6.
angenähert durch \(c:e:g =f_1:f_5:f_2=1:\frac{81}{64}:\frac{3}{2}\)
der Fehler \(\frac{81}{64}/\frac{5}{4}\) ist das diatonische Komma
unterschiedlich große Halbtöne \(\Rightarrow\) Transposition (Verschiebung) ändert Frequenz-Verhältnisse
reine Stimmung: 4:5:6 für spezielle Akkorde:
Tonika c,e,g, Subdominante f,a,c, Dominante g,b,d.
gleichtemperierte S.: pythagoreisches K. wird geschlossen: jeder Halbton ist \(2^{1/12}\approx 1.06\), dann \(g:c = 2^{7/12}\approx 1.4983\neq 3/2\), invariant unter Transposition
T: Ganzton, S: Halbton: \(c \stackrel{T}{-} d \stackrel{T}{-} e \stackrel{S}{-} f \stackrel{T}{-} g \stackrel{T}{-} a \stackrel{T}{-} b \stackrel{S}{-} c'\)
hiervon sind die Intervallbezeichnungen abgeleitet:
Sekunde, Terz, Quarte, Quinte, Sexte, Septime, Oktave.
es gibt zwei Terzen:
große Terz (\(2T=4S\)) \(c-e\), kleine Terz (\(T+S=3S\)): \(e-g\)
zwei Septimen: kleine (\(10S\)) \(d-c'\), große (\(11S\)): \(c-b\)
der Modus beschreibt eine zyklische Verschiebung:
ionisch (Dur): \(c,d,\dots\),
äolisch (Moll): \(a, b,\dots\).
Grundformen (konsonant):
Dur (große Terz, kleine Terz) \(C = \{c, e, g\}\)
in C-Dur-Skala enthalten: \(C, F, G\)
Moll (kleine Terz, große Terz) \(C^- =\{c, e\flat, g\}\)
in C-Dur-Skala enthalten: \(D^-, E^-, A^-\)
Modifikationen (dissonant):
vermindert: (kleine, kleine) \(C^0 = \{c, e\flat, g\flat\}\)
in C-Dur-Skala enthalten: \(B^0\)
vergrößert: (große, große) \(C^+ = \{c, e, g\sharp\}\)
nicht in C-Dur-Skala enthalten.
konsonanter Dreiklang plus Septime (kleine oder große)
Bsp: \(C^7=\{c,e,g,b\flat\}, C^\text{maj7}=\{c,e,g,b\}\)
skalen-eigene Vierklänge:
\(C^\text{maj7}=\{c,e,g,b\},D^{-7}=\{d,f,a,c\},\) \(E^{-7},F^\text{maj7}, G^{7},A^{-7},B^{-7 (\flat 5)}\)
simple Realisierung in electribe 2
:
Dur-Skala, 4 Noten pro Akkord (Grundton, \(+2, +4, +6\)),
da kann überhaupt nichts schief gehen, …
auch bei frei improvisierter Melodie nicht
(XY-Pad: X ist Tonhöhe (aus Skala), Y ist Arpeggio)
das klingt aber doch beliebig,
woher kommt die musikalische Spannung?
bestimmen Sie die Frequenzverhältnisse für C-Dur, d-Moll und e-Moll in der C-Dur-Skala bei Stimmung
diatonisch
rein
gleich temperiert
und vergleiche Sie akustisch (csound-expression)
Konstruktion der chromatischen Töne nach Paul Hindemith (Unterweisung im Tonsatz, 1937):
zu jedem Ton aus der Obertonreihe des Grundtons (c) werden mögliche Grundtöne bestimmt. Bsp: \(5\cdot c = 4\cdot ?\).
Dabei Multiplikation mit \(1 \dots 6\), Division durch \(1,(2), 3, (4), 5\), mit Identifikation von Oktaven.
Welche Töne entstehen aus c?
Dieser Vorgang wird für jeden der entstandenen Töne wiederholt.
Welche neuen Töne enstehen? Sind die Abstände gleichmäßig (oder fehlen noch Töne)? Vergleich mit pythagoreischer Skala.
was hat H. Helmholtz auf S. 291f. gerechnet/gezeichnet? Rekonstruieren Sie die einfachste mathematische Formel, erzeugen Sie daraus die Diagramme, vergleichen Sie mit denen im Buch
was hat L. Euler gerechnet? (Helmholtz S. 349, Fußnote) Überführen Sie die dort zitierte rekursive Definition der Stufenzahl in eine explizite Formel.
Bestimmen Sie die Stufenzahl der Akkorde aus der 1. Aufgabe.
Wo steht die Definition im Originaltext von Euler?
Welches sind (nach 5, 7, 12) die nächsten interessanten Längen von pythagoreischen Tonfolgen?
Betrachten Sie dazu die Verhältnisse benachbarter Töne (Pentatonik: 32/27 und 9/8, Diatonik: 9/8 und \(2^8/3^5\), Chromatik: \(2^8/3^5\) und \(3^7/2^{11}\)). Wann verschwindet (durch hinzukommende Zwischentöne) das größere der beiden chromatischen Verhältnisse? Welche anderen Verhältnisse gibt es dann? Wie geht das weiter?
Gibt es solche Skalen in der (historischen) Musikpraxis? (Aktuell vgl. https://oddsound.com/usingmtsesp.php, Oddsound und Richard D. James (\(=\) Aphex Twin), 2021)
mit alsa-modular-synthesizer (Module: CV: Random, Quantizer — werden auch in einigen Demos verwendet) oder csound-expression
Akkorde (Dreiklänge, Vierklänge) erzeugen.
Akkorde aus einer Skala zufällig aneinanderreihen,
dazu eine zufällige Melodie aus dieser Skala
Spezifikation von Tonfolgen in CSE vgl.
notes = fmap temp $ fmap (220 * ) [1, 5/4, 3/2, 2]
q = mel [mel notes, har notes]
dac $ mix $ sco oscInstr q
randomh a b f
: zufälliges Treppensignal
(sample-and-hold) in \([a \dots b]\)
mit Period \(f\)
int'
, frac'
: ganzer/gebrochener Anteil
eines Signals
Naturtonreihe (aufsteigend):
osc $ mul 100 $ int' $ mul 12 $ 1 - usaw 1
Naturtonreihe (zufällig):
fmap osc $ mul 100 $ fmap int' $ randomh 1 12 8
oktavieren (halbieren) bis in die erste Oktave:
oct = (2 **) . frac' . logBase 2
Pentatonik (pythagoreisch) (zufällig):
fmap (tri . (200 *) . oct . (3**) . int') $ randomh 0 5 8
die Parameter abstrahieren:
h o b k f = fmap (o . (b *) . oct . (3**) . int') $ randomh 0 k f
mehrere solche Signale addieren:
h tri 200 5 (1/13) + h osc 100 5 (1/11) + h osc 50 3 (1/17)
und verarbeiten:
dac $ mul 0.2 $ cave 0.5 $ fmap (tort 0.1 0.2) $ ...
zur Stimmung der Gitarre:
man kann die unteren (tiefen) Saiten so stimmen: Saite mit Flagoelett bei 1/4 \(=\) nächst-höhere Saite mit Flageolett bei 1/3.
Welches Intervall ist das? Wenn man bei tiefem E beginnt und alle Saitenpaaare so stimmt, welcher Ton ist dann auf der 6. (höchsten) Saite?
Das Intervall zwischen 4. und 5. Saite wird bei üblicher Stimmung um einen halben Ton verringert.
Es werden gern auch abweichende Stimmungen verwendet, vgl.
Warum?
Bsp: Sonic Youth: Hyperstation, Album: Daydream Nation (1988) — Das Bild auf der Hülle ist
Stimmungen für Hawaii-Gitarre: John Ely (2008)
Bei C6th und A6th: welche benachbarten Saiten ergeben Dur- und Moll-Dreiklänge?
Rechnen Sie die Frequenzen für die angegebenen Verstimmungen nach (z.B. C6th: G plus 6 cent). Welche Frequenzverhältnisse werden dadurch für die Akkorde erreicht?
Bestimmen Sie die Abweichung des Alphorn-Fa vom nächsten chromatischen Ton in Cent.
klassisch: Musikstück repräsentiert durch Partitur,
Ton repräsentiert d. Note, bezeichnet Tonhöhe, -dauer
Tempo, Klangfarbe, Lautstärke
durch weiter Annotationen spezifiziert
oder nicht, d.h., dem Interpreten überlassen
Komposition:
Noten nebeneinander bedeutet Töne nacheinander
Noten (Zeilen) übereinander: Töne (Stimmen) gleichzeitig
jetzt: Musikstück repräsent. d. (abstrakten Syntax-)Baum
Paul Hudak , Tom Makucevich , Syam Gadde , Bo Whong: Haskore Music Notation - An Algebra of Music, JFP 1995,
Partitur wird kompiliert zu MIDI-Strom, der von Hard- oder Software-Synthesizer interpretiert wird
Donya Quick et al.: https://euterpea.com/
Anton Kholomiov: Csound-Expression Tutorial – Scores,
Partitur wird durch Csound-Instrumente interpretiert,
P. kann Csound-spezifische Elemente enthalten
data Music a
= Prim (Primitive a)
| (Music a) :+: (Music a) -- sequentielle K.
| (Music a) :=: (Music a) -- parallele K.
| Modify Control (Music a)
data Primitive a = Note Dur a | Rest Dur
data Control = Tempo Rational
| Transpose AbsPitch
| Instrument InstrumentName | ...
Beispiele
Prim (Note 1 60) :: Music AbsPitch
Prim (Note 1 (C,4)) :: Music Pitch
Modify (Transpose 4)
(Prim (Note 1 (C,4)) :=: Prim (Note 1 (G,4)))
tr = transpose
minor x = chord [x, tr 3 x, tr 7 x]
bass x = tr (-12) $ line
[ scaleDurations (1/2) x, tr 7 x, tr (-5) x ]
pat x = chord
[ instrument AcousticGrandPiano
$ line [ Rest qn, minor x, Rest qn, minor x ]
, instrument AcousticBass $ bass x ]
theme = line $ map (\x -> pat $ x 2 qn) [ a,e,d,a ]
benutzerdefinierte Namen (tr
), Funktionen
(minor
), Standard-Funktionen (map
)
beschreibt diesen AST:
(Modify (Instrument AcousticGrandPiano) (Prim (Rest (1 % 4)) :+: ((Prim (Note
(1 % 4) (A,2)) :=: (Modify (Transpose 3) (Prim (Note (1 % 4) (A,2))) :=: (Modify
(Transpose 7) (Prim (Note (1 % 4) (A,2))) :=: Prim (Rest (0 % 1))))) :+: (Prim
(Rest (1 % 4)) :+: ((Prim (Note (1 % 4) (A,2)) :=: (Modify (Transpose 3) (Prim
(Note (1 % 4) (A,2))) :=: (Modify (Transpose 7) (Prim (Note (1 % 4) (A,2))) ...
data MEvent = MEvent
{ eTime :: PTime, -- onset time
eInst :: InstrumentName, -- instrument
ePitch :: AbsPitch, -- pitch number
eDur :: DurT, -- note duration
eVol :: Volume, -- volume
eParams :: [Double] } -- optional other parameters
type Performance = [ MEvent ] -- aufsteigende onsets
musicToMEvents
:: MContext -> Music1 -> (Performance, DurT)
musicToMEvents
c@MContext{mcTime=t, mcDur=dt} (m1 :+: m2) =
let (evs1,d1) = musicToMEvents c m1
(evs2,d2) = musicToMEvents c{mcTime = t+d1} m2
in (evs1 ++ evs2, d1+d2)
die Konstruktoren der Partitur definieren die Signatur \(\Sigma\) einer Algebra
die Partituren sind Terme über dieser Signatur
Performances bilden die Trägermenge \(D\) einer \(\Sigma\)-Algebra
die Aufführung
(perform :: Music a -> Performance
) ist die
Interpretation von Term nach Algebra:
dabei wird jedes Symbol aus \(\Sigma\) durch eine Funktion über \(D\) ersetzt, Bsp:
:+:
durch ++
(Verkettung),
:=:
durch merge
(Zusammenfügen)
für die zweistelligen Kompositionen
seq2, par2 :: Score -> Score -> Score
seq2 = (:+:), par2 = (:=:)
seq2
ist semantisch assoziativ: für alle \(p,x,y,z\)
perform p (seq2 (seq2 x y) z)
= perform p (seq2 x (seq2 y z))
neutrales Element? kommutativ? Desgl. für par2
gelten Distributiv-Gesetze? (Nein).
Ü: wann sind par2 (seq2 a b) (seq2 c d)
und
seq2 (par2 a c) (par2 b d)
semantisch gleich?
Cantus Firmus (feststehende Melodie, die anderen Stimmen sind Verzierung)
Kontrapunkt (Note gegen Note): Vorschriften zur Konstruktion der Begleit-Stimmen, u.a.
Konsonanzen zu bestimmten (schweren) Zeitpunkten
keine Parallelen (gleichmäßiges Auf- oder Absteigen)
Fuge (Flucht, die Stimmen fliehen voreinander) alle Stimmen sind aus einem Thema konstruiert durch
zeitlichen Versatz (Kanon), zeitliche Spiegelung
Versatz der Tonhöhe, Skalierung des Tempos, …
Kadenzen (Akkordfolgen) mit untergeordneten Stimmen
eine Stimme wird mehrfach zeitlich versetzt
Beispiel: Karl Gottlieb Hering (1766-1853): C A F F E E
X: 1 K: F M: 3/4 "1."c2 A2 F2 | F2 E2 E2 | E2 G2 E2 | F E F G F2 | w:C A F F E E trink nicht so viel* Caf* fe "2."A A c c A A | B A B c B2 | G G B B G G | A G A B A2 | w:nicht für Kin-der ist der Tür* ken* trank L: 1/4 "3."F F F | G G G | C C c | c C F | w:sei doch kein Mu-sel-man der das nicht las-sen kann
Übung: 1. Harmonien bestimmen, 2. programmieren
eine anspruchsvolle Form des Kontrapunktes. alle Stimmen sind aus einem Thema konstruiert durch
zeitlichen Versatz (wie im Kanon)
Versatz der Tonhöhe
zeitliche Spiegelung
Tonhöhen-Spiegelung
Skalierung des Tempos
Johann Sebastian Bach (1685–1750): Die Kunst der Fuge, Contrapunctus XV - Canon per Augmentationem in Contrario Motu, (Solist: Pierre-Laurent Aimard, 2008)
Ü: Operatoren in Partitur erkennen, implementieren
Grundformen: Dur und Moll
tr = transpose
major x = chord [ x, tr 4 x, tr 7 x ]
minor x = chord [ x, tr 3 x, tr 7 x ]
mit Septime (kleiner, großer)
major7 x = chord [ x, tr 4 x, tr 7 x, tr 10 x ]
major7maj x = chord [ x, tr 4 x, tr 7 x, tr 11 x ]
weitere Varianten durch Umstellen (anderer Grundton); Hinzufügen, Ändern, Weglassen von Tönen
lateinisch cadere \(=\) fallen
die Voll-Kadenz (Quinten abwärts) in C-Dur:
3kl. | \(C\) | \(F\) | \(B^0\) | \(E^-\) | \(A^-\) | \(D^-\) | \(G\) | \(C\) |
4kl. | \(C^{\maj7}\) | \(F^{\maj7}\) | \(B^{-7(\flat 5)}\) | \(E^{-7}\) | \(A^{-7}\) | \(D^{-7}\) | \(G^{7}\) | \(C^7\) |
Ton | I | IV | VII | III | VI | II | V | I |
T | S | Dp | Tp | Sp | D | T |
verkürze, ersetze \(B^0=\{b,d,f(,a)\}\) durch \(G=\{g,b,d(,f)\}\),
ergibt die Kadenz: \(C,F,G,C = T, S, D, T\)
Tonika (1,3,5), Dominante (5,7,9),Subdominante (4,6,8),
Dur: \(T= (c,e,g)\), \(S=(f,a,c)\), \(D=(g,b,d)\),
Moll: \(t=(c,e\flat,g)\), \(s=(f,a\flat,c)\), \(d=(g,b\flat,d)\)
Euterpea verwendet chromatische Tonleiter (wg. MIDI)
anderen Skalen dorthin umrechnen, z.B.
dia x =
let scale = [0,2,4,5,7,9,11]
(d,m) = divMod x (length scale)
in note qn $ 60 + d*12 + scale !! m
dann Tetrachord (vgl. Electribe Chord-Modus)
tetra x = chord $ map dia [x,x+2,x+4,x+6]
Betrachtung der Akkorde nach ihrer (vermuteten, häufigen) Funktion in musikalischer Phrase.
nach Hugo Riemann (1849–1919):
T These, S Antithese, D Synthese.
in einer Kadenz können Akkorde durch Parallelen vertreten werden
die Parallelen (mit gleicher großer Terz)
\(Tp = (-1,1,3) = (a,c,e)\), \(tP = (3,5,7) = (e\flat,g,b\flat)\),
entsprechend \(Dp, dP, Sp, sP\)
The Beatles: Penny Lane: T, Tp, Sp, D (C, Am, Dm, G)
harmonische Analyse einer Stelle aus Bach: BWV 268
Über Hugo Riemann, von dessen Sohn Robert: http://www.hugo-riemann.de/
Kritik an Riemann durch Heinrich Schenker (1868–1935) https://web.archive.org/web/20120403032916/http://www.schenkerdocumentsonline.org:80/profiles/person/entity-000712.html
Kritik an einer Kritik an Schenkers Theorie der Urlinie https://web.archive.org/web/20160731145955/http://schenkerdocumentsonline.org/documents/other/OJ-21-24_1.html
Kadenz T S (T) D T
Beispiele: tausende, u.a. Beach Boys: Little Honda, 1964 (Version von Yo La Tengo, 1997)
Strophe: \(D D D D | G G D D | A A D A\)
The Jesus and Mary Chain: Upside Down, 1984 (auf Creation Records). Strophe: \(4\cdot (G G G C) ~ 4\cdot C ~ 4\cdot G\)
Beatles: Tomorrow Never Knows, 1966.
Lou Reed: One chord is fine. Two chords is pushing it. Three chords and you’re into jazz.
Thelonius Monk: Round Midnight, 1944
zu Folie Partitur und Interpretation:
Warum schwach monoton, nicht stark?
Welche Rechnung muß im Zweig Par2 x y ->
stattfinden? Wie werden die Teilresultate verknüpft?
Welches ist der abstrakte Datentyp für [Event]
(welche Operationen gehören zur API)? Welche effiziente
Implementierungen dafür kennen Sie?
Fragen von Folie Eigenschaften der Operationen
zu Bach: Contrapunktus XV (canon per augmentationem in contrariu motu)
Bestimmen Sie die globale zeitliche Struktur der Komposition.
Der 1.Takt der 1. Stimme erscheint (gedehnt und gespiegelt) in Takt 5 und 6 der 2. Stimme. Wo noch?
Was zeigt der Trennstrich nach Takt 52 an?
Bestimmen Sie die Tonhöhen-Abbildung (Spiegelung) von erster zu zweiter Stimme.
Lesehilfe: Der Violin-Schlüssel bezeichnet das G (der Kringel, zweite Notenlinie von unten), der Baß-Schlüssel bezeichnet das F (der Doppelpunkt, zweite Notenlinie von oben)
Programmieren Sie das Thema von Jean-Michel Jarre: Oxygen Pt. 2 als eine Verschmelzung von zwei einfachen Melodien
Programmieren Sie den CAFFEE-Kanon (3 Stimmen, jede mit eigenem Instrument).
Ergänzen Sie https://gitlab.imn.htwk-leipzig.de/waldmann/cm-ws18/blob/master/kw47/Caffee.hs
Beschreibung der Bibliotheks-Funktionen: https://github.com/spell-music/csound-expression/blob/master/tutorial/chapters/ScoresTutorial.md
oder in Euterpea
Benutzen Sie eine Darstellung (d.h., Unterprogramme), die die lokale Strukur ausnutzt, z.B.: zweite Häfte der 2. Zeile ist Transposition der ersten Hälfte.
Wir verschieben nicht chromatisch (2 Halbtöne), sondern diatonisch (1 Ton in der F-Dur-Skala).
Realisieren Sie auf ähnliche Weise eine Voll-Kadenz
effizient programmieren unter Benutzung der Skalen-Numerierung
eine dazu passende Melodie programmieren
Hinweis: jede Melodie (aus Skalentönen) paßt
verschiedene Software-Synthesizer ausprobieren zum Abspielen von mit Euterpea erzeugten MIDI-Strömen:
(in der VL gezeigt) fluidsynth/qsynth
fluidsynth -s -a jack -j -r 48000
Alsa Modular Synthesizer (Verwenden Sie Demos, die das
MIDI-Input-Element MCV
enthalten)
Csound-Expression
dacBy ( def {csdFlags = def { rtmidi = Just AlsaSeq }} )
$ midi $ \ m -> return $ osc $ sig $ cpsmidi m
Euterpea: von Partitur zu MIDI und zurück
song = line ...
writeMidi "foo.midi" song
Right m <- importFile "foo.midi"
song' = fromMidi m
Dann song
und song'
vergleichen
Quelle: Thor Magnusson und Alex McLean: P.w.P.o.T, Kap. 14 in: Oxford Handbook of Algorithmic Music, OUP 2018, https://slab.org/publications/
Software: https://tidalcycles.org/
algebraische Beschreibung von periodischen Verläufen (Parameter für Klänge), eingebettete (in Haskell) DSL
Back-end: https://supercollider.github.io/ James McCartney, 1996–
Tidal benutzt SC zum Abspielen von Samples
Tidal ist System für live-coding (durch ghci-Kommandos)
Sound-Server (supercollider) starten
sclang dirt_startup.scd
Ghci starten
ghci
:script BootTidal.hs
Klänge ausgeben
d1 $ s "bd [sn sn]"
d2 $ s "[jvbass*2]*2" |*| n "0 1 2 3 4"
hush
ein Muster m :: Pattern a
beschreibt eine
periodische Abbildung von Zeit nach a
elementares Muster: pure x
mit Periode 1
c :: ControlMap
Parameter zum Sample-Abspielen
s: Verzeichnis, n: Datei-Nummer, begin, end, speed …
Funktionen zum Abspielen:
d1, d2, ... :: Pattern ControlMap -> IO ()
let p = pure $ M.fromList [("s", VS "bd")]
d1 p
queryArc p (Arc 0 3)
[(0>1)|s: "bd",(1>2)|s: "bd",(2>3)|s: "bd"]
Bsp. verwenden p = run 3
, mit
queryArc p (Arc 0 1)
==> [(0>1/3)|0, (1/3>2/3)|1, (2/3>1)|2]
Transformation der Werte fmap (\ x -> x+1) p
==> [(0>1/3)|1, (1/3>2/3)|2, (2/3>1)|3]
zeitliche Verschiebung (1/3) <~ run 3
==> [(0>1/3)|1, (1/3>2/3)|2, (2/3>1)|0]
zeitliche Streckung slow 2 p
[(0>2/3)|0, (2/3>1)-4/3|1, 2/3-(1>4/3)|1, (4/3>2)|2]
parallele Komposition (Vereinigung der Ereignismengen)
stack :: [Pattern a] -> Pattern a
fast 3 $ stack [ slow 2 (s "sn"), slow 3 (s "bd") ]
parallele Komposition mit Kombination der Werte
(<*>) :: Pattern (a -> b) -> Pattern a -> Pattern b
Struktur von: beiden Seiten (<*>
), links
(<*
), rechts (*>
)
p |+| q = (pure (+) <*> p) <*> q
(#)
\(=\)
(|>)
\(=\) Struktur von
links, Werte von rechts
vgl. p # gain 0.7 # gain 0.3
mit
p # gain 0.7 |* gain 0.3
Nicht wie in z.B. :+:
in Euterpea,
weil ein Tidal-Muster kein Ende hat!
Verschränkung von Mustern:
cat :: [Pattern a] -> Pattern a
für \(p = \texttt{cat}[p_0,..,p_{k-1}]\) bedeutet \(p[0\dots 1]=p_0[0\dots 1], p[1\dots 2]=p_1[0\dots 1], p[2\dots 3]=p_2[0\dots 1], p[3\dots 4]=p_0[1\dots 2],p[4\dots 5]=p_1[1\dots 2],\dots\)
Denkmodell: jedes Muster ist Tonbandmaschine (Spur), bei \(\texttt{cat}[p_0,..,p_{k-1}]\) spielt der Reihe nach jede Maschine \(p_i\) für 1 Einheit
zusätzlich zur bisher beschriebenen eDSL:
konkrete Syntax für Operationen, Transformationen:
Bsp: "[[bd sn?]*2, [hc?*2 ho]*4]"
Hintereinander: in <>
: cat
, in
[]
: fastcat
,
Komma in (beiden) Klammern: stack
(außen)
x*3
bedeutet: fast 3 x
,
x/2
bedeutet: slow 2 x
x?
: degrade x
(einige Ereignisse
weglassen)
s $ fromString "[bd sn]"
ist äquivalent zu
s $ fastcat [ pure "bd", pure "sn" ]
mit :set -XOverloadedStrings
:
s "[bd sn]"
damit kürzere Notation, aber Vorteile der eDSL (statische Typisierung, Funktionen, HO) werden aufgegeben
Ausdrucksmittel sind hier (z.B. ggü. csound-expression) absichtlich beschränkt, Schwerpunkt von Tidal ist die Kombination von (zeitlichen) Mustern, nicht von Effekten
ein globaler Effekt-Weg, Parameter in ControlMap
d1 $ sound "sn"
# delay 0.7 # delaytime (2/3) # delayfeedback 0.7
# room 0.7 # size 0.9
# cutoff 400 # resonance 0.7
Parameter sind auch Muster, z.B.,
size "0.5 0.9"
durch orbit <string>
unabhängige
Effektstrecken
stack [ .. # orbit "0", .. # orbit "1" ]
(seit 1.7): control bus: ändert Parameter für aktive Effekte
der eigentliche Erfindungsgrund und Anwendungsfall von Tidalcycles ist live coding: sichtbare Arbeit am Quelltext (wird projiziert) während der Aufführung
ghci sendet Ereignisse an Backend (supercollider), falls Eingabe typkorrekt. falls nicht: bleibt bisheriges Muster.
from scratch live coding: Editor ist anfangs leer (und der gesamte Text bleibt auf einer Bildschirmseite)
kollaboratives Live-Coding. Bsp.: Damian Silvani: Web-based P2P collaborative editor for live coding music and graphics https://munshkr.github.io/flok/
aktuell (2024) 21./22. Dezember: 36 Stunden live coding https://club.tidalcycles.org/t/solstice-stream-2024-call-for-live-coders/5536
Alex McLean, Making music with text[ure], https://slab.org/publications/
Mike Hodnick, I program computers and music. https://www.kindohm.com/
Kindohm at International Conference on Live Coding, October 15th 2016, at The Spice Factory, Hamilton, Ontario, Canada.
vgl.
Tidal installieren und starten
jack richtig configurieren, siehe https://git.imn.htwk-leipzig.de/waldmann/cm-ws18#hinweise-zur-richtigen-konfiguration-von-audio-hard-und-software
SuperDirt installieren
dann SC-Server starten mit
sclang superdirt_startup.scd
Tidal-Cycles installieren
cabal install --lib tidal
Tidal-Cycles starten
ghci -ghci-script $(ghc-pkg field -f $HOME/.cabal/store/ghc-$(ghc --numeric-version)/package.db tidal data-dir|tail -c+10)/BootTidal.hs
d1 $ s "bd sn"
hush
Ü: warum ist das Boot-File kein reguläres Haskell-Modul?
Tidal verstehen:
für den Typ Pattern a
: Welche Eigenschaften gelten für
die Konstruktoren (pure
,silence
) und
Operatoren
(fmap
,stack
,(<*>)
,(<*)
,(*>)
,
cat
)
z.B.: Welche sind assoziativ, kommutativ, haben neutrale Elemente; welche Distributivgesetze gelten?
Überprüfen Sie die Axiome von Functor
und
Applicative
Eigenschaften von fast
? (in Beziehung zu anderen) 1.
wenn das erste Argument konstant ist, 2. wenn es ein Muster
ist.
vgl. Types in Tidal-Cycles: https://www.imn.htwk-leipzig.de/~waldmann/etc/untutorial/tc/
Tidal hören:
Tidal benutzen
für einige Audio-Files (https://gitlab.imn.htwk-leipzig.de/waldmann/cm-ws18/tree/master/kw49/data)
den Tidal-Quelltext erraten. Hinweis: benutzt wurden
s "casio:1"
, fast
, speed
,
rev
, every
, room
Steve Reich: Piano Phase nachbauen.
Hinweis: chromatische Tonfolgen so möglich:
s "sine" |+| speed (fmap (\i -> 2**(i/12)) "0 4 9"
Antonio Carlos Jobim, Newton Mendonca: One Note Samba, Rec. Stan Getz, Charlie Byrd, 1962, LP Jazz Samba. Der Stil wurde als Bossa Nova bekannt.
Welche Rolle spielt der festgehaltene Ton (\(f\)) im jeweiligen Akkord? (\(D^{-7} D^{\flat7} C^{-7} B^{7\flat 5}\))
Programmieren Sie den Rhythmus (Stick ab 1:28 min)
Ziel: Methoden aus der Vorlesung benutzen, um eine musikalische Wirkung zu gestalten. Diese live vorführen.
Ideen für Projekte:
(Standard: jedes Vorlesungsthema, siehe auch Übungsaufgaben)
Verknüpfung von zwei verschiedenen Themen
Hacks, d.h., Verwendung einer Methode/eines Werkzeugs zu einem nicht bestimmungsgemäßen Zweck
Verknüpfung mit Themen aus anderer Vorlesung, z.B. Robotik
Bezug zu Leipzig, z.B.
J. S. Bach, H. Riemann, Jutta Hipp https://www.bluenote.com/artist/jutta-hipp/
Musikautomaten https://mfm.uni-leipzig.de/dt/dasmuseum/Publik_6onlinepub.php
Projekt besteht aus Bericht und Vorführung. Je 2 Personen sollen zusammenarbeiten. Bis KW 51 Gruppen/Themen nennen, bis KW 54 Abstract und Gliederung vorlegen. Zu Vorlesungsende abzugeben sind Bericht (PDF, ca. 10 Seiten) sowie Arbeitsversionen der Quelltexte und Audiodateien. Können bis Vorführung noch überarbeitet werden. Im Bericht sind individuelle Beiträge zu markieren, sonst gemeinsame Note.
Bewertet werden
Plan: was soll stattfinden, wie soll es wirken?
Inhalt: Bezug zu Themen, Methoden, Werkzeugen aus der Vorlesung, ggf. durch eigene Recherchen ergänzt
Form: wissenschaftliches Schreiben, vgl. Simon Peyton Jones:
Technik/Vorführung: stimmt mit Beschreibung überein, wurde geübt, ohne Verzögerungen präsentiert, Präsentation ist nachvollziehbar (Quelltexte, Befehle, Eingaben/Ausgaben sind live sichtbar)
KW 42 Einleitung
KW 43 Geräusch und Klang
KW 44 (Spektral)Analyse von Klängen
KW 45 Elektrische Oszillatoren und Filter
KW 46 Spannungs-gesteuerte Osz. und Filter
KW 47 Programme für Klänge
KW 48 Töne (Skalen), Harmonien
KW 49 (Algebraische) Komposition
KW 50 Performing with Patterns of Time
KW 51 Kombination von Mustern d. Fkt. höh. Ordnung
bis KW 51: Anmeldung der Abschlußprojekte
KW 54 Rhythmus, Breaks
KW 55 Algorithmische Komposition (lokal)
KW 56 Notensatz
KW 57 Algorithmische Komposition u. Analyse (global)