Organischer 3D Oszillator

ich versuch das morgen zu erklären, mein Anspruch ist schon verstanden zu werden.
Was nicht verstanden wird ist schlecht oder falsch erklärt

deine erklärung bezieht sich ausschließlich auf zuschreibungen, nicht auf das verfahren selbst.

die frage ob es das schon gibt bezog sich doch sicherlich auf das verfahren als solches.
 
Die genaue Berechnung hier ist
x =(1 + ( cos( pi2 * ph3) -1 ) *zdep)* cos( pi2 * ph2) * r
y =(1 + (sin( pi2 * ph3) -1 ) *zdep)* sin( pi2 * ph) * r
z =(1 + ( sin( pi2 * ph2) -1 ) *zdep)* cos( pi2 * ph ) * r

wobei man z explizit im Moment gar nicht braucht,
mit ph = Phase und pi2 = 2 * Pi und zdep velocityabhängiger Wert,
r radius
und der Output ist sqrt( x*x + y*y) was dann noch mindestens einen DC Blocker braucht.

Ehrlich gesagt durchschaue ich selbst nicht 100% welche Modulation an welcher Stelle genau entsteht. Die Phasen selbst laufen linear durch, wobei man x auch noch per Feedback auf Phase 1 legen kann was dann wirklich FM ist, aber beim Output weiss ich nicht so genau was es ist.
Ich finde die Idee recht interessant. Ich denke der 'Clue' wäre es interessante Anregungen für die 3D Rotationen zu finden.
Hier ein paar Fragen zu deinen Gleichungen: Was bedeuted (geometrisch) der zdep Parameter? Für zdep=1 scheint es mir einfach eine Kombination aus Rotationen entlang der drei Raumachsen zu sein. Eine Änderung der Betrachtungsebene in Echtzeit sollte eigentlich kein Problem sein. Das müsste sich auf ein paar Additionen und Multiplikationen mit Sinus/Cosinus Funktionen reduzieren lassen.
Warum wählst du als Output sqrt(x^2 +y^2) und nicht direkt den Output einer Achse? Dann hättest du kein DC Problem, wäre dann aber vermutlich reine AM.

Ob es sowas schon gibt ist wahrscheinlich schwierig herauszufinden. Mich hat es ein bißchen an das Orbit 3 Modul von Joranalogue erinnert, das allerdings auf Chaos Synthese basiert.
 
Warum nicht sqrt (x²+y²+z²)?
Vermutlich, weil das dann immer 1 ist?
genau, ausserdem kennt man den Radius ja schon
Also ist es nur die 2D-Projektion von einem sich bewegenden Punkt in dem 3d Gebilde?
genau
Warum wählst du als Output sqrt(x^2 +y^2) und nicht direkt den Output einer Achse? Dann hättest du kein DC Problem, wäre dann aber vermutlich reine AM.
kann man auch, hatte ich zuerst, dann wollte ich zwei Achsen mischen
das soll später evtl noch durch eine Pickup Simulation und da ist der Offset eh egal
Was bedeuted (geometrisch) der zdep Parameter? Für zdep=1 scheint es mir einfach eine Kombination aus Rotationen entlang der drei Raumachsen zu sein.
wenn zdep == 1 dann sind es einfach die Dimensionen wie bisher beschrieben,
wenn == 0 dann ist es nur 2 D x,y geometrisch solle es quasi bei Zwischenwerten eine Linsenform sein, das war zuerst einfach ein schneller Hack um klanglich Dynamic per Velocity reinzubringen oder das Aliasing bei hohen Tönen zu reduzieren.
. Eine Änderung der Betrachtungsebene in Echtzeit sollte eigentlich kein Problem sein.
ja
 
deine erklärung bezieht sich ausschließlich auf zuschreibungen, nicht auf das verfahren selbst.

die frage ob es das schon gibt bezog sich doch sicherlich auf das verfahren als solches.
ja oder ähnlich eben.
Wenn ich jetzt nich was erklären soll ist vielleicht am besten wenn Du Fragen stellst einfach.
 
Also eine Schwingung an sich ist ja schon mal was regelrecht 3-dimensionales. Erste Dimension ist die Zeit, zweite Dimension ist die Auslenkung (Amplitude), dritte Dimension ist die Phase, der Kreiswinkel in der Einheit rad(?). Die Sinus- oder Kosinusfunktion, das wurde hier im Thread irgendwo schon konstatiert, ist ja nur die Projektion einer kontinuierlichen ungedämpften Kreisbewegung auf zwei Dimensionen x und y. Kannst du, @mooncast, auf dieser Basis erklären, was bei deinem Oscillator neu ist? Einfache Modulation der Amplitude, der Kreisgeschwindigkeit ("Frequenz") kann es ja nicht sein, es sei denn, du willst uns alten Wein in neuen Schläuchen verkaufen. Oder zumindest unabsichtlich, weil du - wie ich übrigens - lieber programmierst als Fachliteratur zu wälzen. Let's both mind the trap of thinking it be new what we're doing.
 
