Snap value arrays befeuern sich untereinander
Verfasst: 19. Juni 2011, 14:06
Hallöchen!
in meinem derzeitigen Sequenzerprojekt bin ich auf eine Schwierigkeit gestossen wofür ich ein kleines Testensemble gebaut habe. Das Ensemble versuch ich in diesem Thread mal zu entwickeln. Ich erstelle dafür einen eigenen Thread, weil das vielleicht leute interessiert, die meinen "Großen" Projektthread Interphase nicht verfolgen.
Ziel:
Ich möchte innerhalb eines Snapshots mehrere "Patterns" für den Sequenzer haben, da ich später eine Art "Songmodus" haben will in dem man eine Abfolge verschiedener Patterns (Sequenzen) erstellen können soll. Hierfür verwende ich 2 SVAs.
(SVA=SnapValueArray)
Für das Testensemble hab ich die Länge der Sequenzen auf 8 beschränkt damit der Eventwatcher (danke an Clist) nicht überladen wird
SVA1: "Edit buffer": hier wird der User input hineingeschrieben welcher von der Mouse area kommt. Die Größe entspricht der Länge der Sequenz =8
SVA2: "Memory": hier werden die Daten der 4 abgespeicherten Patterns hineingeschrieben. Die größe ist daher 4*8=32. Pattern 1 hat also die Indices 1-8, Pattern 2 = idx 9-16 usw.
die addressierung der SVAs erfolgt durch eine beim Schreibvorgang ausgelößte Iteration und ist bei SVA1 immer idx1-8 und bei SVA2 abhängig vom gewählten Zielpattern Wr#. [(Wr# -1) * 8] + idx
nun zum Panel:
Damit man Übersicht und Kontrolle über das Ergebnis hat habe ich im Testensemble 6 Eventtables angelegt: (Beim fertigen Sequenzer soll da natürlich nur eins (polydisplay) sein.
1. Editbuffer
2. Brain (das was an die Sequenzerengine geschickt wird)
3.-6. Memory 1-4
Im Bedienfeld "control" wird der schreibvorgang ausgelößt. die Liste "Wr#" bestimmt das Zielpattern, der Button "write" startet dann den kopiervorgang (hier steckt mein aktuelles Problem, dazu unten mehr), die Liste "Ptn#" soll später Daten aus dem "Memory"- SVA ins "Brain" schreiben, also ein Patternwahlknopf. Dieser hat bisher aber noch keine Funktion, weil ich bevor ich das mache das aktuelle Problem lösen will und ich die Übersicht behalte. Bis hierhin will ich es nur schaffen, dass die 4 memory"Slots" korrekt beschrieben werden.
jetzt zur Struktur:
Eingänge I,V: Index und Value des User input (parent)
Makro "control" beinhaltet Panelelemente und von ihnen ausgelößte Iterationen
Corecell: Edit feed: bereitet die Daten für das EditSVA auf
Corecell: Memory feed: bereitet die Daten für das MemorySVA auf
Corecell: Brain feed: bereitet die Daten für die Sequencerengine auf
Macreo "Tables" beinhaltet die Event tables.
im angehängten Ensemble funktioniert die sache auch mit dem Richtigen Ergebnis, aber nur, weil die Iteration IT'wr zweimal durchläuft. dies erreiche ich, indem der Button "Wr" im Gatemodus arbeitet und so die Iteration einmal beim anklicken startet und einmal beim loslassen. wenn man draufklickt und nicht loßlässt sieht man, dass nur der erste Step des Zielpatterns mit einem (falschen) Wert beschrieben wird. Das ist unbefriedigend, weil ich für die Stukturhygiene lieber so wenig Events wie möglich haben will. Die Indices werden schon beim Anklicken korrekt durchgezählt, wie im Eventwatcher dargestellt. (Siehe panelscreenshot) Die Werte jedoch sind beim ersten Durchlauf die falschen.
mein Ziel ist es nur eine Iteration zu tätigen und gleich die korrekten Werte aus SVA1 auszulesen.
Jemand ne Idee?
in meinem derzeitigen Sequenzerprojekt bin ich auf eine Schwierigkeit gestossen wofür ich ein kleines Testensemble gebaut habe. Das Ensemble versuch ich in diesem Thread mal zu entwickeln. Ich erstelle dafür einen eigenen Thread, weil das vielleicht leute interessiert, die meinen "Großen" Projektthread Interphase nicht verfolgen.
Ziel:
Ich möchte innerhalb eines Snapshots mehrere "Patterns" für den Sequenzer haben, da ich später eine Art "Songmodus" haben will in dem man eine Abfolge verschiedener Patterns (Sequenzen) erstellen können soll. Hierfür verwende ich 2 SVAs.
(SVA=SnapValueArray)
Für das Testensemble hab ich die Länge der Sequenzen auf 8 beschränkt damit der Eventwatcher (danke an Clist) nicht überladen wird
SVA1: "Edit buffer": hier wird der User input hineingeschrieben welcher von der Mouse area kommt. Die Größe entspricht der Länge der Sequenz =8
SVA2: "Memory": hier werden die Daten der 4 abgespeicherten Patterns hineingeschrieben. Die größe ist daher 4*8=32. Pattern 1 hat also die Indices 1-8, Pattern 2 = idx 9-16 usw.
die addressierung der SVAs erfolgt durch eine beim Schreibvorgang ausgelößte Iteration und ist bei SVA1 immer idx1-8 und bei SVA2 abhängig vom gewählten Zielpattern Wr#. [(Wr# -1) * 8] + idx
nun zum Panel:
Damit man Übersicht und Kontrolle über das Ergebnis hat habe ich im Testensemble 6 Eventtables angelegt: (Beim fertigen Sequenzer soll da natürlich nur eins (polydisplay) sein.
1. Editbuffer
2. Brain (das was an die Sequenzerengine geschickt wird)
3.-6. Memory 1-4
Im Bedienfeld "control" wird der schreibvorgang ausgelößt. die Liste "Wr#" bestimmt das Zielpattern, der Button "write" startet dann den kopiervorgang (hier steckt mein aktuelles Problem, dazu unten mehr), die Liste "Ptn#" soll später Daten aus dem "Memory"- SVA ins "Brain" schreiben, also ein Patternwahlknopf. Dieser hat bisher aber noch keine Funktion, weil ich bevor ich das mache das aktuelle Problem lösen will und ich die Übersicht behalte. Bis hierhin will ich es nur schaffen, dass die 4 memory"Slots" korrekt beschrieben werden.
jetzt zur Struktur:
Eingänge I,V: Index und Value des User input (parent)
Makro "control" beinhaltet Panelelemente und von ihnen ausgelößte Iterationen
Corecell: Edit feed: bereitet die Daten für das EditSVA auf
Corecell: Memory feed: bereitet die Daten für das MemorySVA auf
Corecell: Brain feed: bereitet die Daten für die Sequencerengine auf
Macreo "Tables" beinhaltet die Event tables.
im angehängten Ensemble funktioniert die sache auch mit dem Richtigen Ergebnis, aber nur, weil die Iteration IT'wr zweimal durchläuft. dies erreiche ich, indem der Button "Wr" im Gatemodus arbeitet und so die Iteration einmal beim anklicken startet und einmal beim loslassen. wenn man draufklickt und nicht loßlässt sieht man, dass nur der erste Step des Zielpatterns mit einem (falschen) Wert beschrieben wird. Das ist unbefriedigend, weil ich für die Stukturhygiene lieber so wenig Events wie möglich haben will. Die Indices werden schon beim Anklicken korrekt durchgezählt, wie im Eventwatcher dargestellt. (Siehe panelscreenshot) Die Werte jedoch sind beim ersten Durchlauf die falschen.
mein Ziel ist es nur eine Iteration zu tätigen und gleich die korrekten Werte aus SVA1 auszulesen.
Jemand ne Idee?