REAKTOR-Mathematik

Diskussionsforum für Fragen zur Struktur und Implementation in REAKTOR, auch DSP, Literatur und begleitende Software

Moderator: herw

Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

REAKTOR-Mathematik

Beitrag von herw »

Ich denke, dass jeder von uns mal an eine Stelle kommt, bei der er oder sie sich fragt: ich will diesen oder jenen mathematischen "Trick" anwenden, um ein ganz bestimmtes Verhalten oder Effekt in einem Ensemble zu erreichen und man hat das Gefühl, dass es nur von einer bestimmten mathematischen Denkweise abhängt, dass dieser Trick funktioniert, doch wie erreiche ich das?

Hier sollte man die Fragen stellen. Vielleicht entdeckt mal einer von Euch eine mathematische Struktur und weiß partout nichts damit anzufangen: fragt!!

ciao herw

aktualisierte Übersicht
  1. Die Modulo-Funktion a mod b
  2. arctan-Shaper
  3. Range-Konverter
Zuletzt geändert von herw am 27. Juni 2006, 14:11, insgesamt 19-mal geändert.
magneton
synth doctor
Beiträge: 263
Registriert: 17. April 2006, 13:00
Wohnort: mannheim

Beitrag von magneton »

danke für das angebot.
wenn die nächste instrumentenbau session ansteht, komme ich sicherlich gerne darauf zurück.
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

artiger service herw!

jo, vielleicht könntest du mal leichtverständlich das modulo erklären. so ungefähr is das ding klar, trotzdem muss ich mich meist mit try and error rantasten, bis es tatsächlich das gewünschte ergebniss liefert.
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

MODULO-FUNKTION

Beitrag von herw »

Die Modulo-Funktion a mod b

Mathematische Definition
Die Modulo-Funktion ist eine Funktion zweier natürlicher Zahlen. Sie liefert den Rest, wenn die Zahl b so oft von a subtrahiert wird, dass bei weiterem Subtrahieren die Differenz ihr Vorzeichen ändern würde. (Stöcker, Taschenbuch mathematischer Formeln, Verlag Harry Deutsch S. 134). Eine weitere Defintion und Beschreibung findet man bei Modulo (Rest) - wikipedia

Interessant ist an dieser Definition, dass damit schon fast ein Programmieralgorithmus angegeben wird.

Beispiele
Umgangssprachlich heißt das, dass die Modulo-Funktion den Rest bei einer Division angibt (Rechnen in der Grundschule).
Dabei gilt für den Rest r: 0<=r<b. Wählt man zum Beispiel b=3 und lässt a die ganzen Zahlen von 0 bis z.B. 17 durchlaufen, so ergeben sich die Reste 0, 1, 2, 0, 1, 2, 0, 1, 2, ..., also eine zyklische Zahlenfolge.

MODULO in REAKTOR
Nun, das Modulo-Modul liefert genau diesen Rest und noch viel mehr.
Bild
Auf primary-level stellt das Modul nicht nur den Rest r am Ausgang mod zur Verfügung, sondern gibt am Ausgang div auch noch an, wie oft b von a subtrahiert wurde (oder umgangssprachlich, wie oft b in a „hineinpasst”).
Bild
Ich habe mal ein kleines Ensemble zum Testen erstellt: Modulo.ens
Interessant ist, dass REAKTOR für beide Zahlen auch Dezimalbrüche zulässt, also die Definiton sogar erweitert. Stellt man zum Beispiel den Knopf a auf den Wert 15,8 und b auf 3,1, so erhält man am Ausgang div den Wert 5 und an mod 0,3, denn 15,8-5·3,1=0,3.
Bild
Man kann die Funktion auch auf negative Werte anwenden, doch sind die Ergebnisse sicherlich nur mit viel Überlegung zu gebrauchen (aber wer weiß, was man sich alles ausdenken kann). Siehe hierzu den obigen Link bei wikipedia.
Auf CoreCell-Ebene steht die modulo-Funktion für ganze Zahlen (integer) zur Verfügung. Im Macro CoreCell 1 findet man diese eingebaut. Ein Blick in die CoreCell selbst gibt uns die Vorgehensweise direkt wieder:
Bild
Es wird eine Division mit ganzen Zahlen durchgeführt, das Ergebnis mit b multipliziert und vom ursprünglichen Wert abgezogen. Es steht eigentlich nichts im Wege, dass man ein entsprechendes Modul für Fließkommazahlen (floating point numbers), also Dezimalbrüchen anlegt. Jeder kann das ja mal als Übung ausprobieren; ich habe allerdings nicht untersucht, ob es nicht zu eventuellen Rundungsungenauigkeiten kommen kann.

