HowTo #1: Vectorwavetables (2D) für Modularsampler erstellen

Mr. Roboto

Mr. Roboto

positiv eingestellt
In einem anderen Thread kam die Bitte doch einmal zu beschreiben, wie und mit welchen Mitteln man 2D (also Vektor-) Wavetables erstellen kann. Daher hier ein etwas längeres HowTo dazu.

Vorab eine kurze Anmerkung: es geht hier nicht um Wavetables für die gängigen WT Synthesizer von z.B. Waldorf o.ä. (dafür gibt es raw2wt) sondern um Tables für digitale Samplermodule wie z.B. Piston Honda oder Döpfer A-112. Im Unterschied zum Döpfer Modul ist der PH in der Lage die Wellen per X- und Y-Achse (Hither und Yon) zu adressieren. Hier ist es also möglich, die komplette Matrix über zwei Steuerspannungen zu durchfahren. Mit einem Joystickmodul wie z.B. dem Choices von FoH ist es sogar möglich, darin kräftig "herumzurühren". Bei dem Döpfer Modul ist leider nur ein Eingang für die Steuerspannung vorhanden. Hier liegt also keine Matrix vor, deren Elemente man zweidimensional anwählen kann. Für die Erstellung der Wavetables ist das jedoch erst einmal nicht so wichtig.

Vorab sei noch erwähnt, daß diese Beschreibung ausschließlich für PCs, welche unter Windows laufen gedacht ist. Der Grund dafür ist, daß ein Großteil der benötigten Software nur für Windows erhältlich ist.

O.K., was braucht man also für Software? Ich empfehle die folgenden Programme (der DL-Link ist jeweils hinterlegt):
* Wave256 and Move256 editor
* Doepfer A-112 Sample dump loader
* Audacity Wave Editor
* FORMAT83 Binary Konverter (wird nur benötigt, falls EEPROMS gebrannt werden sollen)

So, dann kann es jetzt losgehen. Die Wellenformen welche erstellt werden sollen müssen ein bestimmtes Format aufweisen. Dies betrifft sowohl das Dateiformat als auch die Samplefrequenz, Bitbreite und Länge. Die finale Datei wird aus 256 Einzelwellenformen mit einer jeweiligen Länge von 256 Bytes (!) bestehen. Also eine Gesamtlänge von 65.536 Samples. Die Frequenz beträgt 44.1 KHz (wobei dies für die u.a. Methode völlig irrelevant ist) und die Bitbreite ist 8 bit. Selbstverständlich hat die Datei ein Monoformat aufzuweisen.

Zuerst einmal müssen nun passende und interessante Wellenformen gesucht oder erstellt werden. Natürlich besteht die Möglichkeit 256 Wellenformen zu suchen und diese aneinanderzuhängen. Wie dies funktioniert soll hier ersteinmal beschrieben werden:
Um mal gleich eine gute Basis für mögliche Wellenformen zu erhalten kann ich die Demo Wellenformen für die "Architecture Waveforms 2010" von Galbanum empfehlen. Bei diesen Wellenformen ist unbedingt zu beachten, daß sie nicht zu kommerziellen Zwecken weitergegeben werden dürfen. D.h., Musik damit machen ist erlaubt, EEPROMS mit diesen Wellenformen verkaufen nicht. Es kann jedoch ggf. eine Extralizenz dafür erworben werden.

