>20min synthetische Musik in 64kB?

  • Ersteller Electric-Ric
  • Erstellt am
@DerSchlosser: Also mit XML arbeitet man bei solchen Sachen nicht, das ist ja eine allgemeine Beschreibungssprache. Normalerweise macht man sich ein eigenes "Dateiformat" (bzw. man coded alles hart ins Programm), nur damit kann man die größe der Datei optimieren. Ausserdem ist es so, dass ein Programm, das in Assembler geschrieben ist, wirklich sehr klein ist. Ich hab mal (ist wohl auch schon so 5-6 Jahre her) ein einfaches "Hallo Welt" Programm (der klassiker) in Assembler, C und C++ programmiert. Damit hat man den Unterschied recht deutlich gesehen: das Assemblerprogramm war irgendwas um die 150 Byte groß, die C Variante ca. 5 kB und die C++ Version ca. 30 kB (da hat der Compiler wahrscheinlich einiges reingeklinkt, was man eigentlich nicht gebraucht hätte, aber so sind sie, die Compiler).

Ich persönlich sehe sowas wie 64K demos nicht als sooo mystisch an (auch wenn ich selber sowas nicht programmieren kann), aber ich komm ja schließlich noch von C-64, da musste ja in 64K wirklich alles passen, und die Spiele waren auch ganz ordentlich (ach ja ... Nachladen war eigentlich nicht drin, ich weiß nicht, wer die 1542 Floppy vom C-64 noch kennt ... "ich geh mal Mittagessen" ;) ). ich finde es vielmehr komisch, dass heute die Größe eines Programms keine Rolle mehr spielt (dank DVD, DSL und 150GB Platten).
 
Ich habe mich auch vor einiger Zeit mal mit dem 64kb-Demo-Kram auseinandergesetzt, insbesondere die Komprimierung spielt hier eine große Rolle. Das Programmieren in Assembler ermöglicht es anscheinend, die Daten extrem komprimiert abzulegen.

Schaut euch bei dem Brüllwürfel doch mal euern Tasmanager an und sortiert hier nach Speicher. Und schon belegt das Prog ca. 7MB, ein Wert der mich nicht mehr erstaunen würde, zumindest nicht so wie 64kb - was als JPEG grade mal ein kleines Bild darstellt.

"Kkrieger" ist ebenfalls ein gutes Beispiel, was habe ich nicht gestaunt, als ich die 96kB das erste Mal gestartet habe - zupp - Taskmanager an und siehe da = ca. 256 MB ??? Eben einfach sehr Core-nah programmiert/komprimiert und dann geht das schon, kein Hexenwerk, einfach genial gecodet.
 
Na ja, wie weiter oben schon festgestellt wurde: so viele Sachen wie irgend möglich nicht als fertige Daten ablegen sondern erst beim Programmstart berechnen lassen ... damit spart man einen richtigen Haufen Speicher.
 
Kurze Anmerkung: Das "XML" oben sollte wohl "XM" heißen (ein MOD-Format).
 
Oder die Programme streamen das einfach von ihrer Website :D

Hm ne, für mich klingt das so, als hätte das Programm halt nen Synth eingebaut und sich die Songs ne Struktur entworfen, wie er solche Songs mit möglichst wenig Daten beschreiben kann. Mir fällt auch auf, dass sehr viel in den Songs geloopt ist. Das merkt man nicht direkt, weil das nur einzelne Instrumente betrifft. Z.B. gibt es vielleicht 5 [g=118]Bass[/g]-Patterns, 5 Drum-Patterns etc, jedes Pattern hat ne Nummer. Dann muss für einen Song nur noch eine Nummernreihenfolge gespeichert werden. Und für Melodien - vielleicht sind nur ein paar Grundtöne gespeichert und ne [g=1]Arpeggiator[/g]-ähnliche Funktion generiert dann daraus die "Melodie". Vielleicht arbeuten sie sogar mit Pseudo-Zufallszahlen (also rekonstruierbare, hab sowas in Delphi mal gemacht und so dann zufällige Musik erzeugt - natürlich nichts Vergleichbares)...