Der Div-Ausgang wird nicht zur Verfügung gestellt, doch kann man sich den ganz leicht ergänzen. Das Ergebnis der Division ist ja div; also basteln wir uns eine eigene Corecell (siehe in der obigen Abbildung rechts)
Man muss hier allerdings beachten, dass die Corecell nur mit ganzen Zahlen gefüttert wird, sonst gibt es unvorhergesehene Ergebnisse.

Anwendungen
  • Sequenzer zählt - Einteilung in Abschnitte (Takte)
  • Abfrage von Bereichen eines XY-Moduls oder einer Mouse-Area
  • Mehrfachverzweigungen
ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von herw am 22. Juni 2006, 19:45, insgesamt 2-mal geändert.
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

süper herw!

schade das du nicht das manual geschrieben hast. oder das dieses "native" sprechende forum nich schon vor nem jahr hier war. hätt mir jede menge zeit gespart, denn genau so wünscht sich wohl jeder die modul-"referenz": kurzeinführung/definition, allgemeine arbeitsweise, 1,2 praxisbeispiele, gegebenenfalls stolperfallen-hinweis und manchmal n kleines ens dazu.
da lässt sich NI über 200 seiten über install, plug/host, computer allgemein aus, was mE jeder der sich reaktor holt sowieso weiß oder nach 3 minuten rausgefunden hat, aber da wo´s interessant wird gibts pro modul 2 sätze (wenn überhaupt). <-schande sowas.
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:süper herw!

schade das du nicht das manual geschrieben hast. oder das dieses "native" sprechende forum nich schon vor nem jahr hier war. hätt mir jede menge zeit gespart, denn genau so wünscht sich wohl jeder die modul-"referenz": kurzeinführung/definition, allgemeine arbeitsweise, 1,2 praxisbeispiele, gegebenenfalls stolperfallen-hinweis und manchmal n kleines ens dazu.
da lässt sich NI über 200 seiten über install, plug/host, computer allgemein aus, was mE jeder der sich reaktor holt sowieso weiß oder nach 3 minuten rausgefunden hat, aber da wo´s interessant wird gibts pro modul 2 sätze (wenn überhaupt). <-schande sowas.
Danke fürs Lob!

ciao herw
Benutzeravatar
sternenkrieger
synth professor
Beiträge: 324
Registriert: 26. April 2006, 15:11
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von sternenkrieger »

juo super :)
hab es auch nie verstanden wieso 100 seiten für installation und anleitung wie man es in dem jeweiligen host verwendet draufgehen und der rest eher mager beschrieben wird..
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

zeroDegree hat geschrieben:juo super :)
hab es auch nie verstanden wieso 100 seiten für installation und anleitung wie man es in dem jeweiligen host verwendet draufgehen und der rest eher mager beschrieben wird..
nächste Frage?
::kaffee::
Benutzeravatar
sternenkrieger
synth professor
Beiträge: 324
Registriert: 26. April 2006, 15:11
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von sternenkrieger »

8 spur loop maschine mit effekten und drummodul? wie mach ich dat ? ;)
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

zeroDegree hat geschrieben:8 spur loop maschine mit effekten und drummodul? wie mach ich dat ? ;)
Hände auf den Tisch und Daumen mit Tesa fixieren, dann die anderen Finger perlen lassen; reverse effekt durch Änderung der Perlrichtung. Besonderer Effekt: Abperlen im BinärCode!!!
ciao herw ::LOL::
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

herw hat geschrieben: nächste Frage?
::kaffee::
du hast wohl langeweile, hm?

wahrscheinlich keine richtige beschäftigigungsmassnahme für dich, aber trotzdem:

um das "einschwingverhalten" eines knobs von linear auf "kurvig" umzubauen, wie am besten vorgehen?

im konkreten fall möchte ich anstelle einer lineraren 0-1 line ne art "mitten-exponential" kurve, also im untereren (und oberen) bereich einen "längeren" faderweg (= kleinerer wertebereich). als graph würde das wohl wie n arctangens aussehen -das gleichnamige modul "konvertiert" aber bipolar und überhaupt selstsam (ne menge math dahinter um die range auf 0-1 zu fitten).

ich behelf mich derzeit mit nem controllshaper oder selector, was eigentlich auch ganz gut funzt, aber vielleicht geht das ja noch eleganter?

oder generell gefragt, wofür sind die "geometrie"-module eigentlich gut? wer brauch ne standard range von 0,25/-0.25?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

oki herw, lass voriges geschwafel, hier ne echte aufgabe:

