Signalsynthese Assampler - Zusammenklicken: Sinustongenerator, Exponentialkurve, Verstärker - funktionale Programmierung mit Bedarfsauswertung! - Rechnen mit physikalischen Einheiten - Probleme: - Aufteilen von Signalstrom (Gabelung, Sharing) - keine Rückkopplung - besserer Abgleich von Abtastrate und Amplitude - Umgang mit Zufallszahlen, kohärentes Rauschen - Übersicht behalten, Modularisierung - flexiblere Automatisierung (Beispiel: Mehrbandvocoder) - Musikarrangement Warum Signalverarbeitungsalgorithmen perfekt mit funktionaler Programmierung und Bedarfsauswertung beschrieben werden können: - Laziness für Streaming - Laziness für Rückkopplung - Gabelungen (Sharing) - Analogie: Typenabgleich und Abstimmung von Abtastrate und Aussteuerung Vorführung: - Geräusche mit Haskell direkt berechnen (nicht Echtzeit) - Geräusche in Echtzeit mit SuperCollider Musikarrangement Haskore von Paul Hudak "Haskell School of Expression" - Algebra der Musik - sequentielle und parallele Komposition - Gesetze - Fortschritt seit SoundTracker: Formulierung von Ideen, kein Copy&Paste - Kombination von Musikarrangement und Signalerzeugung in einer Sprache besonders mächtig Vorführung: automatisch generierte Musik und Kompositionshilfen - regelmäßige und doch ungleichförmige Muster - Musik aus Markov-Ketten - Gitarrenakkorde verschiedene Backends - Haskell-Renderer (Konservenbeispiele) - MIDI-Dateien - CSound - SuperCollider (HSC von Rohan Drape) Was bleibt zu tun? - brauchbarer Abgleich der Klangparameter (Inferenz) - Echtzeit-Synthesizer mit ByteString&Co. - mehr Interaktivität: - Klangausgabe bei Tastendruck - Hervorhebung aktuell gespielter Note bei Wiedergabe Zusammenfassung: In dem Vortrag soll vorgeführt werden, wie Haskell für musikalische Zwecke eingesetzt werden kann. Haskell eignet sich sowohl für die Berechnung von Klängen, als auch für das Zusammensetzen von Klängen zu Musikstücken. Es wird demonstriert, wie man mit Haskell direkt Klänge berechnet und wie man mit Haskell den Softwaresynthesizer SuperCollider steuert. Außerdem wird gezeigt, wie man mit der Haskell-Bibliothek Haskore Musikstücke arrangiert, und diese über verschiedene Klangerzeuger wiedergibt (Haskell-Synthesizer, MIDI, CSound, SuperCollider). Beispiel für Inference-Monad in Presentation.hs SuperCollider-Life: Resonanz (Y-Verzerrung (Phaser Sägezahn)) Zufallsbimmelei angepasst auf Akkord mit Rechteckkurve gesteuerter Filter oder Verstärker Rhythmus-Muster und Trommeln