Translate

Posts mit dem Label DynSong werden angezeigt. Alle Posts anzeigen
Posts mit dem Label DynSong werden angezeigt. Alle Posts anzeigen

Sonntag, 16. September 2012

Auto Song One - Pattern/Track Varianten-Editor


Dieses ist ein Varianteneditor für Tracks eines Musikprogramms an dem ich
schreibe welches später mal eigenständig Musik erstellen soll.

Dazu werden verschiedene Mechanismen herangezogen um ein möglichst
melodisches Klangbild abzugeben. Dennoch sind viele Dinge hierbei
"gescriptet" wie eben die Tracks welche sich zwar in den Varianten,
den Effekten, dem Aufbau und Klangbild unterscheiden werden, und durch
Kombination Millionen von unterschiedlichen Songvarianten hervorbringen,
jedoch müssen diese weiterhin zunächst von Menschen, in ein geordnetes
Bild gebracht werden.

Eben dazu dient, als erster Schritt, der hier vorliegende Varianten-
Editor. Er ermöglicht es jeweils einen einzelnen Track ähnlich
den Tracks eines Soundtrackers diesen als Ablaufroutine vorzudefinieren,
wobei jeweils bis zu 15 Varianten durch clonen des jeweils ausgewählten
Bereichs in den nächsten Trackvariantenslot kopiert werden, wo dieser
hinsichtlich der jeweiligen Variante modifiziert, und seinerseits erneut
geklont werden kann.



























Im späteren Hauptprogramm, welches seperat erscheint, wird dann jeweils
pro Spur einer der Tracks zufällig geladen, wobei auch die Variante und
andere Elemente zufällig ausgewählt und (möglichst) harmonisch kombiniert
werden sollen.

Dies ist eine sehr frühe Testversion. Sie ist keineswegs Speicheroptimiert
und nutz den Arbeitsspeicher rege :-) Benutzung auf eigene Gefahr.

Zum Ausprobieren sollte ein halbwegs aktuelles Windows 7 genügen, vielleicht
reicht jedoch auch XP mit .Net Framework (nicht getestet) ausserdem ist
DirektX erforderlich, da das Programm DirectSound für den Soundbuffer und
die Effekte verwendet.

Die Benutzung des Tools ist recht simpel, einfach die jeweiligen Noten in
der jeweiligen Trackslotspalte einfügen (das darf auch während des Abspielens
geschehen), mit Play könnt ihr das ganze anhören und auch zur Laufzeit zwischen
den Trackvarianten wechseln.

Beispiel:
Der Testtrack, welcher beim Starten mit geladen wird ist gleich zu Anfang
ausgewählt. Klickt doch mal auf "Clone to right", dann wird dieser in den
zweiten Slot geklont (das Klonen bezieht sich immer auf den jeweils oben
ausgewählten Slot um einen Slot nach rechts). Entfernt dann aus Slot #2 ein
paar Noten, Schaltet bei Tick Speed auf 180 ms, bei Effekt auf "Echo" und
wählt nachdem ihr wieder (oben) Slot #1 gewählt habt auf "Play", das ganze
klingt nun schon ganz nett, wenn ihr jetzt während des abspielens auf Slot #2
wechselt merkt ihr recht schnell worum es hier eigendlich geht, falls das
noch nicht durchschaut wurde. :)



Update zu Version 0.2:
18.09.2012

Neu ist jetzt ein Trackbar der die Position im Track zur Laufzeit anzeigt,
ausserdem wurde das alte Verfahren für die Hilfslinien in der Trackansicht
über Bord geworfen und durch eine andere Lösung ersetzt. Desweiteren
gibts jetzt sogenannte Generatoren, welche selbst neue Tracks nach dem
Zufallsprinzip erstellen bzw. bestehende Strukturen ersetzen können ua..



Herunterladen zum ausprobieren könnt ihr das Tool in der Version 0.2 vom 18.09.2012 hier (~ 2mb).


Bei Fragen bitte im Blog in die Kommentare schreiben.










Bekannter Bug: Gelegendlich kommt es in v0.2 beim Harmonic Random
Generator zu einem Speicherüberlauf der dazu führt das seltsame Zeichen in
Slot #1 angezeigt werden, das ist allerdings nicht allzu tragisch, dann einfach
nochmal auf den Harmonic Random Generator klicken.

Freitag, 12. März 2010

Problem mit DirectSound & Arbeitsspeicher