also ne groovebox - sagen wir 8 spuren, die gehen in nen mixer. dort sind pro spur 2 normale send-fx und 2 post "send"-fx. Alle 4 sends lassen sich übern "amount" regler pro spur individuell intensivieren. die "richtigen" sends (die ersten beiden) arbeiten wie bekannt: sie bieten von sich aus nen fx-standardpegel (max), nur das jeweilige spur-signal is idR unterschiedlich.
die post "sends" arbeiten prinzipiell ähnlich, nur haben sie anstelle des fx-standardpegels nen dry/wet knob. damit lässt sich schnell und öfter als manchmal ganz nettklingend perfomen. zumindest, wenn die stellung der d/w knobs nich zu weit in richtung wet geht. denn idR haben ja die einzelnen spuren nur nen "diskreten" anteil zum fx-signal, dh: wenn der fx-knob ziemlich weit auf wet steht, höre ich auch demenstprechend nur die fx-anteile des signals, es wird also so gut wie immer unschön-signifikant leiser.
ich würde aber gerne die knobs auch hin und wieder über mittel-stellung, oder gar in max-stellung faden - nur sollte dabei der pegel, die intensität so wiet wie möglich erhalten bleiben.

in der praxis sieht das so aus:

günstigster fall:

ich hab 1, 2,3 spuren, die relativ viel vom fx über ihren amount bekokmmen. und nur diese spuren sind ungemuted. dann ist idR auch eine totale-wet-fahrt möglich, da das verhältniss (d/w) ungefähr erhalten bleibt.

unünstigster fall:

allerdings habe ich idR auch völlig "effektblinde" (=0 amount) spuren. falls nun, was vorkommen kann, nur diese effektblinden spuren ungemuted wären, hiesse das: bei vollaufdrehen des effekts wäre in diesem fall rein garnichts zu hören.

der normalfall:

ich habe "sowohl-als-auch" spuren ungemuted, bei überschreiten mal mehr, mal weniger dry/wet kommt es demzufolge einfach zu level/intensitäts-rückgang.


der punkt/die herausforderung is nun die, nen musikalischen algorithmus für per se algorithmus-unzugängliche musik (fx) zu finden.
(einer der effekte is granular und manche spuren klingen auch bei minmal-einstaz nur furchtbar).
ich hab da schon n bissl rumprobiert, aber mit meiner simplen plus/minus/mal null "mathematik" is dem partout nich beizukommen. ich denk mir der schlüssle liegt vielleicht in ner art "prozentaddierung" - will heissen: idR hab ich einige spuren, die relativ viel an das fx senden und prozentual (je nach fx-intensität) auch zum "wet" hin LINEAR zunehmen. das hat nich nur obig genannte "auslöchungen" zu folge, sondern klingt prinzipbedingt auch relativ "vorherhörbar". besser, zumindest interessanter, würde es aber klingen wenn hier bedingungen verknüpft wären, bspw. so:
je mehr wir uns dem absoluten wet nähern, um so kleiner wird der relative abstand zwischen den einzelnen spur-wet-signalen.

bsp:

spurA = 90% amount
spurB = 10% amount

wenn nun D/W des effektes 0 wäre, und beide spuren ansonsten ein identisches signal hätten, würden beide gleich klingen, jeweils 100%, denn der D/W regler des effekts arbeitet nur als "substraktion" nie als addition.
bei 50% D/W würden sie in etwa so klingen: A = 50% dry + 45% wet (45=90% von 100/2) insgsammt also 95% seines signals und B ebenfalls 50%dry aber nur +5% wet (5% = 10% von 100/2) insgesammt nur 55% seines signals.

ok, ab jetz wirds gleich mathematisch, aber ich muss für heute unterbrechen, es klingelt grad sturm....
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:...spurA = 90% amount
spurB = 10% amount

wenn nun D/W des effektes 0 wäre, und beide spuren ansonsten ein identisches signal hätten, würden beide gleich klingen, jeweils 100%, denn der D/W regler des effekts arbeitet nur als "substraktion" nie als addition.
bei 50% D/W würden sie in etwa so klingen: A = 50% dry + 45% wet (45=90% von 100/2) insgsammt also 95% seines signals und B ebenfalls 50%dry aber nur +5% wet (5% = 10% von 100/2) insgesammt nur 55% seines signals.