Aber interessante Sache, das ganze...
 
cybersphinx schrieb:
Kurze Anmerkung: Das "XML" oben sollte wohl "XM" heißen (ein MOD-Format).

OK, das würde Sinn machen. Dann hat sich mein Vorredner wohl im Eifer des Internet-XML-Wahns vertippt ;) .
 
Naja die Sounds sind alle FM-Synthese keine Samples.
Um die zu kodieren braucht man nicht soviel Speicher.

Pro Track kommt man wahrscheinlich mit einigen Patterns zu je 3-5 Spuren aus. Filterfahrten kann man ja extra kodieren. Das macht jetzt noch nicht soviel information aus.

Die FM-Synth Engine ist natürlich unmöglich im 64kB File stellt sich jetzt nur noch die Frage ob sie direkt auf die Soundkarten funktionen zugreifen oder auf Windows Resourcen.

Ich glaub eher das das Demo mit Direct X berechnet wird - kann mir gut vorstellen das da ein einfacher FM Synth zur Verfügung steht...

Dazu ist diese Technologie ja auch da - damit nicht jeder Standardbefehl nochmal extra programmiert werden muß. Direct X enthällt auch umfangreiche Grafikbefehle mit denen man die tollsten Sachen machen kann.
Zumindest würde es erklären warum ein 64 kB Proggie plötzlich mehrere MB Speicher braucht...
 
:D hups, ja wirklich! Ich meinte XM Format!!

Shame on me :)

aber ihr müsst mal nach XM Dateien googeln, da gibts ne menge geilen "elektro" kram im netz und die dateien sind halt ziemlich klein....
 
Die FM-Synth Engine ist natürlich unmöglich im 64kB File stellt sich jetzt nur noch die Frage ob sie direkt auf die Soundkarten funktionen zugreifen oder auf Windows Resourcen.
nein, die demos nutzen schon selbst erstellte soft-synthies. also kein DX-synth oder ähnmliches ;-)
der fertige code ist im gegensatz zu grafiken und sound sehr winzig. (wenn nicht zuviel unnütze sachen zucompiliert wurden)
es gibt auch z.b. leute die in 4kb intros eigens erstellte softsynthies.
die sind natürlich mit einem jit-packer komprimiert(z.b. upx)
und wenn die daten (grafik / sound) per algorithmus erst zur laufzeit erzeugt werden spart man sich den
und directx bietet keine softsynthie an. nur die direct-sound funktionen erleichern die sound-ausgabe. dafür müssen die sounds aber schon im speicher liegen (d.h. fertig generiert oder geladen sein).
 
naja echt kranke Videos steckt ne menge skillung dahinter. Allerding frag ich mich welche Drogen die wohl nehmen :D
 
Es wird eben alles erst zur Laufzeit berechnet. Statt vorgefertigte Daten aus Dateien zu laden werden die Formen und texturen anhand von Algorithmen berechnet.




Die FM-Synth Engine ist natürlich unmöglich im 64kB File stellt sich jetzt nur noch die Frage ob sie direkt auf die Soundkarten funktionen zugreifen oder auf Windows Resourcen.

Wieso nicht? Das ist einfach.
 
hi leute,
ich tippe auf eine abart des WRL (VRML97 standard) formats.
3dmax benutzer kennen sicherlich "virtual reality modeling" für web...
ähnliche technologien haben viewpoint (USA) oder cult3d (cycore/schweden) schon im web etabliert.
ich weiss vom viewpoint, dass der auf die shaders und materialien aus dem directX zugreifen kann. das machen auch die jungs von scene.org.
also ohne directX wäre so was nicht machbar.
die sounds haben auch ursprung im directX-engine.
das ist meine vermutung.
jetzt aber nicht schlagen, gelle? ;)
vg
dia
 
Hi,