Die erste Hürde die es nun zu bewältigen gilt ist die Tatsache, daß alle Wellenformen für die spätere Verwendung im A-112 oder PH, etc. auf eine Länge von exakt 256 Bytes gebracht werden müssen. Am besten geht dies mit Wellenformen welche ein Vielfaches von 256 Bytes lang sind. Eine Sample mit eine Länge von 4096 Bytes kann meistens noch recht gut heruntergerechnet werden. Selbstverständlich können auch längere Samples "kleingemacht" werden. Es sollte jedoch keiner erwarten die Neujahrsansprache des Bundespräsidenten auf 256 Byte quetschen zu können. Die o.a. Architecture Waveforms 2010 haben eine Länge von 4096 Samples und können größtenteils sehr gut verkleinert werden.
Hierzu wird die Wellenform in Audacity geöffnet. Zuerst wird die Einheit zur Anzeige des Samplegröße ("Ende", nicht "Länge") auf "Samples" eingestellt. Springt man nun im Sample mit der "End"-Taste auf das letzte Sample, wird am unteren Bildrand die Samplenummer angezeigt.
Aus dem Effekt-Menü wird nun der Punkt "Geschwindigkeit ändern" ausgewählt und ein Wert von 700% eingestellt. Nach dem Anwenden des Effekts ist ein ehemals 4096 Byte langes Sample nun nur noch 256 Bytes lang. Selbstverständlich hat sich die Tonhöhe ebenfalls geändert. Anschließend sollte die Datei gespeichert werden.
Diese Vorgehensweise wird nun für alle 256 gewünschten Wellenformen angewendet. Ist dies geschehen, müssen die Dateien noch ihrer gewünschten Reihenfolge im späteren Wavetable benamt werden. Es sollten dem Dateinamen also dreistellige Zahlen vorangestellt werden (000 bis 256).
Ist all dies geschehen wird Audacity erneut geöffnet und sämtliche zuvor erstellten Dateien per Drag & Drop aus dem Explorer hineingezogen. Dies kann einige Sekunden dauern. Nun wird das zweite Sample ausgewählt (einfach links auf die Infosektion des Samples klicken) und per Ctrl-C kopiert. Nun wird das erste Sample angewählt, zum Ende gesprungen und per Ctrl-P das andere Sample einkopiert. Anschließend wird das zweite Sample geschlossen, das dritte angewählt und so weiter. Am Ende wird das neue Sample mit einer Gesamtlänge von 65.536 Samples unter einem anderen Namen exportiert. Anschließend erfolgt noch ein weiterer Export im 8-bit (!) Format.

Diese Datei kann nun von der Döpfer Samplersoftware ohne weiteres gelesen werden. Soll die Datei wie im nächsten Abschnitt beschrieben weiterverarbeitet werden, so muß sie in der Software wieder im "binary" Format und der Endung ".256" abgespeichert werden.

Nun bietet der so erstellte Wavetable noch nicht die Möglichkeiten eines Vektorwavetables. Wird solch eine WT in ein PH geladen und per Joystick angesteuert, erhält man beim bewegen des Sticks jedesmal einen harten Übergang. Ein kräftiges "rühren" im WT wird also ein mehr oder weniger hartes Gebratze und Gebritzel erzeugen. Manch einem mag das evtl. schon reichen. Nichtsdestotroz soll hier nun noch die Möglichkeit beschrieben werden ein wesentlich sanfteres Durchfahren der WTs zu ermöglichen.
Das Zauberwort hier heißt "morphen". Es geht darum, daß angrenzende Wellenformen gemorpht werden. Was eine Waldorf WT-Engine also automatisch in Echtzeit berechnet wird für dieses Tutorial nun manuell, offline vorgenommen. Im Gegensatz zu der o.a. Methode benötigen wir nicht 256 einzelne Wellenformen sondern wesentlich weniger. Maximal 64, sinnvoller ist jedoch ein Anzahl zwischen 4 und 16. Diese Grundwellenformen sollten sich schon etwas stärker unterscheiden. Nach dem Auswählen der gewünschten Wellenformen werden diese nun ordentlich benamt und in einem Ordner gespeichert. Für den nun folgenden Morphingprozess ist es das beste sich eine Matrix von der Größe 16x16 aufzumalen. Sehr gut kann man dies auch in Excel bewerkstelligen. Die vorher ausgewählten Wellenformen werden nun in dieser Matrix platziert. Wenn z.B. vier Wellenformen vorliegen, so legt man diese auf die Positionen 1-1, 1-16, 16-1 und 16-16. Weitere Wellenformen werden ggf. dazwischen positioniert (vier weiter auf 1-9, 9-1, 9-16, 16-9). Diese Grafik dient dazu im späteren Morphingprozess den Überblick über den Inhalt der einzelnen Zellen zu behalten.
Nun kommt die o.a. Move256 Software zu Einsatz. Falls die vorher erstellte Datei bereits alle gewünschten Wellenformen enthält, kann das Programm gleich gestartet werden. Falls dies nicht der Fall sein sollte, muß nach obiger Methode erst eine neue Datei erstellt werden. Hierzu werden die jeweiligen Wellenformen aneinandergehängt wobei jedoch zu beachten ist, daß entsprechende leere Wellenformen eingefügt werden. Um beim o.a. Beispiel zu bleiben: die ersten 256 Bytes enthalten die erste Wellenform. Dann folgen 14 mal 256 Bytes mit Nullwerten (also leeren Wellenformen). Dann die zweite Wellenform (Matrixposition 1-16). Anschließend wieder 224 (also 14 x 16) mal 256 Nullwerte, dann die dritte Wellenform, 14 mal 256 leere Bytes und schließlich die vierte Wellenform (Position 16-16).
Die so erstellte Datei muß nun nicht mehr in Move256 eingeladen werden. Dies ist nur notwendig, wenn aus einer vorhandenen Wellenformdatei eine neue erzeugt werden soll. Hier werden dann einzelne Wellenformen extrahiert und in einer neuen Datei entsprechend positioniert.