ok, ab jetz wirds gleich mathematisch, aber ich muss für heute unterbrechen, es klingelt grad sturm....
Wenn ich das letzte Beispiel mal als Denkanstoß nehme, so mischst du hier quasi vier Signale: Dry A, Wet A, Dry B und Wet B. Da wird es aber schon sehr kompliziert, da du hier mit Prozentzahlen rechnest. So arbeitet aber unser Gehör nicht. Du must in dezibel denken: Dezibel-Rechner. Blättert man auf der angegeben Seite etwas weiter so muss man beachten, dass es sich wohl bei Dry A und Wet A um kohärente Schallquellen, dagegen bei den Signalen A und B um inkohärente Schallquellen. Jedenfalls interpretiere ich das so als Laie. (Gibt's hier im Forum einen Experten für Tontechnik?)
Benutzt man mal nur diesen einfachen Fall, so ergeben sich schon bei der Addition unterschiedliche Lautstärkeemfindungen (kohärent: Summe kohärenter Signale steigt in der Lautstärke um 6dB, inkohärent um nur 3dB).
Also kurz und schmerzlos: es ist äußerst kompliziert, für sogar 8 Signale (dein Einstieg in diese Frage) ein "Formel" anzugeben.

Ich fand deine erste Frage eigentlich viel anschaulicher: Du möchtest einen Regler, der an den "Rändern" relativ unempfindlich reagiert und in der Mitte möglichst linear. Mit linear meinst du wahrscheinlich die dezibel-Skala. Die arctan-Funktion ist dabei nicht schlecht. Siehe dazu die nächste Post!
Vielleicht kannst Du ja damit etwas anfangen.

ciao herw
Zuletzt geändert von herw am 24. Juni 2006, 12:21, insgesamt 1-mal geändert.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

arctan-Shaper

Transformung eines linearen Regler-Bereiches mit Hilfe der arctan-Funktion

Bild
Die arctan-Funktion ist für alle Zahlen definiert und liefert in REAKTOR die Werte von -0,25 bis +0,25, was einem Winkel (in der Tontechnik: Phase) von etwa -90° bis +90° entspricht.
Bild
Da die Entwickler von REAKTOR ja nicht wissen, ob der Anwender in Winkeln oder Radienten rechnet, geben sie sinnvollerweise hier nur den Bruchteil von 360° bzw. 2·pi aus. Der Anwender kann dann durch einen dahinter geschalteten Faktor selbst entscheiden, ob er das Winkelmaß oder den Radienten benutzen möchte.
Unseren Reglerbereich von 0 bis 1 müssen wir zunächst auf den bipolaren Bereich zwischen z.B. -100 und +100 linear transformieren. Die arctan-Funktion liefert nun Werte im Bereich zwischen -0,248408 und +0,248408; die Werte von -0,25 und +0,25 werden eigentlich nur für betragsmäßig unendlich große Werte (positiv und negativ) erreicht. Mit einer weiteren linearen Transformation wechseln wir wieder zu einem unipolaren Bereich zwischen 0,003183 und 0.996817. Die beiden letzten Rechenoperatoren korrigieren diesen Bereich auf den gewünschten Ausgabebereich von 0 .. 1. Zwar "schmiegen" sich die Anfangs- und Endwerte nicht exakt in ihrem Verlauf an die Konstanten 0 und 1 an.
Schaut man sich nochmals den Funktionsgraphen an, so fällt auf, dass er bei Werten nahe bei 0 steil (aber linear) ansteigt und dann sehr schnell in eine "Sättigungsphase" übergeht.
Die Wirkung dieser Transformation ist so, dass im unteren und im oberen Bereich die Werte sich nur sehr langsam ändern und im mittleren Bereich sehr schnell linear ansteigen.
Bild
Man kann die Kurve noch anders formen und einen anderen Bereich als den zwischen -100 und +100 wählen, um den linearen Bereich zu dehnen und damit flacher zu gestalten.
Hier habe ich zum Beispiel den Bereich zwischen -10 und +10 gewählt:
Bild
Die Konstanten am Schluss der Struktur muss man entsprechend ändern, so dass sich wieder der Ausgangsbereich zwischen 0 und 1 ergibt.
Alternativen für einen etwas "weicheren" Verlauf ist zum Beispiel die Verwendung eines Sinus-Moduls oder eines kubischen Shapers. (Polynomfunktion dritten Grades)

Anwendungen
  • Formung von Regler-Bereichen
  • Klangveränderung (nicht lineare Verstärkung und Sättigung). Multipliziert man z.B. die Hüllkurve eines Tonsignals mit einem großen Faktor (z.B. 50), führt das Signal anschließend durch das arctan-Modul und multipliziert das Ausgangssignal mit 4, so erhält man ein verzerrtes Signal. Der Verzerrungsgrad kann durch den ersten Faktor eingestellt werden. Bei leisen Tonsignalen würde der Klang fast unverzerrt übertragen bei lauten Tonsignalen dagegen verzerrt.
  • Tonwellen-Veränderung; wendet man dieses Modul als Audiomodul an, so verändert es direkt das Klangmaterial
ausprobieren!!

ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von herw am 24. Juni 2006, 12:21, insgesamt 3-mal geändert.
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

hi herw,

sei erstmal bedankt. leider war es gestern dann doch noch ganz schön feucht und wenn ich heute noch hoolen gehe wirds morgen wohl nich anders, so das ich wohl erst montag "richtig" antworten kann;)

bis dahin, nettes WE mit hoffentlich vielen toren!
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Antworten