Bin bei der Programmierung des DynSong Programms auf ein lästiges Problem gestoßen. Da ich kein Programmierer bin, und das Programm eher "bastel" fällt es mir recht schwer das Problem in Eigenregie zu lösen. Vielleicht liest dies ja jemand, der sich etwas mit Visualbasic 2008 und DirectX dh. DirectSound auskennt, und kann mir hierbei helfen. Es geht um folgendes: Wenn man die Auslastung des Arbeitsspeichers gleichzeitig mit dem DynSong Programm betrachtet, wird deutlich, das das Programm den Arbeitsspeicher relativ schnell füllt, und nicht wieder freigibt. Meine bisherigen Versuche das selbst hinzubekommen, waren eher ernüchternd. me.dispose() klingt zwar nett, scheint jedoch in dem Zusammenhang sich nicht wirklich auf den Speicher auszuwirken. Ich möchte hier noch nicht den vollständigen Quelltext von DynSong posten, da er sehr viele Notizen und "Versuche" beinhaltet, vielmehr ein kleines Beispiel Programm - das die selbe Abspielroutine beinhaltet.

Das Prog ist so lauffähig, und kann ausserdem zum testen heruntergeladen werden unter http://x7.to/hflhj3

Den Quelltext findet ihr unter http://pastie.org/866091

Dienstag, 9. März 2010

Tool: DynSong v0.3.2 (Random Music Generator)

Hier ist Fassung V0.3.2 von DynSong (The Dark One), dieses mal hat's nur ein paar Fehlerbehebungen und die Erweiterung des Frequencebereichs dazugewonnen. Download könnt ihr's hier http://x7.to/1olf7q

Montag, 8. März 2010

Tool: DynSong v0.3.1 (Random Music Generator)


Ooops, das war wohl eher ein Versehen. Die Fassung v0.3.1 von DynSong bringt keine wirklichen Änderungen ausser das ich mal ein anderes Sampleset verwendet habe (hierbei sind die Piano Sounds durch Synth Sounds eines Korg X5 II und eines ARP Odyssey ersetzt, das Ergebnis ist ein sehr tiefer Sound dessen Klang an 70er Jahre Horrorfilme erinnert (daher auch der Namenszusatz "The Dark One".. Nach wie vor solltet ihr darauf achten das der Speicher sich relativ schnell füllt (dh. das das Tool gelegendlich neu gestartet werden sollte - vielleicht so bei 1500 - siehe "Counter"). DynSong v0.3.1 (The Dark One) findet ihr hier: http://x7.to/zzdwan

Mittwoch, 3. März 2010

Tool: DynSong v0.3 (Random Music Generator)

Habe den DynSong Quelltext noch etwas erweitert, und den Parametergenerator eingebaut. Fahre jetzt erstmal zur CeBit zwecks "Weiterbildung". Die Fassung v0.3 findet man hier:
http://x7.to/nh3z3l


Nachtrag: Um Fehler im Vorfeld zu vermeiden sollte man vor dem Ausführen sichergehen, das sowohl das .Net Framework (unter Windows XP) als auch DirectX inkl. Managed DirectX (bei allen Windows Betriebssystemen) in der neusten Fassung installiert ist. Ansonsten läuft's nicht.

Tool: DynSong v0.2 (Random Music Generator)

Habe weiter an meinem Programm gearbeitet, welches irrgendwann mal automatisch Musikstücke generieren soll. Die Erste Version (siehe einige Einträge zuvor), verwendete dort die Soundplayer Routine von VB2008. Das nerfte jedoch aufgrund des unzulänglichen Mixens der Kanäle. Habe daraufhin entschieden, den vorhandenen Code über Bord zu werden, und die Routinen neu zu schreiben und zwar in DirectX (dh. unter Verwendung von DirectSound). Das war nicht ganz leicht für einen Nicht-Programmierer und das Ergebnis ist bislang auch eher Mager, es ging dabei jedoch auch eigendlich nicht darum nun gleich etwas ganz tolles zu schreiben, sondern vielmehr darum zu verstehen wie das funktioniert. Insbesondere die kleinen Unterschiede zwischen den x64 und x86 Architekturen bereiteten mir dabei größere Schwierigkeiten (Festgestellt, Erkannt, Überwunden). Das Problem lag eigendlich nicht am Programm sondern vielmehr daran das mir Windows 7 (64Bit) immer sagte das es keine gültige 32Bit Anwendung wäre, das lag daran das man im Konfigurations-Manager (den man in der Express Edition erstmal unter Optionen aktiviert) mitteilen muß das der Code nicht auf x64 sondern auf x86 ausgeführt werden soll. Da muß man erstmal drauf kommen. Naja, manchmal sieht man den Wald vor lauter Bäumen nicht. Wie auch immer, die Version 0.2 ist unter folgendem Link zu finden http://x7.to/6hbt3e

Samstag, 27. Februar 2010

Tool: DynSong v0.1 (Random Music Generator)

Habe damit begonnen einen Generator für Musik zu schreiben, welcher automatisch Songs generiert und abspielt. Zur Zeit ist er noch sehr, sehr spartanisch und macht nicht besonders viel, es ist mehr ein Test von Programmierttechniken für mich selbst um zu verstehen wie das ganze aufgebaut werden müßte. Wer's trotzdem ausprobieren will, findet es hier http://x7.to/6xg8c6