Also eine Schwingung an sich ist ja schon mal was regelrecht 3-dimensionales. Erste Dimension ist die Zeit, zweite Dimension ist die Auslenkung (Amplitude), dritte Dimension ist die Phase, der Kreiswinkel in der Einheit rad(?). Die Sinus- oder Kosinusfunktion, das wurde hier im Thread irgendwo schon konstatiert, ist ja nur die Projektion einer kontinuierlichen ungedämpften Kreisbewegung auf zwei Dimensionen x und y. Kannst du, @mooncast, auf dieser Basis erklären, was bei deinem Oscillator neu ist? Einfache Modulation der Amplitude, der Kreisgeschwindigkeit ("Frequenz") kann es ja nicht sein, es sei denn, du willst uns alten Wein in neuen Schläuchen verkaufen. Oder zumindest unabsichtlich, weil du - wie ich übrigens - lieber programmierst als Fachliteratur zu wälzen. Let's both mind the trap of thinking it be new what we're doing.
Ich denke nur 2 Dimensionen, denn die Zeit und Phase sind doch quasi aequivalent, bzw. linear durch 2*pi verknüpft? Quasi die "Kreis-Zeit" oder "Zeit auf dem Kreis".
Ansonsten kann man noch eine Koordinatentransformation durchführen, um aus 3 Achsen 2 zu erzeugen, z.B. Clarke-Transformation, Park-Transformation, oder gleich in den Laplace Raum gehen um die lästigen Sinus bzw. Cosinus Funktionen los zu werden.
 
Ich interpretier das mit den 3 Dimensionen so:
27-271016_kinect-joint-rotation-pitch-yaw-roll-unity-hd.png

Wenn man nur x und y rotiert, dann hat man einen Sinus und wenn dann noch z dazukommt, wirds komplex (kann ich mir bildlich auch nicht mehr vorstellen)
 
Ich interpretier das mit den 3 Dimensionen so:
27-271016_kinect-joint-rotation-pitch-yaw-roll-unity-hd.png

Wenn man nur x und y rotiert, dann hat man einen Sinus und wenn dann noch z dazukommt, wirds komplex (kann ich mir bildlich auch nicht mehr vorstellen)
tatsächlich must Du nur für Sinus entweder x oder z rotieren, aber so funktionierts
 
um die lästigen Sinus bzw. Cosinus Funktionen los zu werden.
tatsächlich war es am Anfan eine Vektorotation über Matrizen die in Pixilang eingebaut ist,
die kam aber mit dem Grafikaufbau ins Gehege weil sie dazu da ist.

Für mich ist es mit trig Funktionen anschaulicher und leichter.

Letztlich brauchst Du auch dafür trig. Funktionen
 
Also wenn das jemand optimieren will ist das natürlich gerne gesehen.
Ansonsten würde man für eine schnelle Implementierung wohl Lookup Tables einsetzen
 
sicher, es sind nur 2, zeit und amplitude.
Demnach wäre f(x) = nx+m also eine Schwingung, keine lineare Funktion. Man braucht schon die Phase, also eine Komponente, die periodisch durch ihren Ausgangspunkt in einer der anderen Dimensionen geht. -- Aber kann mich irren, SekII-GK-Mathematiker, Mathe war bei mir nicht mal Abi-Prüfungsfach.
 
Zuletzt bearbeitet:
Demnach wäre f(x) = nx+m also eine Schwingung, keine lineare Funktion. Man braucht schon die Phase, also eine Komponente, die periodisch durch ihren Ausgangspunkt in einer der anderen Dimensionen geht. -- Aber kann mich irren, SekII-GK-Mathematiker, Mathe war bei mir nicht mal Abi-Prüfungsfach.

die phase ist nur das ergebnis des verhältnisses von zeit- und amplitudenwerten.

genau wie das spektrum, von dem du ansonsten erklären müsstest, warum das nicht die vierte dimension ist.

oder die energie im verlauf. oder der inhalt, also ob es nach flöte oder nach blechtrommel klingt. das sind dann auch alles dimensionen.


wieviele "dimensionen" etwas hat, kann man ja anhand von grapischen repräsentationen überprüfen: reicht es aus, audio zweidimensional darzustellen? ja, tut es.

anders als ein 3D wavetable oder die bewegung eines physischen joystick controllers mit 3 achsen.
 
das sind dann auch alles dimensionen.
Nein. Dimensionen sind skalar.

Aber ich merke, das wächst mir schon über den Dummkopf. Wenn ich doch mal Fachliteratur in die Hand nehme, wird da jedenfalls nicht nur mit sin() und cos() gerechnet, sondern gerne auch mit komplexen Zahlen. Irgendwas hoch e hoch i mal zwo mal Pi oder w oder so. Das i steht dabei für den imaginären Zahlenraum. Komplexe Zahlen sind ja zweidimensional, und eine der beiden Dimensionen ist eben nicht die Zeit (?). Kann aber natürlich sein, dass ich mich damit ins Bockshorn jagen lasse, die komplexen Zahlen tatsächlich nur eine Vereinfachung sind und hier keine Vorstellung einer dritten Dimension begründen.

