core cell osc vs. primary osc

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

Beitrag von herw »

sellotape hat geschrieben:mit anderen worten ich will den "tri/par symm" osc nachbauen und dem ganzen sync und fm spendieren. also nix mit lfo. da kommen nur die wellen her weil ich nicht so ne leuchte bin das mit der symmetrie zu realisieren. und da ein osc nun mal im hörbaren berich oszilliert brauch ich aliasing. du kannst dir das ja ma an hören und mit einem osc aus der core cell library vergleichen dann weißt du was ich mit rau meine.
alles klar, ich war irgendwie in den LFO-Bereich hineingerutscht.
Ja für normales Audio brauchst Du natürlich antialaising.
Ok - ich knie mich da mal in den nächsten Tagen hinein. Die Oszillatoren habe ich ja für meinen Modular Mini eh schon hergestellt. Es fehlt nur noch die verstellbare Symmetrie beim Dreieck. Der Algorithmus ist klar, nur den CPU-Verbrauch muss ich noch testen.

ciao herw
sellotape
synthesist
Beiträge: 59
Registriert: 2. September 2007, 10:48
Wohnort: Leipzig

Beitrag von sellotape »

sehr schön! :D
das wird sicherlich nicht der sparsamste oscillator werden aber ich lass mich überraschen was du draus machst.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

sellotape hat geschrieben:sehr schön! :D
das wird sicherlich nicht der sparsamste oscillator werden aber ich lass mich überraschen was du draus machst.
Ich denke nicht, dass der CPU-Verbrauch großartig ansteigt. Natürlich kann man nicht Primary und Core direkt miteinander vergleichen, da primary-Version sicherlich sehr maschinennah programmiert sein dürfte. Die Qualität des Antialaising ist in Core aber wohl besser.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

herw hat geschrieben:
sellotape hat geschrieben:sehr schön! :D
das wird sicherlich nicht der sparsamste oscillator werden aber ich lass mich überraschen was du draus machst.
Ich denke nicht, dass der CPU-Verbrauch großartig ansteigt. Natürlich kann man nicht Primary und Core direkt miteinander vergleichen, da primary-Version sicherlich sehr maschinennah programmiert sein dürfte. Die Qualität des Antialaising ist in Core aber wohl besser.
Das Antialaising aus den Multioszillatoren muss man wohl übernehmen; die Qualität ist bedeutend besser als die in den primary-Modulen.
Es ist nicht einfach, das Morphing von Dreieck und Sägezahn an die richtige Stelle einzubauen. Sehr wahrscheinlich muss man die Schrittweite des Ramp-Oszillators für beide Wellenteile unterschiedlich berechnen. Es dauert noch einige Zeit bis ich den richtigen Ansatz habe.

Den Multioszillator auf einen einfachen Oszillator zu reduzieren, ist dann relativ einfach, wenn man von außen und hinten jeweils die nicht benötigten Ausgänge löscht und auf diese Art und Weise feststellt, welche Struturteile unnötig sind.
sellotape
synthesist
Beiträge: 59
Registriert: 2. September 2007, 10:48
Wohnort: Leipzig

Beitrag von sellotape »

ich hab mich auch nochmal daran versucht aber auch ohne erfolg. das is echt ne harte nuss mit dem morphing. ich vermute das liegt an dem |i|-wert der ebenfalls mit der symmetrie mit verstellt werden muss.
ich kann das ja mal im engl. forum posten...
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

