einseinsnull
[nur noch PN]
noch mal was anderes zum thema "editieren" vs RAM.
es gibt ja datenmengen, deren größe stets gleich ist.
wenn man z.b. audio aufnehmen will, kann man zunächst das "wo" im speicher festlegen (adresse, name), und dann auch bis wohin. man reserviert also z.b. den ganzen speicher für eine minute aufnahme von anfang an.
sobald man das getan hat, ist eine tonspur jetzt bereits schon da, es ist nur noch nichts drauf außer nullen.
und man kann stundenlang daran herumeditieren und einzelne werte verändern, oder auch erneut bereiche einfach nicht benutzen und sie beim lesen auslassen, die größe des reserveirten/adressierten speichers bleibt immer gleich.
weiß man vorher noch nicht wie lange man aufnimmt, werden neue speicherbereiche in blöcken schrittweise neu zugewiesen. unter umständen sind diese sogar identisch strukturiert mit denen, die beim aufnehmen auf einen massenspeicher auch verwendet werden würden.
beim midi sequencer ist das ja nun anders. der könnte z.b. bei der logischen delta zeit 3 sekunden nach start die kompletten sysex bänke von 5 geräten gleichzeit losschicken wollen, oder 127 control change befehle auf einmal. während andere stellen im schnitt nur 0,1 note events aufweisen werden.
man kann also so ohne weiteres nicht einfach eine feste größe und auch keine maximalgröße festlegen.
auch willst du sich heutzutage unter umständen nicht auf eine fester zeitraster der marke "1920 ppq" begnügen sondern z.b. lieber mit ms in float arbeiten o.ä.
wie wäre es also damit: man unterteilt die speicher in kurze schnipsel, z.b. immer ein takt. wenn jetzt nach dem echtzeit-editieren, z.b. dem verschieben oder einfügen eines neuen ereignisses, aus irgendeinem grund die daten neu sortiert werden müssen, findet dieses sortieren nunmehr nur innerhalb einer sehr kleinen datenmenge statt.
wird durch das editieren ausnahmesweise mal irgendwo die vorläufig festgelegte größe überschritten, wird dafür ein zweiter block erzeugt.
die meisten datenbank anwendungen machen doch ähnliches, die haben blöcke oder chunks - und auch die von euch oben bereits angesprochenen temporären edit-buffer - und wird mehr platz gebraucht, werden neue blöcke erzeugt.
es gibt ja datenmengen, deren größe stets gleich ist.
wenn man z.b. audio aufnehmen will, kann man zunächst das "wo" im speicher festlegen (adresse, name), und dann auch bis wohin. man reserviert also z.b. den ganzen speicher für eine minute aufnahme von anfang an.
sobald man das getan hat, ist eine tonspur jetzt bereits schon da, es ist nur noch nichts drauf außer nullen.
und man kann stundenlang daran herumeditieren und einzelne werte verändern, oder auch erneut bereiche einfach nicht benutzen und sie beim lesen auslassen, die größe des reserveirten/adressierten speichers bleibt immer gleich.
weiß man vorher noch nicht wie lange man aufnimmt, werden neue speicherbereiche in blöcken schrittweise neu zugewiesen. unter umständen sind diese sogar identisch strukturiert mit denen, die beim aufnehmen auf einen massenspeicher auch verwendet werden würden.
beim midi sequencer ist das ja nun anders. der könnte z.b. bei der logischen delta zeit 3 sekunden nach start die kompletten sysex bänke von 5 geräten gleichzeit losschicken wollen, oder 127 control change befehle auf einmal. während andere stellen im schnitt nur 0,1 note events aufweisen werden.
man kann also so ohne weiteres nicht einfach eine feste größe und auch keine maximalgröße festlegen.
auch willst du sich heutzutage unter umständen nicht auf eine fester zeitraster der marke "1920 ppq" begnügen sondern z.b. lieber mit ms in float arbeiten o.ä.
wie wäre es also damit: man unterteilt die speicher in kurze schnipsel, z.b. immer ein takt. wenn jetzt nach dem echtzeit-editieren, z.b. dem verschieben oder einfügen eines neuen ereignisses, aus irgendeinem grund die daten neu sortiert werden müssen, findet dieses sortieren nunmehr nur innerhalb einer sehr kleinen datenmenge statt.
wird durch das editieren ausnahmesweise mal irgendwo die vorläufig festgelegte größe überschritten, wird dafür ein zweiter block erzeugt.
die meisten datenbank anwendungen machen doch ähnliches, die haben blöcke oder chunks - und auch die von euch oben bereits angesprochenen temporären edit-buffer - und wird mehr platz gebraucht, werden neue blöcke erzeugt.
Zuletzt bearbeitet: