3.2.3 Modellrechnungen mit verschiedenen Clock-Raten
Woran liegt es? Nun wenn man bedenkt, dass dort mit Hilfe der Logarithmus- und der Exponentialfunktion ein Wurzelwert berechnet wird, dann lohnt sich ein Blick auf die Rechengenauigkeit:
einige kleine Modellrechnungen:
Es wird in dem Potenz-Makro die Wurzel berechnet, wobei t die Zeit in Sekunden, r die clock-Rate und b der Krümmungsgrad ist.
REAKTOR berechnet dies nach der Rechenvorschrift: Setzen wir zunächst mal die ControlRate CR=400, b=-5 und t=1s (entspricht time=60) : und nun ... CR=400, b=-0,1 und t=10s (time=80) : Die Hüllkurve ist fast linear und endet korrekt nach 10s.
Wir vergleichen nun mit der SampleRate SR.R=44100, b=-5 und t=1s: setzt man aber nun SR.R=44100, b=-0,5 , t=5s, so erhält man 0,999998; verringert man b, erhält man immer denselben Wert 0,999999 und für b=-0,1 gar 1! Mit anderen Worten: der Hüllkurvenwert verändert sich gar nicht mehr.
Woran liegt es? - an der Norm IEEE 754. Diese regelt die Umrechnung von Dezimalzahlen in Gleitkommazahlen. REAKTOR benutzt für die Potenzrechnungen die Logarithmus- und die Exponentialfunktion nur im 32bit-Format.
D.h. mit der sechsten Stelle nach dem Komma hört die Genauigkeit auf!
Mit anderen Worten, solange diese beiden Funktionen nicht auf 64-bit-Genauigkeit erhöht werden (leider noch nicht in Version R5.9.0), kann man damit nicht rechnen.
Wir testen mal mit einer ControlRate von CR=800, b=-0,1 und t=10s: 0,999991; das geht noch. Bei t=100s kommt man auch schon wieder an die Rechengrenze, bei CR=400 geht es wieder gerade. D.h. die ControlRate stellt eine „natürliche Rechengrenze” dar.
HÜLLKURVEN
Moderator: herw
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
HÜLLKURVEN
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- meister
- Beiträge: 168
- Registriert: 10. August 2006, 14:06
- Wohnort: Berlin
Re: HÜLLKURVEN
Hmm, das ist schon schade.
ich hoffe dass sich das regelt in Zukunft.
Das Rechenmodell find ich sehr gut! Du hast das auch sehr gut erklärt.
Geogebra benutze ich jetzt auch. Bei der Lektüre von wikipedia über Gleichkommazahlen ist mir aufgefallen dass ich einiges in meinem Framework genauso gemacht habe. (Speicherung von Gleitkommazahlen in einen Integer- Speicher mittels Mantisse) Hätt ich das doch mal vorher gelesen
ich werd auch mal versuchen Dein Rechenmodell in das Framework zu integrieren wenn Du nichts dagegen hast. ich denke schon länger über einen Multistepper nach dessen Steplängen temposynchronisierbar sind. In jedem Step könnte man dann "curve" start- und stopamplitude einstellen.
ich hoffe dass sich das regelt in Zukunft.
Das Rechenmodell find ich sehr gut! Du hast das auch sehr gut erklärt.
Geogebra benutze ich jetzt auch. Bei der Lektüre von wikipedia über Gleichkommazahlen ist mir aufgefallen dass ich einiges in meinem Framework genauso gemacht habe. (Speicherung von Gleitkommazahlen in einen Integer- Speicher mittels Mantisse) Hätt ich das doch mal vorher gelesen
ich werd auch mal versuchen Dein Rechenmodell in das Framework zu integrieren wenn Du nichts dagegen hast. ich denke schon länger über einen Multistepper nach dessen Steplängen temposynchronisierbar sind. In jedem Step könnte man dann "curve" start- und stopamplitude einstellen.
Reaktor Befürworter
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Re: HÜLLKURVEN
ja mach mal - ich arbeite daran schon seit zwei Jahren. Das Problem ist, dass man Zeit braucht; es ist nicht mal eben an einem Wochenende erledigt. Meistens kann ich eine Woche daran arbeiten und dann ruft wieder die berufliche Pflicht so sehr, dass ich es wieder für einige Wochen auf Eis lege. Ich notiere mir zwar die meisten Ideen, aber es kostet doch immer wieder Zeit, sich einzuarbeiten; schnell ist dann wieder ein halbes Jahr vergangen.MvKeinen hat geschrieben:Hmm, das ist schon schade.
ich hoffe dass sich das regelt in Zukunft.
Das Rechenmodell find ich sehr gut! Du hast das auch sehr gut erklärt.
Geogebra benutze ich jetzt auch. Bei der Lektüre von wikipedia über Gleichkommazahlen ist mir aufgefallen dass ich einiges in meinem Framework genauso gemacht habe. (Speicherung von Gleitkommazahlen in einen Integer- Speicher mittels Mantisse) Hätt ich das doch mal vorher gelesen
ich werd auch mal versuchen, Dein Rechenmodell in das Framework zu integrieren wenn Du nichts dagegen hast. ich denke schon länger über einen Multistepper nach, dessen Steplängen temposynchronisierbar sind. In jedem Step könnte man dann "curve" start- und stopamplitude einstellen.
Das gute an diesem mathematischen Modell ist, dass es eine eindeutige Abbruchbedingung für die Phase gibt. Damit kann man die Phase wechseln, wie in dem Core-ADSR von NI.
Dass man mit reduzierter Clock in einer AudioCoreCell arbeiten muss, ist nicht so ein großes Problem: man kann relativ leicht eine (sogar variable) reduzierte Clock in AudioCoreCells erstellen (kommt in einer der nächsten Posts; ich muss allerdings noch Urheberrechte abklären) und zwar so günstig wie eine von außen eingeschleuste ControlRate.
Das Problem der Rundung tritt nur auf, wenn die Krümmung sehr gering ist und die Zeitdauer sehr lang (mehr als eine Minute). Bei langen Zeitdauern kann man sich auch mit einer leichten Krümmung durchaus begnügen, wenn es unbedingt mit AudioRate getaktet werden soll. Zur reinen Steuerung von Modulationen reicht auch die ControlRate locker aus.
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Re: HÜLLKURVEN
… genau in einer solchen Phase bin ich mal wieder, aber ich arbeite dranherw hat geschrieben:... Meistens kann ich eine Woche daran arbeiten und dann ruft wieder die berufliche Pflicht so sehr, dass ich es wieder für einige Wochen auf Eis lege. Ich notiere mir zwar die meisten Ideen, aber es kostet doch immer wieder Zeit, sich einzuarbeiten; schnell ist dann wieder ein halbes Jahr vergangen.
…
- lindeman
- user
- Beiträge: 10
- Registriert: 3. Dezember 2013, 08:35
- Wohnort: Plauen
Re: HÜLLKURVEN
Hallo zusammen,
da ich mal wieder Zeit hatte, mich der digitalen Klangsynthese zu widmen, hier meine mathematische Interpretation analoger Hüllkurven,
basierend auf meinem Amateurwissen was Elektrotechnik und die Entladekurve eines Kondensators angeht. Ich glaube die alten ADSRs, welche auf einem NE556 basieren, müssten in etwas so ausschauen. Die Nichtliniarität (Krümmung) kann über den Paramerter "n" gesteuert werden... Alle Kurven sind normiert (nur verschoben der Ansicht halber, grundsätzlich aber von 0,0-1,1).
Wenn ich diese Woche noch dazu komme, dann werd ich das Ganze mal im Reaktor umsetzen, ich bin mir noch nicht ganz im Klaren darüber, wie ich die einzelnen Phasen verbinden kann... naja, wir werden sehen
Vielleicht hilfreich für den einen oder anderen, wenn auch nicht so übersichtlich und umfangreich erläutert, wie im Rest des Threads...
https://www.desmos.com/calculator/j5ixqk5ttp
Schönen Abend
da ich mal wieder Zeit hatte, mich der digitalen Klangsynthese zu widmen, hier meine mathematische Interpretation analoger Hüllkurven,
basierend auf meinem Amateurwissen was Elektrotechnik und die Entladekurve eines Kondensators angeht. Ich glaube die alten ADSRs, welche auf einem NE556 basieren, müssten in etwas so ausschauen. Die Nichtliniarität (Krümmung) kann über den Paramerter "n" gesteuert werden... Alle Kurven sind normiert (nur verschoben der Ansicht halber, grundsätzlich aber von 0,0-1,1).
Wenn ich diese Woche noch dazu komme, dann werd ich das Ganze mal im Reaktor umsetzen, ich bin mir noch nicht ganz im Klaren darüber, wie ich die einzelnen Phasen verbinden kann... naja, wir werden sehen
Vielleicht hilfreich für den einen oder anderen, wenn auch nicht so übersichtlich und umfangreich erläutert, wie im Rest des Threads...
https://www.desmos.com/calculator/j5ixqk5ttp
Schönen Abend
What one man can invent another can discover.
- Sherlock Homes
- Sherlock Homes
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Re: HÜLLKURVEN
Hallo lindemann,lindeman hat geschrieben:Hallo zusammen,
da ich mal wieder Zeit hatte, mich der digitalen Klangsynthese zu widmen, hier meine mathematische Interpretation analoger Hüllkurven,
basierend auf meinem Amateurwissen was Elektrotechnik und die Entladekurve eines Kondensators angeht. Ich glaube die alten ADSRs, welche auf einem NE556 basieren, müssten in etwas so ausschauen. Die Nichtliniarität (Krümmung) kann über den Paramerter "n" gesteuert werden... Alle Kurven sind normiert (nur verschoben der Ansicht halber, grundsätzlich aber von 0,0-1,1).
Wenn ich diese Woche noch dazu komme, dann werd ich das Ganze mal im Reaktor umsetzen, ich bin mir noch nicht ganz im Klaren darüber, wie ich die einzelnen Phasen verbinden kann... naja, wir werden sehen
Vielleicht hilfreich für den einen oder anderen, wenn auch nicht so übersichtlich und umfangreich erläutert, wie im Rest des Threads...
https://www.desmos.com/calculator/j5ixqk5ttp
Schönen Abend
ja die Sättigungskurven sind immer der richtige Ansatz. In REAKTOR kann man diese nur mit hohem Aufwand benutzen, da eine direkte Berechnung aus einem linearen Ablauf (wie bei einer Excel-Tabelle) unverhältnismäßig viel Rechenpower benötigt. Daher habe ich in meinem Ansatz einen iterative Berechnung gewählt; also Berechnung ausschließlich aus dem vorangehenden Wert (im Wesentlichen) durch eine Multiplikation. Dies hat auch den Vorteil, dass man für die „Anschlussphase” den letzen Wert direkt übernehmen kann. Das ist bei einer expliziten Berechnung der Funktionswerte unverhältnismäßig kompliziert.
Bei der iterativen Berechnung muss man allerdings für den Start bei 0 einen Trick verwenden.
Übrigens musst du für den Fall einer linearen Phase noch eine Sonderbehandlung einbauen.
Ich bin gespannt auf deine Lösung. Falls diese sehr viel Rechenpower benötigt, so kannst du auch eine niedrigere ClockRate (z.B. 400Hz) benutzen. Bei relativ langen Phasen reicht das aus. Sind die Phasen sehr kurz, dann muss man die ClockRate umschalten.
Leider habe ich aus diversen Gründen immer noch keine Zeit gefunden, eine komplette Lösung zu erstellen. ich glaube ich muss bis zu meiner Pensionierung warten.
ciao herw