Wenn die Datei mit den Grundwellenformen nun also vorliegt, so muß diese in Wave256 eingelesen werden. Jetzt beginnt die eigentliche und sehr zeitraubende Arbeit. Bei der Software ist zu beachten, daß sowohl die Bänke (also die Position auf der Y-Achse) als auch die Wellenformen bei 0 und NICHT bei 1 beginnen. Dementsprechend ist der letzte Wert auch 15 und nicht 16. Bei vier Wellenformen ist der Morphingprozess noch überschaubar. Glücklicherweise kann hier auf die "Bank Morph" Funktion zurückgegriffen werden. Dazu wird zuerst einmal unter dem Display die Bank 0 und die WF 0 eingestellt. In der "Wave to morph" Sektion werden die Werte 0 und 15 eingestellt. Nach dem Drücken des "Bank Morph" Buttons ist die gesamt Bank 0 mit gemorphten Wellenformen gefüllt. Das gleiche wird nun für die letzte Bank vorgenommen. Also von Bank 15-0 "to" 15-15. Es sind nun als zwei Bänke populiert. Leider ist es nicht möglich ein Bank morphing auf der Y-Achse vorzunehmen. Dies ist lediglich für Bänke, also auf der X-Achse möglich. Daher ist das Morphen von den Positionen 0-0 zu 15-0 sowie 0-15 zu 15-15 etwas aufwändiger.
Hierzu wird in 14 einzelnen Steps ein manuelles Morphing vorgenommen. Zuerst einmal müssen jedoch die einzelnen Wellenformen der Bank Nr. 0 auf die Bänke 1 bis 14 kopiert werden. Am einfachsten funktioniert dies, indem man das Set jetzt speichert und mit dem Programm Move256 die Kopiervorgänge vornimmt. Es ist jedoch auch möglich dies im Wave256 Programm zu tun. Dies ist jedoch wesentlich umständlicher.
In Move256 werden also die WF in 1-1 (in Move256 ist der erste Indexwert für die Bänke und die WF nämlich verwirrenderweise 1 und NICHT 0 wie in Wave256) auf 2-1, 3-1 bis 15-1 kopiert. Die WF in 16-1 bleibt bestehen. Dann geht es weiter mit 1-2 auf 2-2, 3-2 etc. Nachdem sämtliche Kopiervorgänge abgeschlossen wurden, muß die Datei gespeichert und wieder in Wave256 geöffnet werden.
Hier nun beginnt der manuelle Step by Step Morphprozess. Zuerst wird die WF in 0-1 (nicht 0-0 !) angewählt. Als "Wave to morph" wird 0-15 eingestellt. Der Regler "Morph Amount" wird nun ein klein wenig nach rechts gerückt. Im Display ist die neue Wellenform zu erkennen. Anschließend wird diese mit einem Klick auf den "Lock Changes" Button festgelegt. Nun wird die Wellenform in 0-2 angewählt. Die Zeilwellenform bleibt gleich, jedoch wird der Regler ein klein wenig weiter nach rechts geschoben. Das Ganze wird bis zur WF in 0-14 wiederholt. Der Regler wird für diese "Zelle" fast bis zum Anschlag nach rechts geschoben. Der gesamte Vorgang wird nun für jede Spalte der Matrix wiederholt.
Der Vorgang ist recht zeitintensiv kann jedoch mit einem tollen Wavetableset belohnen.

