Kategorie: Programmierung Seite 3 von 5

Csound Tutorial #04 – Frequenzen in Oktaven und Halbtönen, sowie Amplitude in dB…

Wie wir bisher gesehen haben, benötigt ein Oszillator die Frequenz immer in Hertz-Angaben (Hz), genauso muss die Amplitude immer in einer rohen Form (von 0 bis 32.767) angegeben werden. Das ist nicht gerade sehr komfortabel, denn wir drücken unsere Noten nun mal selten in Frequenzen aus, sondern eher in Oktaven und Halbtönen. Csound besitzt dafür einen Tonhöhen Konverter (pitch converter), der die Hertz-Zahl aus einer gegebenen Oktave und Tonhöhenklasse ermittelt (octave point pitch class).

Diese octave point pitch class Darstellung (pch) besteht aus einer Integer-Zahl, die die Oktave angibt und einem Dezimalteil, der die Halbtöne angibt. Die Oktave, die das mittlere C (261,63 Hz) enthält, wurde mit der Zahl 8 festgelegt. Deshalb:

8.00=middle C (261,63Hz)
8.01=C# (277,63Hz)
8.02=D (293,67Hz)
8.03=D# (311,13Hz)
7.09=A below middle C (220Hz)
8.09=A above middle C (440Hz)
9.00=C an octave higher than middle C (523,25Hz)
5.00=the lowest C of a piano (32,7Hz)

Weiterlesen

Wenn man zuhause bleiben muss, kann man die Zeit auch nutzen und einfach mal eine Programmiersprache erlernen … 6 Gründe um Python zu lernen

Die aktuelle Situation aufgrund von Covid-19 zwingt uns zuhause zu bleiben. Auch wenn viele Menschen noch regelmäßig zur Arbeit gehen, bleibt ein Großteil der Freizeitaktivitäten erstmal aus. Was tun, wenn man das Haus möglichst nicht verlassen sollte? Langweilig wird uns sicherlich nicht, im Zeitalter von Streaming und Smartphones. Aber ist das eine gute Wahl, den Großteil des Tages Simpsons zu schauen? (Eventuell…)

Ich für meinen Teil nutze das Plus an eingeschränkter Freizeit mit dem Erlernen einer neuen Programmiersprache: Python! Zuletzt habe ich mit Csound eine spezielle Sprache für Sound und Synthese in Angriff genommen, aber ich vermisse eine nette Sprache für die „breite“ Programmierung. Eine „breite“ Sprache ist eine, die auf keine besondere Spezialisierung abzielt. Csound, Pure Data und SuperCollider sind Sprachen speziell für Sound- und Audio-Anwendungen; PHP und JavaScript sind für’s Web und LaTeX und HTML sind speziell entwickelt worden um Texte zu verarbeiten oder darzustellen.

Zu den allgemeinen, „breiten“ Sprachen zählen C++, Java, C#, Visual Basic, Perl, Assembler und viele mehr. Warum dann ausgerechnet Python lernen?

Python (Quelle: morioh.com)

Weiterlesen

Csound Tutorial #02 – Mehr über Instrumente, Funktionen und Routinen…

Im letzten Teil habe ich Grundlegendes zu Instrumenten und deren Kompositionen (Scores) geschrieben, diesmal möchte ich auf ein paar weitere Details hierzu eingehen.

Die GEN10 Routine

Das letzte mal habe ich die GEN10 Routine benutzt, um eine simple Sinuswelle zu erzeugen. Man kann aber noch viel mehr mit dieser Routine anstellen. Ich könnte beispielsweise ein Funktion mit fünf harmonisch verknüpften Sinuswellen erstellen, einfach indem ich die 1 fünf mal hinter den GEN Typen schreibe.

f1  0  4096  10   1    1    1    1    1

Alle Partiellen haben dieselbe Amplitude. GEN10 erstellt ausschließlich harmonische Komponenten, somit müssen wir der Routine nicht extra sagen, dass die Relationen harmonisch sein sollen. Wenn ich im Instrument also die Grundfrequenz ändere, werden automatisch alle Partiellen angepasst. Z.B. wenn die Grundfrequenz 220Hz beträgt, dann wird die zweite Harmonische 440 und die dritte 660 sein. Wenn wir die Fundamentale nun auf 100Hz ändern, wird die zweite zu 200 und die dritte zu 400 geändert.

Weiterlesen

Csound Tutorial #01 – Von Orchestern und Kompositionen…

Um in Csound Sound zu generieren, muss der Programmierer eine Textdatei erstellen. Die .csd Datei. In dieser Datei sind zwei grundlegende Bestandteile enthalten:

  1. Das Orchester (Orchestra)
  2. Die Komposition (Score)

