modulo offset???
Moderator: herw
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030
modulo offset???
sry, aber ich hab grad nen totalen aussetzer:
prob: sequenza rattert brav von pos 0-63. möchte ich die seqeunz kürzen, einfach am modulo B eingang die wunschkonstante setzen und die range wird nach konstantenvorgabe sauber "geloopt". soweit so klar.
nun möchte ich aber aber einen "offset", bspw. soll der sequenza nur die positionen 7-19 spielen. damit es bei 19 wieder nullt, baruch ich also eine 18konstante am B IN. soweit so einfach,. das prob sind die 7 steps offset. häng ich einen addierer vor das modulo, beginnt alles stets bei null, hänge ich den addi dahinter, läuft es logischerweise hinten bis 26 statt 19.
ich denk, ich brauch ein start- und ein endmodulo, aber ich hab grad vollblockade: ich krieg diesen zwangsweise 0 start nicht "geoffset".
appropos: sofern ich das überblicke "modulot" nur der B , während A keine ahnung was macht - hab ich leider auch komplett vergessen:(
und wozu dient eigentlich der div-out? ausser das er nur integer ausgibt, unterscheidet er sich doch nicht vom normalen div, oder?
prob: sequenza rattert brav von pos 0-63. möchte ich die seqeunz kürzen, einfach am modulo B eingang die wunschkonstante setzen und die range wird nach konstantenvorgabe sauber "geloopt". soweit so klar.
nun möchte ich aber aber einen "offset", bspw. soll der sequenza nur die positionen 7-19 spielen. damit es bei 19 wieder nullt, baruch ich also eine 18konstante am B IN. soweit so einfach,. das prob sind die 7 steps offset. häng ich einen addierer vor das modulo, beginnt alles stets bei null, hänge ich den addi dahinter, läuft es logischerweise hinten bis 26 statt 19.
ich denk, ich brauch ein start- und ein endmodulo, aber ich hab grad vollblockade: ich krieg diesen zwangsweise 0 start nicht "geoffset".
appropos: sofern ich das überblicke "modulot" nur der B , während A keine ahnung was macht - hab ich leider auch komplett vergessen:(
und wozu dient eigentlich der div-out? ausser das er nur integer ausgibt, unterscheidet er sich doch nicht vom normalen div, oder?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
- Triton
- synthesist
- Beiträge: 58
- Registriert: 1. August 2010, 17:22
- Wohnort: Gießen
- Kontaktdaten:
Re: modulo offset???
Argh, Modulo ist immer so vertrackt.
Mal probieren:
(A-19) mod 12 + 7
bzw. (A+5) mod 12 + 7 (müsst dasselbe rauskommen)
Da landet die 19 auf der 7. Hm.
Welche Zahl soll denn auf welche Zahl gehen? 0-63 gehen kreisweise rein, raus soll der Loop 7-19?
---
Der Div macht die normale Integer-Division glaub ich, mit konsequentem Abrunden.
Mal probieren:
(A-19) mod 12 + 7
bzw. (A+5) mod 12 + 7 (müsst dasselbe rauskommen)
Da landet die 19 auf der 7. Hm.
Welche Zahl soll denn auf welche Zahl gehen? 0-63 gehen kreisweise rein, raus soll der Loop 7-19?
---
Der Div macht die normale Integer-Division glaub ich, mit konsequentem Abrunden.
- KlangRaum
- synth guru
- Beiträge: 647
- Registriert: 1. August 2006, 12:55
Re: modulo offset???
Tip: Nie mit einer absoluten Start bis Endposition rechnen sondern immer mit Offset und Anzahl der Steps.... dann macht das mit dem Addieren und anschliessendem Modulo (zum wrappen) keine Probleme. Start und Ende sind dann Werte, die ganz am Ende der Berechnung fast schon wie nebenbei rauskommen.
Ich schau später mal, irgendwo hab ich ne Universalschaltung...
Gruss
Peter
Ich schau später mal, irgendwo hab ich ne Universalschaltung...
Gruss
Peter
Siggi Natur ?
- KlangRaum
- synth guru
- Beiträge: 647
- Registriert: 1. August 2006, 12:55
Re: modulo offset???
Schau mal hier, vielleicht hilft Dir das weiter:
Ist eigentlich selbsterklärend...
Pattern Len gibt die Länge vor, Clockshift verlegt den Startpunkt nach vorne (Rotation). Vom Prinzip ist das auch leicht zu erweitern, wenn Du zb einen Ausschnit von 16 aus 64 Steps abspielen willst...
Gruss
Peter
Ist eigentlich selbsterklärend...
Pattern Len gibt die Länge vor, Clockshift verlegt den Startpunkt nach vorne (Rotation). Vom Prinzip ist das auch leicht zu erweitern, wenn Du zb einen Ausschnit von 16 aus 64 Steps abspielen willst...
Gruss
Peter
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Siggi Natur ?
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030
Re: modulo offset???
genau so.Triton hat geschrieben:
Welche Zahl soll denn auf welche Zahl gehen? 0-63 gehen kreisweise rein, raus soll der Loop 7-19?
@klang…
ich hab mich wohl missverstädnlich ausgedrückt - ich wollte keinen zeitlichen versatz, sondern ein "value-offset". deine schalte generiert aber nur einen zeitlichen offset: Das pattern-modulo entspricht ja meiner eh vorhandenen 0-63. das shift-add ist klar, das letzte modulo nullt wieder alles, allerdings um den shiftwert zeitlich versetzt!
ich such aber nen echten werteversatz mit "wrap" beschneidung: wenn ich vorne 5 positionen zuaddiere, sollen hinten 5 positionen abgeschnitten werden.
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
- Rampensau
- meister
- Beiträge: 192
- Registriert: 6. Dezember 2009, 20:32
Re: modulo offset???
Das Intervall ist ja [7, 19] = [0+7, 12+7]. Umfasst also 13 Schritte und ist um 7 Schritte von der 0 verschoben.
Folglich benötigst du x mod 13 und addierst direkt danach ne 7 hinzu. Wenn du die Intervallgrenzen doch direkt in Anfangs- und Endschritt eingeben willst, ergibt sich das Offset aus dem Startwert. Und der Modulooperator (also die Anzahl der Schritte) aus der Differenz von Anfangs- und Endschritt +1.
Wenn man jetzt den Fall abfangen will, dass sich der Startwert höher als der Endwert eingeben lässt, also dass der Zähler rückwärts läuft , muss man auch noch was zwischenklemmen. Ich habs mit nem Rectify-sign gelöst. Wer näher nachvollziehen will, was das Modulo macht, kann ja mal in die Core-Umsetzung reinschauen.
Folglich benötigst du x mod 13 und addierst direkt danach ne 7 hinzu. Wenn du die Intervallgrenzen doch direkt in Anfangs- und Endschritt eingeben willst, ergibt sich das Offset aus dem Startwert. Und der Modulooperator (also die Anzahl der Schritte) aus der Differenz von Anfangs- und Endschritt +1.
Wenn man jetzt den Fall abfangen will, dass sich der Startwert höher als der Endwert eingeben lässt, also dass der Zähler rückwärts läuft , muss man auch noch was zwischenklemmen. Ich habs mit nem Rectify-sign gelöst. Wer näher nachvollziehen will, was das Modulo macht, kann ja mal in die Core-Umsetzung reinschauen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Rampensau am 3. März 2011, 22:06, insgesamt 1-mal geändert.
Einstieg und Weiterführendes in Core:
OSZILLATOREN [1] BASISWELLEN, OSZILLATOREN [2] ALIASING, OSZILLATOREN [3] WAVETABLES
OSZILLATOREN [1] BASISWELLEN, OSZILLATOREN [2] ALIASING, OSZILLATOREN [3] WAVETABLES
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Re: modulo offset???
das ist sehr schön, dass du primary und core direkt im Vergleich darstellst, so muss es sein. So viel Core wie möglich und so wenig primary wie nötig!!Rampensau hat geschrieben:Das Intervall ist ja [7, 19] = [0+7, 12+7]. Umfasst also 13 Schritte und ist um 7 Schritte von der 0 verschoben.
Folglich benötigst du x mod 13 und addierst direkt danach ne 7 hinzu. Wenn du die Intervallgrenzen doch direkt in Anfangs- und Endschritt eingeben willst, ergibt sich das Offset aus dem Startwert. Und der Modulooperator (also die Anzahl der Schritte) aus der Differenz von Anfangs- und Endschritt +1.
Wenn man jetzt den Fall abfangen will, dass sich der Startwert höher als der Endwert eingeben lässt, also dass der Zähler rückwärts läuft , muss man auch noch was zwischenklemmen. Ich habs mit nem Rectify-sign gelöst. Wer näher nachvollziehen will, was das Modulo macht, kann ja mal in die Core-Umsetzung reinschauen.
- Rampensau
- meister
- Beiträge: 192
- Registriert: 6. Dezember 2009, 20:32
Re: modulo offset???
@Peter:
das Modulo in der Mitte in deiner Schaltung ist redundant. Das kann man doch weglassen.
Es gilt: wobei C der Rotations-Parameter ist. Unsere Schaltungen sind übrigens (abgesehen von den Step-Filtern und der Clockrate) identisch, wenn ich in meiner Schaltung die Rotation vorklemme und du in deiner Schaltung noch das Offset hinterklemmst.
"mod" wird übrigens oft als "%" geschrieben. In dem Zusammenhang wird "div" als "/" geschrieben.
Wie schon richtig beobachtet, ist "div" das Ergebnis einer ganzzahligen Division, ohne Beachtung der Nachkommastellen.
Modulo ist dann der Rest unter Beachtung der Nachkommastellen.
Bsp:
1.5 / 1 = 1
1.5 % 1 = 0.5
denn:
1 * 1 + 0.5 = 1.5
Dieser Fall ist mir unklar:
Bsp:
-5 / 2 = -3 (????)
-5 % 2 = 1
denn:
-3 * 2 +1 = -5
Der Windows-Taschenrechner lässt negative Reste (?) zu, also sieht da die Rechnung anders aus:
Bsp:
-5 / 2 = -2
-5 % 2 = -1 (????)
denn:
-2 * 2 +(-1) = -5
1. Kann ein Rest ja nicht negativ sein, oder?
2. Wenn man auf die Art zB Dezimalzahlen in Binärdarstellung konvertiert, ist der zweite Weg (Windows-Rechner) nicht zulässig.
3. Das Ergebnis der Div-Operation ist im ersten Weg einfach nur unbefriedigend und nicht wirklich intuitiv.
4. Rechnet der Windows Rechner falsch?
Grüße
Benjamin
das Modulo in der Mitte in deiner Schaltung ist redundant. Das kann man doch weglassen.
Es gilt: wobei C der Rotations-Parameter ist. Unsere Schaltungen sind übrigens (abgesehen von den Step-Filtern und der Clockrate) identisch, wenn ich in meiner Schaltung die Rotation vorklemme und du in deiner Schaltung noch das Offset hinterklemmst.
"mod" wird übrigens oft als "%" geschrieben. In dem Zusammenhang wird "div" als "/" geschrieben.
Wie schon richtig beobachtet, ist "div" das Ergebnis einer ganzzahligen Division, ohne Beachtung der Nachkommastellen.
Modulo ist dann der Rest unter Beachtung der Nachkommastellen.
Bsp:
1.5 / 1 = 1
1.5 % 1 = 0.5
denn:
1 * 1 + 0.5 = 1.5
Dieser Fall ist mir unklar:
Bsp:
-5 / 2 = -3 (????)
-5 % 2 = 1
denn:
-3 * 2 +1 = -5
Der Windows-Taschenrechner lässt negative Reste (?) zu, also sieht da die Rechnung anders aus:
Bsp:
-5 / 2 = -2
-5 % 2 = -1 (????)
denn:
-2 * 2 +(-1) = -5
1. Kann ein Rest ja nicht negativ sein, oder?
2. Wenn man auf die Art zB Dezimalzahlen in Binärdarstellung konvertiert, ist der zweite Weg (Windows-Rechner) nicht zulässig.
3. Das Ergebnis der Div-Operation ist im ersten Weg einfach nur unbefriedigend und nicht wirklich intuitiv.
4. Rechnet der Windows Rechner falsch?
Core ist ja auch super! Allein schon wegen der QuickBusse.herw hat geschrieben:das ist sehr schön, dass du primary und core direkt im Vergleich darstellst, so muss es sein. So viel Core wie möglich und so wenig primary wie nötig!!
Grüße
Benjamin
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Einstieg und Weiterführendes in Core:
OSZILLATOREN [1] BASISWELLEN, OSZILLATOREN [2] ALIASING, OSZILLATOREN [3] WAVETABLES
OSZILLATOREN [1] BASISWELLEN, OSZILLATOREN [2] ALIASING, OSZILLATOREN [3] WAVETABLES
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030
Re: modulo offset???
hey benji
vielen dank. die schalte iss ja herrlich simpel. kA was ich hier fürn ausfall hatte. danke.
vielen dank. die schalte iss ja herrlich simpel. kA was ich hier fürn ausfall hatte. danke.
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.