Egal welche der beiden Methoden (256 verschiedene Wellenformen oder ein Morphset aus wenigen WF) nun verwendet wurde: die Daten müssen nun noch zum Modul geschickt werden.
Sollen die Wellenformen in das Döpfer A-112 Modul eingelesen werden, so ist die Döpfer Software in der Lage die mit Hilfe von Wave256 erstellte Datei einzulesen (auf "binary" umschalten) und sie an den über Midi angeschlossenen Sampler zu senden.
Soll jedoch ein EEPROM für den PH von Harvestman gebrannt werden, so muß die Datei noch mit FORMAT83 (Commandlinetool, sh. Softwareliste) in das Binärformat gewandelt werden. Die im zip-Packet enthaltene Read.me Datei enthält weitere Angaben zur Synthax. Ein wichtiger Punkt ist, daß die Döpfer Software NICHT in der Lage ist, die Binärkonvertierung durchzuführen. Es ist zwar möglich Dateien im *.bin-Format zu speichern, dieses kann jedoch nicht zum brennen von EEPROMS verwendet werden!

In einem weiteren HowTo kann ich dann gerne noch beschreiben, wie die mit o.a. Methode erstellten Wavetables auf ein EEPROM für den Piston Honda von Harvestman gebrannt werden.

Ich hoffe den Modularbesitzern einige interessante Tips gegeben zu haben und freue mich schon auf tolle neue Sounds mit euren selbsterstellten Wavetables.
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

cooles Tutorial :supi:
Scheint mir alles enorm viel manuelle Arbeit zu erfordern (ich meine stumpfes copy/paste, eben kram, den man gern automatisiert hätte), aber das hilft schonmal weiter. Jetzt muss ich mir nur noch endlich nen Piston Honda besorgen. Das Tutorial zum EEPROM-brennen würde mich auch interessieren. :)

mfg,
Mirko
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

Ja, viel stumpfe Arbeit, das stimmt. Gibt da aber leider wenig, was man automatisieren kann. Man könnte natürlich eine eigene Software schreiben, die sagen wir mal 16 Samples nimmt, diese konvertiert, eine Morphmatrix erstellt, einen Wavetablefile erzeugt und gleich im entsprechenden Format abspeichert.
Da die Zahl der Anwender recht gering wäre, habe ich jedoch keine Lust darauf, so etwas zu programmieren.
Ein PH EEPROM mit einem gemorphten Wavetable zu erzeugen dauert locker mal einen kompletten Arbeitstag. :sad:
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

Wow, vielen Dank :D ! Ich hätte nicht gedacht dass das so aufwendig ist.

Ein Freund zeigte mir eine Video-Effekt-Software (Resolume). Um sich selber interessante Überblendeffekte zu basteln konnte man in MSpaint schwarz-weiss-50%grau Grafiken aller Art erstellen und in der Software als *.bmp Datei verwenden.

So ging mein erster Gedanke beim Wavetable basteln auch in diese Richtung...
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

gute Anleitung.

Leider finde ich in der wiard wave256 Applikation kein save as "binary" , hab nur 256 zur Auswahl.
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

die prozedur wird wohl eher schlecht mit dem quantix funktionieren oder? bisher schlugen alle meine versuche etwas in die software zu importieren fehl :sad:
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

danke für die erklärung!!
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

danke dir Mr. Roboto.



a.xul schrieb:
die prozedur wird wohl eher schlecht mit dem quantix funktionieren oder? bisher schlugen alle meine versuche etwas in die software zu importieren fehl :sad:
du bist dir bewusst dass die V1 bzw. V1,1A docs fehler drin hatten ?
wurde anfang 2011 geändert http://m.bareille.free.fr/modular1/quan ... 8_hard.htm
sieh am besten hier: http://modularsynthesis.com/papareil/qu ... antix8.htm
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

siebenachtel schrieb:
danke dir Mr. Roboto.



a.xul schrieb:
die prozedur wird wohl eher schlecht mit dem quantix funktionieren oder? bisher schlugen alle meine versuche etwas in die software zu importieren fehl :sad:
du bist dir bewusst dass die V1 bzw. V1,1A docs fehler drin hatten ?
wurde anfang 2011 geändert http://m.bareille.free.fr/modular1/quan ... 8_hard.htm
sieh am besten hier: http://modularsynthesis.com/papareil/qu ... antix8.htm

Bezug? Habe nie gesagt dass mein Modul nicht funktioniert. Die mitgelieferten wavetables von Marc funktionieren auch wunderbar. Nur habe ich es noch nicht geschafft in die Software zum quantix fuer das transferieren etwas selbstgebasteltes bzw. Etwas konvertiertes zu importieren.
 
