Entwickler-Ecke
Open Source Projekte - BlitzTracker - ein einfacher Synthesizer/Tracker
Martok - So 29.10.06 19:36
Titel: BlitzTracker - ein einfacher Synthesizer/Tracker
Hier also mein aktuelles Projekt.
Nach dem Lesen
dieses Tutorials [
http://wiki.delphigl.com/index.php/Tutorial_Software-Synthesizer] von Delphic/Nico Michaelis, und nach dem Testen der mitgelieferten Samples hab ich mich auch mal dran gemacht, einen einfachen Tracker zu schreiben. Dabei kam richtiges C64/Amiga Feeling auf....
Mithilfe Midi-ähnlicher Tracker-Dateien werden in Echtzeit die Lieder abgespielt, die man mehr oder weniger komfortabel erstellt hat.
Zur Technik: die Events(Note An/aus usw.) werden in verschiedenen Tracks erstellt. Vor dem Abspielen mithilfe der fmod-dll werden die Tracks vorkompiliert, damit man damit was anfangen kann. Instrumente gibts im Moment folgende:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Synth_Instr_Sine = $0000; Synth_Instr_Triangle = $0001; Synth_Instr_Sawtooth = $0002; Synth_Instr_Pulse = $0003; Synth_Instr_Noise = $0004; Synth_Instr_Piano = $0100; Synth_Instr_Clavinet1 = $0101; Synth_Instr_Clavinet2 = $0102; Synth_Instr_EOrgan = $0103; Synth_Instr_Flute = $0200; Synth_Instr_Trumpet = $0201; Synth_Instr_Bell = $0300; |
Zur Bedienung: in der Events-Liste spielt sich fast alles über die rechte Maustaste ab. Es gibt kein Undo/Redo (wäre auch recht schwierig), also lieber Sicherungskopien speichern!
Der Editor ist nicht OpenSource, da die da drin verwendeten Komponenten 1. keiner hat und 2. ich sie nicht veröffentlichen kann, da sie "zusammenkopiert" sind, zumindest eine. Außerdem gibts da nichts interessantes ;)
Der Tracker selbst wird aber als OpenSource veröffentlicht. Der Code dürfte Nico etwas bekannt vorkommen, die eigentliche Tonerzeugung ist aus dem genannten Tutorial.
Wer Kommentare, Fehler oder sonst Feedback hat, immer her damit!
Auch wenn ich nicht weiß, ob ich noch mehr Instrumente mache. Es soll schon das Electro-Musik-Feeling da bleiben ...
Update 6 (2008-04-22)
*Änderung des BT-Dateiformats (Version 1->2), noch mehr Redundanzen beseitigt
*BT-Dateien haben jetzt Versionssignatur, ab diesem Update aufwärts wird alles (lese-)kompatibel sein!
*Timeline-Editor
*Neue Instrumente: Drumkit
*BTS: Repeat-Bug gefixt
Update 5 (2007-11-27)
*Änderung des BTS Formats bzgl. NoteDelay
*Änderung des BT-Dateiformats (Version 0->1), Redundanzen beseitigt
Update 4 (2007-11-26):
+BTS
Update 2/3:
*Komische Fehler behoben
Update 1:
+Rauschen als Wellenform
+Lautstärke über Volume-Events
+kleinere Fixes
Downloads:
BlitzTracker-Core: (Delphi-Src, 10kb)
http://www.martoks-place.de/files/delphi/bt/Synth_src.zip
Der Synthie mit Beispielen: (Exe+bt+bts, 520kb)
http://www.martoks-place.de/files/delphi/bt/Synth.zip
Lesenswert auch die genauere
Beschreibung [
http://www.martoks-place.de/delphi/blitztracker/] auf meiner Seite. Hier wird auch genauer auf die Möglichkeiten des Editors eingegangen.
alias5000 - Di 31.10.06 22:35
Also ich krieg da nur Fehler...
Beim Programmstart kommt ein "Fehler bei der Bereichsprüfung" und wenn dann die Programmoberfläche angezeigt ist, kommt für jeden Knopf eine AV.
Gruß alias5000
Chryzler - Di 31.10.06 22:50
alias5000 hat folgendes geschrieben: |
Also ich krieg da nur Fehler...
Beim Programmstart kommt ein "Fehler bei der Bereichsprüfung" und wenn dann die Programmoberfläche angezeigt ist, kommt für jeden Knopf eine AV.
Gruß alias5000 |
Bei mir auch. Trotzdem hab ich's hinbekommen, ein paar Tönchen zu spielen.
Martok - Di 31.10.06 23:43
alias5000 hat folgendes geschrieben: |
Beim Programmstart kommt ein "Fehler bei der Bereichsprüfung" |
Kann eigentlich nicht sein....
alias5000 hat folgendes geschrieben: |
und wenn dann die Programmoberfläche angezeigt ist, kommt für jeden Knopf eine AV. |
Stimmt, die Actionlist hat gemacht, was sie wollte...
Hab ne geupdatete Version hochgeladen, die auch die fmodConf.exe enthält. Sollte Eigentlich auch ohne Config gehen, aber man weiß ja nie....
Chryzler hat folgendes geschrieben: |
Trotzdem hab ich's hinbekommen, ein paar Tönchen zu spielen. |
*Freu* Falls was gutes(oder zumindest besseres als meine 3 Tracks...) bei rauskommt, lädst dus hoch, ja?
alias5000 - Mi 01.11.06 12:42
hm sorry, aber jetzt gehts noch weniger. Fehler bei Bereichsprüfung bleibt. Danach folgt aber eine endlose Schleife von AV Meldungen auf die Adresse 00000000. (Relativ unabhängig, was ich bei der fmodconf.exe einstell)
Gruß alias5000
Chryzler - Mi 01.11.06 13:07
Bei der ersten Version ist glaub ich gekommen, dass er auf den files-Ordner nicht zugreifen kann, 'Zugriff verweigert'.
alias5000 - Mi 01.11.06 13:21
Ja das hatte ich jetzt bei der zweiten Version auch. Habs dann woanders hinkopiert und dann gings komischerweise. Beide stellen waren ganz einfach Ordner...
Martok - Mi 01.11.06 14:37
alias5000 hat folgendes geschrieben: |
Ja das hatte ich jetzt bei der zweiten Version auch. Habs dann woanders hinkopiert und dann gings komischerweise. Beide stellen waren ganz einfach Ordner... |
Ich glaube, das war der entscheidende Hinweis. Bei mir: woanders hinkopiert->Fehler!
Es hatte über drei Ecken mit der Sprachdatei zu tun. Der wollte den
ORDNER als
DATEI aufmachen....
Jetzt sollte es gehen.
Langsam wirds peinlich...es sollte hier doch um den Synthie gehen, und nicht darum, dass ich Mist geproggt hab...
alias5000 - Mi 01.11.06 15:03
hm, ok, jetzt funktionierts schonmal. aber ich versteh nicht, wie ich das jetzt bedienen soll. Könntest du vllcht ein gutes Demoprojekt posten?
gruß alias5000
ps.: mit der tastatur in meiner linken hand schreibts sichs schlecht :mrgreen:
Martok - Mi 01.11.06 15:36
alias5000 hat folgendes geschrieben: |
hm, ok, jetzt funktionierts schonmal. aber ich versteh nicht, wie ich das jetzt bedienen soll. Könntest du vllcht ein gutes Demoprojekt posten? |
Wenn ich eins hätte....
Du kannst über die Buttons oben einen neuen Track einfügen. In der Combobox wird das Instrument ausgewählt. Dann kannst du die Events in diesem über die Rechte Maustaste unten bearbeiten(Events einfügen, Zeiten ändern, Typ ändern). Im Player kannst du dann entweder alles oder nur den aktuell markierten Track abspielen.
Was vllt noch gut zu wissen ist: die Frequenz/Pitch von Pulsen bewegt sich zwischen 0 und 1000, damit wird das Verhältnis zwischen den Wellentälern/Bergen geregelt.(500=Square)
alias5000 hat folgendes geschrieben: |
ps.: mit der tastatur in meiner linken hand schreibts sichs schlecht :mrgreen: |
Wieso hat man die Tastatur in der Hand?
alias5000 - Mi 01.11.06 15:54
Das ist mir soweit schon klar, bloß verstehe ich irgendwie nicht, wie das ganze funktioniert. Wenn ich da chronologisch mit Note on und off und ein paar pausen dazwischen was mach, kommt entweder ein Dauerton, oder gar nix. So mit Noten und Pausen hgeht das irgendwie net. Entweder Bug, oder ich weiß net, wie man die Events einsetzt...
Gruß alias5000
PS.: tja, aufm Schreibtisch lötet sichs halt immer noch am besten, dann iss kein Platz für die Buchstabendrücker mehr ;)
Martok - Mi 01.11.06 16:25
Tja, ich sollte vielleicht erwähnen, das man die Time Before setzen sollte.
Ich bastel mal was, was ein Paar Töne spielt.
alias5000 hat folgendes geschrieben: |
PS.: tja, aufm Schreibtisch lötet sichs halt immer noch am besten, dann iss kein Platz für die Buchstabendrücker mehr ;) |
Nagut, das ist ein Argument. (Deshalb hab ich hier auch 2 Schreibtische^^)
Edit: fertig, klingt aber grausam...
Chryzler - Fr 03.11.06 19:08
Ich glaube ich habs kapiert wie's geht. Die Steuerung ist aber ziemlich kompliziert...
Ich hab mal ein paar Akkorde gebastelt:
Martok - Fr 03.11.06 19:15
Chryzler hat folgendes geschrieben: |
Die Steuerung ist aber ziemlich kompliziert... |
Jo, da wird irgendwann mal noch ne richtige Timeline hinkommen (wenn ich ne richtig Kompo dafür finde, bzw. Zeit hab, eine zu schreiben. Die Wiederholungen sind das Problem. Wie stellt man die wohl dar?)
Zum Lied: hätte nicht gedacht, das sowas damit möglich ist^^
monster - Sa 11.11.06 21:08
Hey Martok,
bin zufällig beim Googlen auf dein Post gestossen, auf der Suche nach fmod-Tutorials. Ich hab mich auch von delphics Tutorial inspirieren lassen und spiele auch ein wenig mit synths herum.
Dein Programm ist echt nett! Okay, ich vermisse zwar Noten oder wenigstens Tabulatur, aber das kommt bestimmt noch. Was bestimmt auch eine Verbesserung wäre, wär wenn Du die Instrumente aus dem Source raushälst, so dass man eigene Instrumente erstellen kann. Das wäre sicher auch gut zum Experimentieren, "Instant Playing" halt.
Ich mache das mit Scripts, JvInterpreter ist dafür unglaublich gut geeignet; ein Tutorial dazu gibts ja auch im dglwiki.
Für ne Timline braucht man wohl eine Translator-Funktion, die deine "Events" in Klangmaterial umwandelt und vice versa. Wenn man die Trackposition als Parameter übergibt reicht das ja. Ich benutze kein repeat, der User kann höchstens ein Sample mehrfach loopen.
Bin gespannt auf die nächste Version...
Martok - Mo 26.11.07 15:28
Nach ziemlich genau etwas über einem Jahr hab ich das Programm mal wieder ausgegraben. Ich werde mich jetzt mal an eine einfachere Variante zur Trackerstellung machen. Im Moment schwebt mir da eine Scriptsprache vor, ich bastle grade an nem Testscript, dass ich dann vertonen werde ;)
Martok - Mo 26.11.07 20:30
Ich werd immer besser ;) Vorhin angefangen, und zumindest bei mir funktioniert alles ;)
Bei der Gelegenheit habe ich das dann auch mal auf meine Seite umverlegt, die aktuellen Downloads gibts auch dort:
http://www.martoks-place.de/delphi/blitztracker/
Bei der neuen Version geht es vor allem um
BTS [
http://www.martoks-place.de/delphi/blitztracker/#BTS], am besten erstmal lesen und dann die Beispieldatei angucken, dann sollte sich die Logik recht schnell erschließen ;)
Wie damals schon gesagt: macht was draus, und auch wenn ich bestimmt keine Script-oder ähnliche Instrumente-Live-Generier-Logik einbaue, nehm ich trotzdem gerne neue Instrumenten-Funktionen auf. Mit der etwas einfacheren Eingabe könnte doch hier mal etwas Schwung rein kommen...
BenBE - Di 27.11.07 13:21
Wie sieht das aus mit mehreren Noten gleichzeitig spielen?
Martok - Di 27.11.07 19:46
So wie bei vielen Synthies: machs dir selber ;)
Aber wie bei mir typisch, bin ich grade dabei, die Modulverarbeitung umzuschreiben, so dass die Module nicht mehr compiliert gecached werden. Damit müsste man auch Track-Spezifisches Staccato/Legato hinkriegen. Mehr Modifier dürften dann auch möglich sein, da sich die Tracks nicht mehr ins Gehege kommen.
Ach ja: was haltet ihr davon, das Dateiformat etwas zu optimieren? Schließlich gibts es viele Befehle die keine Parameter haben, da lässt sich noch was rausholen.. Würde allerdings heißen das keine alten Dateien mehr gehen. Die die ich habe würd ich ja selber konvertieren...
Edit: Zu spät für Gegenmeinungen ;)
Auf meiner HP befindet sich jetzt das Update. Changelog siehe oben...
Ironwulf - Di 27.11.07 21:40
duftes programm ;D
nur die bedienung ist ein klein wenig umständlich
da du dir auf deiner hp die 9. von beethoven gewünscht hast hab ich dir mal den 4. satz daraus in deinem prog gemacht (Freude schöner Götterfunken)
Martok - Mi 28.11.07 14:10
Klingt etwas schief... Welche Stimmung ist das? Oder in welcher Tonart?
Ich rechne bei BTS mit normaler Equal-Stimmung, da klingt das etwas anders.
Event-Noten werd ich später noch machen, damit man Pan und Volume Events innerhalb des Tracks generieren kann... Und ich werd mir zum Laden noch was überlegen, damit man das alte Format auch importieren kann.
Ach ja, und ein Standalone-Player ist auch in Planung.
Ironwulf - Mi 28.11.07 15:49
oha
stimmt hab die vorzeichen übersehn sollte D Dur sein und nu isses gar nix ;D und ich hab die frequenzen ohne kommastelln gemacht, da liegt dann das a um 6 hz daneben, aber nem keks jedem der das raus hört :D
Martok - Mi 28.11.07 16:38
*Keks aufess*
Deswegen schreib ich die jetzt auch in BTS. Da passiert die Umrechnung von allein ;)
Martok - Di 22.04.08 18:51
So, es gibt was neues!
Update 6 ist fertig. Endlich mit vernünftigem Track-Editor, der das Arbeiten sehr beschleunigt. Anleitung siehe
hier [
http://www.martoks-place.de/delphi/blitztracker/]
Änderungen:
*Änderung des BT-Dateiformats (Version 1->2), noch mehr Redundanzen beseitigt
*BT-Dateien haben jetzt Versionssignatur, ab diesem Update aufwärts wird alles (lese-)kompatibel sein!
*Timeline-Editor
*Neue Instrumente: Drumkit
*BTS: Repeat-Bug gefixt
Zum Dateiformat: es ist mal wieder kleiner geworden, da ich jetzt nur noch Zeiten in Word-Werten speichere. 65 Sekunden zwischen den Events dürften ja wohl reichen, wenn nicht, sind sie mit zusätzlichen Pause-Events zu strecken.
Neu ist die automatische Dateityperkennung, die folgenden Versionen zugute kommen wird. Leider ist es aber nicht möglich, Format 0 und 1 zu unterscheiden (lies: ich hab Format 1 verbockt, spätestens da hätte die schon reingemusst...). Dazu muss weiterhin der Filter im Opendialog umgestellt werden. Gespeichert wird immer in Format 2.
Die Erkennung läuft über das erste Byte, das bei Format 0 und 1 nur bis (25)d gehen kann. Ist das oberste Bit gesetzt (b and $80<>0), wird der Rest als Dateiversion betrachtet, hier steht dann die Zahl 2, zukünftig vielleicht auch größere Zahlen. Wenn nicht, ist das Format 0 oder 1.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!