sellotape hat geschrieben:ich hab mich auch nochmal daran versucht aber auch ohne erfolg. das is echt ne harte nuss mit dem morphing. ich vermute das liegt an dem |i|-wert der ebenfalls mit der symmetrie mit verstellt werden muss.
ich kann das ja mal im engl. forum posten...
ich glaube kaum, dass das etwas nutzt, da die meisten (alle?) dort sich mit Effekten, sampleplayern, loops etc. beschäftigen und keiner Grundlagenforschung betreibt; aber du kannst es ja versuchen.
Dass der Increase während einer Periode verstellt werden muss, möchte ich gerne umgehen, da es dann Schwierigkeiten beim exakten Übergang zum Sägezahn gibt (i= unendlich bzw. i=0).
Meine Idee ist eine andere: man addiert zum Ramposzillator eine Konstante zwischen 0 und 1z.B. 0,3. Dann ist der Phasenanteil unter 0 kürzer als derjenige über 0. Die Amplitude unter null muss nun wieder auf 1 gestreckt und die über 0 auf 1 gestaucht werden. Das kann man durch eine anschließende Verzweigung erreichen. Dann braucht man keine veränderten increase Summanden. Der Nachteil ist allerdings der, dass dann das Antialaising nicht mehr richtig funktioniert. Die Klangqualität leidet darunter.
Die andere Möglichkeit, ist, dass man in der Tat den increase-Summanden für einen Teil absenkt und entsprechend für den anderen erhöht. Da das im Ramp-Loop geschieht, kann das Antialaising voll greifen.
Das erscheint mir am günstigsten. Allerdings darf man wie oben erwähnt die Grenzfälle i=0 und i=inf nicht zulassen (kleine Einschränkung).
Das rechnerishe Problem ist, dass man Erniedrigung und Erhöhung des increase-Summanden zur beabsichtigten Welle in einem korrekten Zusammenhang stehen.
Das ist ein bisschen Mathematik-Fummelei, müsste aber zu schaffen sein.
Ich arbeite gerade am Modular und möchte möglichst heute den Release Candidat zum Test weitergeben. Dann denke ich mich mal da hinein, oder du hast selbst die Lösung gefunden.
Jedenfalls ist das ein interessantes kleines Beispiel, an dem man FAST ALLES über Oszillatoren lernen kann, um selbst interessante Varianten zu erfinden.
Klanglich finde ich das Dreiecks-Sägezahn Morphing relativ uninteressant, da in großen Bereichen nicht viel passiert, nur in der Nähe des reinen Sägezahn. Da kann man über die Synchronisation viel mehr erreichen.
Trotzdem finde ich es wichtig, dass es einen solchen Osillator auf Core-Ebene gibt, für mich ist eher die Anwedung als signalgesteuerter LFO wichtig.
sellotape
synthesist
Beiträge: 59
Registriert: 2. September 2007, 10:48
Wohnort: Leipzig

Beitrag von sellotape »

herw hat geschrieben:ich glaube kaum, dass das etwas nutzt, da die meisten (alle?) dort sich mit Effekten, sampleplayern, loops etc. beschäftigen und keiner Grundlagenforschung betreibt; aber du kannst es ja versuchen.
da hast du leider recht aber es gibt auch noch leute wie robin davies von denen ich viel halte und mir hilfe erhoffe. ich komm sicherlich nicht auf eine brauchbare lösung. mir bleibt nichts anderes übrig als auf leute wie dich zu hoffen. :wink:
bin auch schon ganz gespannt auf den neuen modular. mit deinem eventbus und gui des modular (patchkabel) haste dir echt en denkmal gesetzt. die bei ni sollten dich als entwickler anheuern. deine sachen sind zu dem immer gut dokumentiert. sowas würd ich mir echt mal von ni wünschen dann würden wir hier auch nich so auf'm schlauch stehen. :D
herw hat geschrieben: Klanglich finde ich das Dreiecks-Sägezahn Morphing relativ uninteressant, da in großen Bereichen nicht viel passiert, nur in der Nähe des reinen Sägezahn. Da kann man über die Synchronisation viel mehr erreichen.
Trotzdem finde ich es wichtig, dass es einen solchen Osillator auf Core-Ebene gibt, für mich ist eher die Anwedung als signalgesteuerter LFO wichtig.
die durch lfo-modulation entstehende schwebung find ich für bass und lead sounds eigentlich gerade gut. klar hat man mit sync wesentlich mehr möglichkeiten in betracht auf wellenformen und obertöne aber sync und fm soll da ja dann auch noch rein was in verbindung mit der symmetrie ja auch interessant sein kann. sicherlich ist das nichts revolutionäres aber wie du schon sagtes sollte es der vollständigkeitshalber schon dabei sein denn wenn ich schon einmal auf corecell umsteig dann komplett.
ich dank dir erst ma soweit für deine mühe und falls sich im engl. forum schon eher was ergibt werd ich dich natürlich sofort davon in kenntnis setzen.
bis dahin happy building an deinem modular
cheers frank
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

sellotape hat geschrieben:...bin auch schon ganz gespannt auf den neuen modular. mit deinem eventbus und gui des modular (patchkabel) haste dir echt en denkmal gesetzt.... deine sachen sind zu dem immer gut dokumentiert. ...
...bis dahin happy building an deinem modular
cheers frank
das ist echte Sklavenarbeit, insbesondere weil es zwei unterschiedliche Panelansichten gibt und jedes Element zweimal ausgerichtet werden muss. Aber das gehört hier nicht hin.
sellotape
synthesist
Beiträge: 59
Registriert: 2. September 2007, 10:48
Wohnort: Leipzig