Re: HowTo #1: Vectorwavetables (2D) für Modularsampler erste

Mr. Roboto schrieb:
Wenn die Datei mit den Grundwellenformen nun also vorliegt, so muß diese in Wave256 eingelesen werden. Jetzt beginnt die eigentliche und sehr zeitraubende Arbeit. Bei der Software ist zu beachten, daß sowohl die Bänke (also die Position auf der Y-Achse) als auch die Wellenformen bei 0 und NICHT bei 1 beginnen. Dementsprechend ist der letzte Wert auch 15 und nicht 16. Bei vier Wellenformen ist der Morphingprozess noch überschaubar. Glücklicherweise kann hier auf die "Bank Morph" Funktion zurückgegriffen werden. Dazu wird zuerst einmal unter dem Display die Bank 0 und die WF 0 eingestellt. In der "Wave to morph" Sektion werden die Werte 0 und 15 eingestellt. Nach dem Drücken des "Bank Morph" Buttons ist die gesamt Bank 0 mit gemorphten Wellenformen gefüllt. Das gleiche wird nun für die letzte Bank vorgenommen. Also von Bank 15-0 "to" 15-15. Es sind nun als zwei Bänke populiert. Leider ist es nicht möglich ein Bank morphing auf der Y-Achse vorzunehmen. Dies ist lediglich für Bänke, also auf der X-Achse möglich. Daher ist das Morphen von den Positionen 0-0 zu 15-0 sowie 0-15 zu 15-15 etwas aufwändiger.
Hierzu wird in 14 einzelnen Steps ein manuelles Morphing vorgenommen. Zuerst einmal müssen jedoch die einzelnen Wellenformen der Bank Nr. 0 auf die Bänke 1 bis 14 kopiert werden. Am einfachsten funktioniert dies, indem man das Set jetzt speichert und mit dem Programm Move256 die Kopiervorgänge vornimmt. Es ist jedoch auch möglich dies im Wave256 Programm zu tun. Dies ist jedoch wesentlich umständlicher.
In Move256 werden also die WF in 1-1 (in Move256 ist der erste Indexwert für die Bänke und die WF nämlich verwirrenderweise 1 und NICHT 0 wie in Wave256) auf 2-1, 3-1 bis 15-1 kopiert. Die WF in 16-1 bleibt bestehen. Dann geht es weiter mit 1-2 auf 2-2, 3-2 etc. Nachdem sämtliche Kopiervorgänge abgeschlossen wurden, muß die Datei gespeichert und wieder in Wave256 geöffnet werden.
Hier nun beginnt der manuelle Step by Step Morphprozess. Zuerst wird die WF in 0-1 (nicht 0-0 !) angewählt. Als "Wave to morph" wird 0-15 eingestellt. Der Regler "Morph Amount" wird nun ein klein wenig nach rechts gerückt. Im Display ist die neue Wellenform zu erkennen. Anschließend wird diese mit einem Klick auf den "Lock Changes" Button festgelegt. Nun wird die Wellenform in 0-2 angewählt. Die Zeilwellenform bleibt gleich, jedoch wird der Regler ein klein wenig weiter nach rechts geschoben. Das Ganze wird bis zur WF in 0-14 wiederholt. Der Regler wird für diese "Zelle" fast bis zum Anschlag nach rechts geschoben. Der gesamte Vorgang wird nun für jede Spalte der Matrix wiederholt.
Der Vorgang ist recht zeitintensiv kann jedoch mit einem tollen Wavetableset belohnen.

Dieser Abschnitt könnte mit dem kleinen Batchtool hier vereinfacht werden: INTERPOL256

Das Programm liest 8BIT Unsigned Dateien mit exakt 65536 Bytes Länge und *.256 Endung. Also genau den Output von Wave256. Die Leerstellen können sich dabei an beliebigen Positionen befinden und von beliebiger Anzahl sein.

INTERPOL256 ist ein Batchtool, d.h., ihr könnt eine oder mehrere Dateien per DragDrop auf die Anwendung ziehen und dann rappelt Interpol los. Zu jeder Quelldatei wird eine neue Zieldatei erstellt, die den Originalnamen enthält und auf "_filled.256" endet. Ich hoffe, das spart Euch ein paar Stunden Arbeit.

Wenn's funzt, bitte weiterreichen. Wenn nicht, bitte Meldung an mich. Happy Morphing! :lol:
 


News

Zurück
Oben