"harter" qauntizirer
Moderator: herw
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030
"harter" qauntizirer
bei audio wahrscheinlich garnich SOOO wichtich, bei events aber umsomehr:
ein "echter" quantizierer, der auch bei 0.5* ne klare entscheidung trifft. besser noch: alles unter (nächster) Ganzzahl wird rigoros abgerundet, erst bei tatschlich neuer Ganzzahl ( = EXAKTE Zahl, oder höher) wird tatsächlich JEDESMAL "aufgerundet".
dieser oftmals benötigte stack mit 0.5000001 oder 0.499999 macht mach wahnsinnig.
* bezieht sich auf raster=1. hier nur nervig, aber zu schaffen. doch was ist, wenn dein raster bspw. 0.1428571... ist (die zahl ist nicht beliebig = es ist der 1/7 kehrwert, oder die größe der zwischenrüme bei 8 latten am zaun (wenn der gesamte zaun 1 ist), weil ja der null-wert leider nicht mitgezählt wird....) wie is hier die korrekte add-konstante????
aber lassen wir das hier unten mal aussen vor: ein HARTER (verlässlicher) qauntizierer - ist das machbar?
ein "echter" quantizierer, der auch bei 0.5* ne klare entscheidung trifft. besser noch: alles unter (nächster) Ganzzahl wird rigoros abgerundet, erst bei tatschlich neuer Ganzzahl ( = EXAKTE Zahl, oder höher) wird tatsächlich JEDESMAL "aufgerundet".
dieser oftmals benötigte stack mit 0.5000001 oder 0.499999 macht mach wahnsinnig.
* bezieht sich auf raster=1. hier nur nervig, aber zu schaffen. doch was ist, wenn dein raster bspw. 0.1428571... ist (die zahl ist nicht beliebig = es ist der 1/7 kehrwert, oder die größe der zwischenrüme bei 8 latten am zaun (wenn der gesamte zaun 1 ist), weil ja der null-wert leider nicht mitgezählt wird....) wie is hier die korrekte add-konstante????
aber lassen wir das hier unten mal aussen vor: ein HARTER (verlässlicher) qauntizierer - ist das machbar?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Re: "harter" qauntizirer
ich denke zunächst erstmal nein, was heißt: kein universeller harter quantisierer, der alle Eventualitäten berücksichtigt.helmsklamm hat geschrieben:...
aber lassen wir das hier unten mal aussen vor: ein HARTER (verlässlicher) qauntizierer - ist das machbar?
Man schielt unbewusst zu sehr auf die Dezimaldarstellung von Zahlen; das harte Quantisieren geschieht ja nicht durch Vergleich mit den Nachkommastellen der Dezimaldarstellung, sondern in den Binärzahlen; allein schon dadurch gibt es Unterschiede in Rundungen. Dann hat man zu beachten, dass ein Computer exakte Vergleiche (Gleichheit) nur im Sinne der Rechengenauigkeit vornehmen kann. Insofern muss man NEIN sagen.
ABER wenn die Datenmenge, insbesondere ihre Auflösung (1/8, 1/127/, 1/1000 etc) bekannt ist, dann kann man zunächst mit den entsprechenden ganzzahligen Vielfachen arbeiten, dort mit der Modulo-Funktion eine Aufsplittung vornehmen (harte Quantisierung hieße dort, dass die Ganzzahldivision den Rest 0 ergibt (dies ist exakt!)) und erst dann wieder entsprechend die beiden Zweige weiterverarbeitet.
ciao herw
-
- synthesist
- Beiträge: 90
- Registriert: 6. März 2010, 18:18
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
ich hab das Bildchen mal ergänzt.krümelmonster hat geschrieben:Oops, wo ist das attachment geblieben ?
Das Bildchen ist vielleicht zu klein
Na, dann eben ein zip.
Viele Grüße, Gerald.
Es funktioniert tadelos - schöne eindeutige Lösung; worauf sich helmsklamms Frage bezieht, ist allerdings das im Handbuch beschriebene Rundungsproblem, bei dem man nicht sicher sein kann, dass bei einer Quantisierung auf Bruchteile (Siebtel, Hundertsiebenundzwanzigstel etc.) richtig und immer eindeutig quantisiert wird.
Vielleicht kann ja helmsklamm mal das konkrete Makro, bei dem das Problem auftritt, hier hochladen.
Ich denke aber, dass man für jede spezielle Quantisierung eine eigene Routine schreiben muss, vor allem dann, wenn man so kleine Abweichungen wie in der fünften Nachkommstelle hat. Unabhängig davon kommt man aber eben immer an irgendwelche CPU-bedingten Rundungen nicht vorbei. Das ist eben der Fluch der Digitalisierung.
ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030
-
- synthesist
- Beiträge: 90
- Registriert: 6. März 2010, 18:18
Hallihallo !
Freut mich , daß es gefällt !
Ist übrigens eins meiner allerersten CoreMacros überhaupt.
Hatte auch schon mal daran gedacht, das hochzuladen, da ich mir schon dachte, daß das noch nicht jeder kennt.
Aber dann interessiert es ja doch keinen.
Egal, ich finde ihn klasse, den Integerator; er findet sich ja auch immer mal wieder ein.
Tjaja, die Sache mit dem Rundungsproblem ist schon ein ...
Man denke nur an sämtliche Timer.
Ich denke mir dazu, daß eine vernünftige Erwartungshaltung hinsichtlich der Wertemenge am besten weiterhilft.
Ansonsten ?
Irgendwann kommt man halt entweder um das .49/.5-Problem nicht herum, oder man akzeptiert einen Fehler, der wiederum in Absprache mit der Wertemenge ziemlich o.k. sein kann, oder: ....oh, ....oh, .....
Au wacker, ich bin einfach zu müde, um noch meinen Senf zu den anderen Themen geben zu können.
Ciao, Gerald.
Freut mich , daß es gefällt !
Ist übrigens eins meiner allerersten CoreMacros überhaupt.
Hatte auch schon mal daran gedacht, das hochzuladen, da ich mir schon dachte, daß das noch nicht jeder kennt.
Aber dann interessiert es ja doch keinen.
Egal, ich finde ihn klasse, den Integerator; er findet sich ja auch immer mal wieder ein.
Tjaja, die Sache mit dem Rundungsproblem ist schon ein ...
Man denke nur an sämtliche Timer.
Ich denke mir dazu, daß eine vernünftige Erwartungshaltung hinsichtlich der Wertemenge am besten weiterhilft.
Ansonsten ?
Irgendwann kommt man halt entweder um das .49/.5-Problem nicht herum, oder man akzeptiert einen Fehler, der wiederum in Absprache mit der Wertemenge ziemlich o.k. sein kann, oder: ....oh, ....oh, .....
Au wacker, ich bin einfach zu müde, um noch meinen Senf zu den anderen Themen geben zu können.
Ciao, Gerald.
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
ja, da sagst Du was Wahres. Es gibt bei Analog-Digitalen Problemen keine Universallösungen; insbesondere der Übergang von Floating-Zahlen zu Integer-Zahlen muss man genau aufpassen.krümelmonster hat geschrieben:Hallihallo !
Freut mich , daß es gefällt !
Ist übrigens eins meiner allerersten CoreMacros überhaupt.
...
Ich denke mir dazu, daß eine vernünftige Erwartungshaltung hinsichtlich der Wertemenge am besten weiterhilft.
...
Ciao, Gerald.
ciao herw
PS: AUFSTEHEN!!!
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030
@krümel:
ähm, wozu is deun macro eigentlich gedacht? -"rundfehlerfrei" quantizen tuts jedenfalls nicht verlässlich. -> allerdings is schon so, das es abhängig von der ganzzahl vorneweg (gerade/ungerade) verlässlich rundet: bei 1,3,5... immer bei n.50 und bei 2,4,6 immer bei n.51.
achja, integrator is bislang auch wikifrei.
ich bitte auch in dieser hinsicht doch um aufklärung.
ähm, wozu is deun macro eigentlich gedacht? -"rundfehlerfrei" quantizen tuts jedenfalls nicht verlässlich. -> allerdings is schon so, das es abhängig von der ganzzahl vorneweg (gerade/ungerade) verlässlich rundet: bei 1,3,5... immer bei n.50 und bei 2,4,6 immer bei n.51.
achja, integrator is bislang auch wikifrei.
ich bitte auch in dieser hinsicht doch um aufklärung.
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
"... helfen!"krümelmonster hat geschrieben:@helmsklamm:
Vorausgesetzt, es bleibt zunächst bei raster=1 - würde da folgender "Integerator" helfen ?
heißt: Du könntest seinen Integerator dazu benutzen. Der Integerator schneidet zuverlässig alle Nachkommstellen ab.
Daraus kann man eine zuverlässige Rundungsfunktion erstellen.
Krümelmonster meint mit dem Integerator die so genannte Gaußklammerfunktion f(x)=[x]. In Programmiersprachen heißt die Funktion INT(x) bzw. TRUNC(x).
-
- synth gott
- Beiträge: 1011
- Registriert: 10. Mai 2006, 16:21
- Wohnort: 030