Beitrag von sellotape »

hi herw,
hast du nachmal zeit gefunden dir das mit dem antialaising anzuschauen? gibts noch hoffnung oder darf ich wiedermalst meinen frust bei ni über die mehr als schlecht dokumentation auslassen :lol:
hab die woche mal versucht hinter die logik des envelopes zu kommen aber ich blick bei dem core-cell zeug einfach nicht durch. die geben einen so ein haufen möglichkeiten mit ihrem core-cell ohne ein wort über das how-to zu verlieren. so langsam bin ich echt gefrustet. nicht einmal ein update der library ist zu erwarten. ich glaub ich bin nicht der einzigste der auf 4-pole filter wartet. aber naja das soll nich dein problem sein.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

sellotape hat geschrieben:hi herw,
hast du nachmal zeit gefunden dir das mit dem antialaising anzuschauen? gibts noch hoffnung oder darf ich wiedermalst meinen frust bei ni über die mehr als schlecht dokumentation auslassen :lol:
hab die woche mal versucht hinter die logik des envelopes zu kommen aber ich blick bei dem core-cell zeug einfach nicht durch. die geben einen so ein haufen möglichkeiten mit ihrem core-cell ohne ein wort über das how-to zu verlieren. so langsam bin ich echt gefrustet. nicht einmal ein update der library ist zu erwarten. ich glaub ich bin nicht der einzigste der auf 4-pole filter wartet. aber naja das soll nich dein problem sein.
Hallo sellotape, ich musste mich jetzt erst mal kurz erinnern: es geht um den morphigen Dreieck-Sägezahn-Oszillator, der antialaising haben soll. Den Frust über eine fehlende Dokumentation solltest du nicht bei NI abladen; überlege mal, wenn man für jedes Modul erklären sollte, warum und wieso es genau so und nicht anders und dann doch wieder anders erstellt wurde. Das gäbe ein Handbuch, das an eine Enzyklopädie heranreichen würde. Der Antialaising Algorithmus ist sehr trickreich; soweit ich ihn verstehe, handelt es dabei um eine quadratische Näherung im Bereich des Sprungs von der höchsten auf die niedrigste Amplitude und beim Rechteck auch umgekehrt. Die Antialaising-Algorithmen sind für die verschiedenen Wellenformen unterschiedlich gestaltet; mehr verstehe ich davon auch nicht; ich weiß nur so viel, dass die Klangqualität der Core-Oszillatoren eine ganze Ecke besser ist als die der primary-Module.
Beim ADSR-Modul habe ich mich wirklich in den letzten vierzehn Tagen verbissen und habe den Ehrgeiz es zu rekonstruieren; da ich nur sporadisch Zeit habe, muss ich mir jede Erkenntnis aufschreiben, um nicht immer wieder bei Null anzufangen. Meine bisherige Vorgehensweise ist erst mal so:
  • grundsätzlicher Aufbau: sehr gut ist zu erkennen, wie die einzelnen Makros im Innern sich bestimmte Aufgaben teilen.
  • das gate-Makro ist eigentlich als Einstieg besonders gut geeignet, da die Umwandlungen auf Grund der guten Beschreibungen bei den Moduleingängen relativ leicht nachzuvollziehen sind. Man kann die Parameter auch auf den Standardfall festlegen, um unnützes Beiwerk erst mal auszuschließen.
  • Dann muss man herausfinden, wozu die einzelnen gemeinsamen Speicher a, b , s und T eigentlich da sind. Ich habe bisher herausgefunden, dass T der temporäre Speicher für die momentane Amplitude ist. s legt einen Bezugspunkt für das sustain-Level.
  • dann ist ganz wichtig, die Bedeutung des Loop-Moduls zu verstehen; dort passiert der gesamte Ablauf des ADSR-Vorgangs. Die anderen Makros (attack, decay, release) sind dann eher leichter zu verstehen, da sie im Wesentlichen nur festlegen, wann sie etwas in den Loop schreiben sollen.
    Ich stecke aber auch erst in den Anfängen des Verständnisses. Mich reizt dieses Modul sehr, da ich mir bei einem grundsätzlichen Verständnis viele neue eigene Module erhoffe.
Vielleicht kannst Du mit diesen kleinen Hinweisen etwas anfangen.
Ich kann wie gesagt auch immer nur in kleinen Häppchen an REAKTOR arbeiten.
Antworten