Aktionen: Versionen anzeigen
NoiseComp

Idee

Die Idee ist ein Software Synthesizer der es ermöglicht in Echtzeit in Java berechnete Sounds abszuspielen. So weit so gut und im Grunde auch nicht schwierig. Das besondere daran ist die Verschaltung der Sound-Module auf einer Zeitachse. Wie in einem klassischem Sound-Editor sollen die Module auf "Tonspuren" plaziert werden können.
Jetzt geht es los:

  • Die Parameter der Module können als Funktion der Zeit beeinflußt werden.
  • Die Ausgänge der Module können zueinander als Eingänge geschaltet werden (immer unter berücksichtigung der Zeitachse).
  • Die Module können zu Untermodulen gruppiert werden und wiederum "relativ" in anderen Modulen auf der Zeitachse platziert werden. So entstehen Hierarchien von Modulen die "wiederverwendet" werden können.

Der "Unterschied" zu den anderen Tonerzeugern liegt darin, dass alle Operationen auf einer (grafischen) Zeitachse stattfinden. Jeder Parameter ist also jederzeit über die Zeit zu beeinflussen.

Realisierung

Das ganze ist schon recht weit vorangeschritten und funktioniert auch schon ganz gut.

Berechungen

Da ein solch komplexes System natürlich (auch von Java ;-) nicht ganz in Echtzeit abgearbeitet werden kann, werden die Sounds vorberechnet und in Puffern abgelegt.

History

  • V1

Ursprünglich war es geplant die ganze Oberfläche "selbst" innerhalb eines grafischen Applets in der Tradition der MS-DOS MOD-Player zu programmieren.
Allerdings war das wohl eine Fehlentwicklung. Ich habe jetzt beschlossen eine Swing-Oberfläche zu verwenden.

  • V1.5

Zeitweilig ist das Applet in ein MDI Framework jmdiframework eingehängt worden. Aber da muss noch einiges getan werden.

  • V2

Momentan habe ich alles auf eine normale Swing Oberfläche umgeschrieben. Diese bietet die notwendigen Features und läuft nach Umschiffung aller "Feinheiten" ganz gut:

Anleitung

Die grundlegende Struktur ist folgende:

  • File
    • Generators
    • Folders
      • Modules
        • Timelines
          • Generators/ Sub-Modules
            • Inputs

File

Ein File ist ein im XML Format abgelegte Definition der oben genannten Inhalte mit der Endung "*.noiseComp.xml".
Ein File enthält ein Module das als "Main" definiert ist, welches beim laden angezeigt wird und den Song abspielt. Dieser setzt sich aus den darin enthaltenen Modulen, Sub-Modulen und deren Generatoren zusammen.

Generator

Die Generatoren sind die eingebauten Soundquellen zur Signal-Erzeugung und Signal-Beeinflussung.
Diese können, wie selbst definierte Module, verwendet werden, um ein Signal zu erzeugen.

Folder

Die Folder organisierst Du am besten so, das es beim späteren importieren in Deine eigenen Songs keine Namensüberschneidungen gibt.
Die Folder enthalten die Module und definieren deren eindeutigen Namensraum (Namespace).

Per Konvention gilt, dass folgende Haupt-Folder verwendet werden:

  • dums
  • synths

In diesen legst Du Deine eigenen Instrument-Modules in möglichst eindeutigen Sub-Foldern ab.

Module

Ein Module verwendet Genaratoren oder andere Moule eine Signalquellen.
Diese sind auf Timelines angeordnet und über Inputs miteinander verbunden.
Eines der Module ist das "Main" Modul. Dieses spielt den Song der Datei ab.
Ein Modul muss immer inen "Output"-Genertor haben. Dieser erzeugt das Ausgangssignal des Modules.

Timeline

Beim Anlegen einer Timeline sagst Du welcher Generator da drauf liegt (z.B. Sinus), dass ist dann die Funktion.
Den Generator legst Du als “Generator-Type” der Timeline fest.
Der darauf liegende Generator hat eine Start- und End-Position.
Die Generatoren werden dann über ihre “Inputs” verknüpft.
Wenn Du z.B. in dem Demo-Modul, das beim Start geladen wird, auf die “mixer” Timeline klickst, siehst Du welche Inputs er hat, also verschiedene Sinus- und Fader-Generatoren.

Inputs

Die Inputs jedes Genertors auf den Timelines legen die Eingangswerte fest. Diese sind normalerweise die Outputs anderer Generatoren in dem Modul.
Als Spezialfall sind die "Input-Types" eines Modules. Diese sind die nach aussen sichtbaren Eingänge eines selbst definierten Modules die bei dessen Verwendung als Generator wiederum als Inputs verwendet werden können (z.B. als Lautstärke, Frequenz, ... eines Instrumentes).

Features

  • Umfangreiches Sortiment von Generatoren (Sinus, Rectangle, Sawtooth, Triangel, Noise, ...), Filtern und Operatoren (Add, Mult, Cut, ...).
  • Definition von Modulen die als Eingang für eigene Module benutzt werden können. Die Die Module können eigene Eingänge definieren welche in den Modulen als Eingänge benutzt werden können.
  • Ordner (Folder) können die Module strukturieren um Namensüberschneidungen zu vermeiden.
  • Module können importiert werden, um Sounds, die in einem eigenen File liegen, zu verwenden.

Sourcen

NoiseComp ist in Java programmiert und steht im Quelltexte auf SourceForge zur Verfügung:

Download

Screenshots

Version 29 bearbeitet am {30.03.2011 22:14:30} von smk, Besitzer ist smk und die Berechtigungen sind eingeschränkt auf: Jeden