hab’s gefunden. Die verwenden kein DirectX. Die verwenden den
Minifmod Player. Compiled grade mal 5 kb gross. Erstaunlich, erstaunlich.

Player und Sourcecode unter:
http://www.fmod.org/files/minifmod170.zip

Gruesse
Andre
 
@D_E_M
Supercool, danke für die Recherchen! :)


Ahja, ich sehs schon kommen: Bald haben wir hier ne eigene Rubrik für 64kb Mukke und ich bins schuld.
Was nicht heisst, dass ich das nicht gut finden würde. ;)


mfg Electric-Ric
 
hab’s gefunden. Die verwenden kein DirectX. Die verwenden den
Minifmod Player. Compiled grade mal 5 kb gross. Erstaunlich, erstaunlich.
Rate mal was fmod zur ausgabe unter Windows verwendet? DirectX, genau. Aber wie sollte es auch anders sein? Alternativ kann [g=12]ASIO[/g] verwendet werden. Und viel mehr Möglichkeiten hat man als Programmierer doch eh nicht.

---

Also ich weiß zwar nicht, was ihr erwartet, aber FM-Synthese ist nicht viel Aufwand, vor allem, da es normalerweise in Wirklichkeit durch Phasen-Modulation geregelt wird. Es ist eins der einfachsten Dinge der Welt:

Man könnte zwei-Operaden-FM-Synthese beispielsweise so formulieren:
output = sin (t + sin (t) * envelope2) * envelope1;
 
nein, die demos nutzen schon selbst erstellte soft-synthies. also kein DX-synth oder ähnmliches ;-)

fmodplayer ist nur 5kb groß?

sehr spannend
 
Also die Noteninformationen sind wirklich klein. Auch einen Synthie zu programmieren ist mach nicht viel Speicher aus. Ich habe an der Uni als projekt auf einem Mikrocontroller einen einfachen Synth programmiert. dazu hab ich die Klangdaten im Flash abgelegt. Hatte drei oder vier Songs drin, allerdings monophon. Das war ca. 300byte groß, teilweise in Assembler, teilweise in C geschrieben.

Es geht also, man muss nur eben mehr können, als schnell mal in MFC ein Dialog zusammen klicken!

Und das die demos im vergleich zu der Dateigröße viel Arbeitsspeicher benutzen ist ja kein Geheimnis. Der geniale an den Demos liegt ja darin, dass ALLE Informationen trotzdem vor dem Start in den 64k drin sind.
 
Ich kenne die Demo-Scene nun auch schon etwas länger, gerade auch weil mein Bruder da sehr lange mit dabei war.
Das Packen in solch kleine Dateien erstaunt mich daher schon längst nicht mehr. Gerade das ist ja Sinn und Zweck der 64kb Competition. Soviel wie möglich in so wenig Bytes wie möglich. Die Codes und Algorithmen werden stetig weiteretnwickelt und verbessert. Man darf dabei nicht vergessen, dass diese Demo-Scene keine Sachen dieses Jahrtausends ist, sondern ihren Ursprung aus den 80ern (Angefangen mit VC20/VC64) hat.

Was ich vielmehr oft bei diesen Demos geil finde ist, dass die mit einfachsten Syntheseformen und wirklichen einfachen Mitteln mehr geile Sounds und Harmonien herausholen, als das was mancher [g=79]Homerecordler[/g] mit seinem Schrank voll High-End VSTis zustande bekommt.
Die Qualität ist manchmal besser als so manche Trance-Compilation auf [g=420]CD[/g].

Gruß,
Organix
 

Ähnliche Themen

moonbooter
    • Danke
  • Artikel
Testberichte Test: Yamaha MODX6
Antworten
7
Aufrufe
57K
Can
Can
HannesBieger
Antworten
8
Aufrufe
48K
Christian_30
C
Can
Antworten
15
Aufrufe
134K
Asmotiv
A
R
Antworten
1
Aufrufe
37K
WaldebeatZ
WaldebeatZ

Oft gelesene Themen

Zurück
Oben