In älteren Versionen der Programmiersprache wurde diese beiden Komponenten in zwei unterschiedliche Dateien geschrieben (.orc und .sco), aber mittlerweile sind es einfach zwei verschiedene Abschnitte in der Csound Datei. Sie beschreiben zum einen aus welchen Komponenten unser virtuelles Instrument (Orchestra) besteht und zum anderen die Operationen, die wir mit ihm ausführen wollen (Score). Es bestünde aber immer noch die Möglichkeit, die Teile in zwei unterschiedliche Dateien unterzubringen.

Das Grundgerüst einer .csd Datei besteht also aus einem oder mehreren Instrumenten und einem Score. Außerdem gibt es vorher noch einen Abschnitt, in dem gewisse Einstellungen vorgenommen werden können. Diese drei Bestandteile werden in den <CsoundSynthesizer> Block geschrieben. Alles was innerhalb dieses Blocks beschrieben wird, wird nachher auch verarbeitet.

Weiterlesen

Csound – Eine Programmiersprache für Sound Design, Synthese und Komposition…

Csound wurde in 80ern des letzten Jahrhunderts von Barry Vercoe am Massachusetts Institute of Technology (MIT) entwickelt. Im Grunde ist Csound ein direkter Nachfahre der ersten Programmiersprache für elektronische Musik von Max Mathews: Music N. Csound ist kostenlos und wird unter der LPGL Lizenz verbreitet. Das System wird von einer Handvoll Entwickler gepflegt und erweitert und außerdem von einer großen Community unterstützt.

Es gibt nur wenige Dinge, die man mit Csound in Bezug auf Audio nicht anstellen kann. Csound kann Audiomaterial offline rendern oder in Echtzeit eingesetzt werden. Es kann mithilfe von MIDI oder OSC gesteuert werden und es gibt eine riesige Sammlung an Tools zur Sound Synthese und zum Verbiegen von Sounds.

CsoundQT – Ein Frontend für Csound (Quelle: csound.com)

Weiterlesen

Das nächste Jahr wird etwas tiefer…

Der Weihnachtswahnsinn ist geschafft. Obwohl es in den letzten Wochen hier etwas ruhiger war, habe ich trotzdem so einiges an neuer Software ausprobiert. Ich muss aber zugeben, dass mich 80% der neuen Instrumente und Effekte eher gelangweilt haben. Viele neue polierte und grafisch aufwendige, aufgeblasene Produkte, die manche Dinge sicherlich leichter machen … aber nicht besser.

Aus diesem Grund habe ich über die Feiertage beschlossen mal wieder etwas zurück zu treten. Ich will mein persönliches Setup etwas herunterzufahren, mehr experimentieren, Dinge besser verstehen und wieder etwas mehr in die Tiefe gehen. Dazu passt hervorragend der großartige Artikel von vor zwei Jahren, der auf David Cain’s Blog zu finden ist.

Dort geht es um ein tiefes Jahr. Ein Jahr in dem keine neuen Dinge angefangen, keine Bücher gekauft, keine neuen Hobbies begonnen und kein weiteres Equipment angeschafft wird. Es geht darum, dass man wieder Nutzen in den Dingen sucht, die man bereits besitzt und die Dinge zu Ende bringt oder voran bringt, die man bereits angefangen hat.

Endlich besser an der Gitarre werden, anstatt mit dem Piano anzufangen, Die Bücher zu Ende lesen oder erneut durchzuarbeiten, die seit langem im Regal stehen und die Vinylsammlung wirklich mehr zu schätzen lernen, anstatt ständig neue Platten zu sammeln.

Genau wie David es in seinem Artikel ausdrückt, soll es darum gehen „tiefer zu gehen, anstatt breiter“. Man kehrt den neuen angepriesenen Dingen, denen man eventuell im Netz begegnet einfach mal den Rücken zu, ignoriert sämtliche Software Updates und beschäftigt sich mit der Vielzahl an Möglichkeiten, die man bereits um sich hat. Wenn man sich solch ein „tiefes“ Jahr einfach mal vorstellt … eine Handvoll Interessen, die eventuell gemeistert wurden, anstatt dutzende von halbherzig neu begonnenen Dingen, die nach kurzer Zeit liegen gelassen werden und abgelöst wurden. Man müsste wieder lernen ohne die kleinen Dopamin-Spritzen auszukommen, die man sich verabreicht, wenn etwas Neues ausprobiert oder gekauft wird.