Und die Phase, nach meinem Laienverständnis der Kreiswinkel, gibt daher eher das Verhältnis zwischen dem Delta pro Zeiteinheit in der realen zum Delta pro Zeiteinheit in der imaginären Dimension an.
 
Zuletzt bearbeitet:
Kann aber natürlich sein, dass ich mich damit ins Bockshorn jagen lasse,
ja,

Was hier gerechnet wird sind ja komplexe Zahlen in polarer Form.

Der Winkel pro Zeit ist die Frequenz.

Der Radius auf der z Ebene ist der Betrag der komplexen Zahl und die Amplitude des Signals.

Wenn ich den Punkt drehe kann ich das entweder über den Winkel und Radius
oder über den X, Y ( Z) Vector machen, das ist dasselbe.

Würde es Dich tatsächlich mehr beeindrucken wenn das in Vektorform wäre ?

Du würdest wahrscheinlich immer noch zweifeln weil das i dennoch nie auftaucht dabei.
 
Versuch mal

sqrt(x^2 + y^2 + z^2) - 1

bzw.

sqrt(x^2 + y^2) - 0.75.

Das sollte das krasse DC-Offset über den gesamten zdep-Wertebereich zwischen 0 und 1 in brauchbare Regionen zurückschubsen. Cyan ist ohne Korrektur, magenta mit:


zdep_0.00.png

zdep_0.25.png

zdep_0.50.png

zdep_0.75.png

zdep_1.00.png

Die gelbe Kurve ist einfach nur ein normaler Sinus mit maximaler Amplitude von 1, damit man sehen kann, wo der Rest so rumeiert. Wie man sehen kann, produzieren die Funktionen mit zdep nahe null Amplituden, die über 1 liegen. Das ist eher ziemlich ungünstig.

Die Algorithmen, die ich in GNU Octave benutzt habe, waren:
x = (1 + (cos(theta + ph3)-1) * zdep) * cos(theta + ph2) * r (ROT)
y = (1 + (sin(theta + ph3)-1) * zdep) * sin(theta + ph1) * r (GRÜN)
z = (1 + (sin(theta + ph2)-1) * zdep) * cos(theta + ph1) * r (BLAU)

Ferner hab ich für die unteren beiden Graphen noch mit abgebildet:
xa = (1 + (cos(theta + ph3)-1) * zdep)
xb = cos(theta + ph2)

ya = (1 + (sin(theta + ph3)-1) * zdep)
yb = sin(theta + ph1)

theta ist der zeitliche Funktionsverlauf über die x-Achse und genau 2*pi lang und enthält 1000 Samples.

Wobei ich
ph1 = 0° = 0 rad,
ph2 = 120° = 2.0944 rad,
ph3 = 240° = 4.1888 rad,
r = 1 , (weil eh nur ein Modifikator für die maximale Amplitude der Funktionen)
zdep = 0 bis 1 , angenommen habe.
 
Zuletzt bearbeitet:
minus 1 macht den selben Offset versetzt, weil sich der Offset im zeitlichen Verlauf ändert.
Radius geht ja zurück auf 0, dann hast Du eben Offset -1.

Der Offset macht hier aber nichts weil das später noch durch einen Pickup geht
in den erstens das Differential geht das ja keinen Offset hat
und der zweitens aber selbst Offset hat.

Dh einen DC Remover braucht man so oder so, das ist Standard bei solchen Sachen.

Wenn man einen Kondensator lädt für Sägezahn hat man auch erstmal Offset den man entfernen muss.

Ne ganz andere Möglichkeit hier ist aber das Signal einmal plus 45 und einmal minus 45 zu drehen, das geht mit ner Addition und Subtraktion wenn man den Faktor 1/ Wurzel2 ignoriert und erst auf der Summe korrigiert.
 
Der Offset selbst ist nicht das Problem, sondern das Knacken der Peak-Grenze von 1.


Wenn man das nicht sofort schon in Angriff nimmt, dann machen andere Algorithmen daraus halt einfach Squares.
 
da hast du ein Missverständnis, weder der zdep Paramter noch der Offset haben hier etwas mit dem Peak zu tun.
 
da hast du ein Missverständnis, weder der zdep Paramter noch der Offset haben hier etwas mit dem Peak zu tun.

Nein, kein Missverständnis. Schau dir bitte mal die ersten beiden Grafiken an. Da siehst du, dass die beiden cyan-Kurven die Marke von "1" zum Teil recht deutlich knacken. Wenn dieses Signal dann in einen weiteren DSP-Algorithmus geschickt wird, dann kommt da Murks bei raus.
 
Nein. Dimensionen sind skalar.

Aber ich merke, das wächst mir schon über den Dummkopf. Wenn ich doch mal Fachliteratur in die Hand nehme, wird da jedenfalls nicht nur mit sin() und cos() gerechnet

audiosignale haben erst mal rein gar nicht mit "cosinus" zu tun...

sondern gerne auch mit komplexen Zahlen.

...aber das ist genau der punkt: für einen komplexen cosinus oszillator braucht man nämlich 2 audio signale.
 
Zuletzt bearbeitet:


News

Zurück
Oben