Instrument Synthesizer in C++

status:suspend

Diese Software ist erst in der Beta Phase und besitzt noch einige Bugs. Die grundlegenden Sachen funktionieren jedoch bereits. Im folgenden eine kurze Anleitung zur Benutzung:

Folgende Header sollten inkludiert werden:

#include "Sound.h"
#include "Metalanguage.h"

Die eigentliche Sound Programmierung erfolgt in einer Metasprache.

METALANGUAGE(\<INSTRUMENT>,\<BMP>,\<TONFOLGE>)

  1. \<INSTRUMENT> hat dabei einen der folgenden Werte: None,Guitar,Trump, Drums Je nach Wert werden zu den entsprechenden Tönen die passenden Obertöne hinzugemischt.
  2. \<BMP> hat folgende Werte: BMP60, BMP90, BMP120, BMP150, BMP180, BMP210, BMP240
  3. \<TONFOLGE> gibt die abzuspielenden Töne an. Die meisten Töne sind dabei vordefiniert:
    * ListenpunktDie Grundtöne sind C, Db, D, Eb, E, F, Gb, G, Ab, A, Hb, H
    * Eine nachgestellte 1 oder 2 entspricht der jeweiligen Oktave des Grundtons, so ist z.B C2 die 2 Oktave von C, eine nachgestellte 0 ergibt dagegen den Grundton eine Oktave tiefer.
    * Die Länge des Grundtons lässt sich über folgende Präfixe ändern: H für einen Halbton,V für einen Viertelton, E für einen Achtelton.

Operatoren

  1. Um Töne nacheinander auszugeben hängt man sie mithilfe des \< \< Operators hintereinander.
  2. Sollen diese dagegen zusammenerklingen (z.B. als Akkord) so benutzt man den + Operator.
  3. Ganz Tonfolgen können mehrfach ausgegeben werden mithilfe des * Operators z.B. ( C + E + A) * 3 \< \< (VC1 \<\< VE1 \< \< VA1) * 2
  4. Über die Operatoren ^x und |x kann eine ganze Tonspur/Tonfolge um eine Oktave erhöht bzw. erniedrigt werden
  5. Über die Operatoren * und / kann eine ganze Tonspur/Tonfolge verlängert oder verkürzt werden
  6. Der Operator % verändert die Lautstärke des Tons/ der Tonspur/Tonfolge, x>1 ist dabei lauter x\<1 leiser

Tonspuren aka Chunks

Ganze Tonspuren kann man erzeugen und abspeichern mithilfe des Makros: METALANGUAGE_CREATE_CHUNK(\<VAR>,\<INSTRUMENT>,\<BMP>,\<TONFOLGE>)

Abgespielt werden diese dann später mittels: METALANGUAGE_PLAY_CHUNK( \<VAR1> \< \< \<VAR2> + \<VAR3> )

In der METALANGUAGE_PLAY_CHUNK stehen die vordefinierten Töne nicht mehr zur Verfügung, die Tonspuren können jedoch weiterhin mit den bereits bekannten Operatoren manipuliert werden.