Für mich persönlich bedeutet das konkret, dass ich wirklich wieder intensiver Gitarre spielen will, mich mit nur einer DAW beschäftigen und keine weiteren Plugins anschaffen will. Außerdem will ich mich endlich weiter mit der Programmierung von Effekten befassen und dazu tiefer in Csound eintauchen.

Ich gehe sogar noch einen Schritt weiter und beschränke mich mit Tropone nur noch auf eine DAW (plus Csound, VCV Rack und meine Gitarren-Amp-Emulation). Ich schränke mich also bewusst ein, damit ich genötigt bin mich mit den vorhandenen, einfacheren Mitteln intensiver zu beschäftigen. 2020 kann also kommen…

Pure Data #01 – Wie funktioniert Pure Data?

Die Programmierung mit Pure Data kann man sich als eine Art Datenfluss vorstellen, weil die Daten mithilfe von Verbindungen von Objekt zu Objekt fließen. Der Ausgang eines Objekts mündet im Eingang eines anderen… usw.

Die Hilfe-Datei eines OSC~ Objektes…

Objekte

Objekte in Pure Data sind einfache Boxen. Daten oder Signale geht hinein und ebenso wieder hinaus. Damit das funktioniert benötigen diese Objekte Eingänge (Inlets) und Ausgänge (Outlets). Inlets befinden sich oben am Objekt und die Outlets dementsprechend unten. Sie werden als klitzekleine Rechtecke and den Kanten der Objekte dargestellt.

Weiterlesen

Pure Data – Visuelle Open Source Audioprogrammierung

Ich habe hier schon öfters über verschiedene Programmierumgebungen zum Erstellen von Synths, Effekten oder Sequenzern geschrieben, ob es nun Max/MSP, SuperCollider, JUCE/C++ oder auch VCV Rack (obwohl das Rack keine wirkliche Programmierumgebung ist … naja) war. Eine Programmiersprache habe ich aber noch nie aufgegriffen, und das ist Pure Data.

Pure Data oder Pd wurde Anfang der 90er Jahre von Miller Puckette entwickelt und sollte zur Erzeugung von interaktiver Computermusik dienen. Puckette hat ebenfalls Max entwickelt, dass später dann zu MSP und kommerziell wurde. Pd ist immer ein freies Open Source Projekt geblieben und wurde seitdem stets erweitert.

Pure Data – Beispielpatch (Quelle: YouTube)

Weiterlesen

Audio Programmierung – Teil 01: Ein Einstieg mithilfe von VCV Rack

VCV Rack habe ich hier des öfteren schon erwähnt, gelobt und gefeiert. Auch habe ich damals etwas dazu geschrieben, wie man das Rack selbst kompiliert und das Template-Modul verwendet, um eventuell eigene Module zu programmieren.

Da ich im letzten Jahr endlich mein Hochschulkurs in C++ erfolgreich abgeschlossen habe, wird es jetzt mal höchste Zeit das Erlernte anzuwenden und zu vertiefen. Aus diesem Grund starte ich in diesem Jahr mit der Audio Programmierung – Serie. Ziel soll hier sein, eigene VST Plugins mithilfe des JUCE-Frameworks zu entwickeln.

Zunächst einmal will ich aber VCV Rack nutzen. Denn ich denke das Rack ist ein hervorragendes Framework für den Einstieg in die Audio Programmierung. Leider gibt es nicht allzu viele Tutorials, die einem hierzu an die Hand nehmen. Und auch wenn Andrew Belt, der Hauptentwickler von VCV Rack einiges getan hat, damit C++ Entwickler möglichst unkompliziert eigene Module entwickeln können, fehlt es doch an echten Anleitungen. Genau hier setzt diese Blogserie an.

The Rack…

Weiterlesen

ORCA – Ein Sequenzer, der kryptischer nicht aussehen kann … und ein Versuch einer Anleitung

Vor ein paar Tagen schreibe ich noch etwas Minimalismus in Bezug auf die Auswahl der Tools und heute komme ich mit einem neuen Sequenzer daher. Aber ORCA hat mich dermaßen von den Socken gehauen, dass dieses Tool in meinen Werkzeugkasten muss.

Wenn man ORCA startet sieht man erstmal … nix!

Ich weiß garnicht wo ich anfangen soll. Ich starte mal ganz von vorne. ORCA wurde im Sommer letzten Jahres von dem Kreativduo Hundred Rabbits veröffentlicht. Dieses Duo sind Rekka und Devine, einer Illustratorin / Autorin und einem Programmierer / Musiker, die Hundred Rabbits auf See betreiben … sie sind nämlich mit dem Segelboot unterwegs und wohnen auch auf diesem. Ja, so schön kann ein Developer Leben sein…

Weiterlesen

Präsentiert von WordPress & Theme erstellt von Anders Norén