erledigt Hat dieser Noise-Algorithmus einen Namen?

D

D1g1t4l D3t0x3r

Offline bis Juli '24. Erreichbar via PN.
Hallo,

klassisches weißes Rauschen wird ja einfach mit gleichverteilten Zufallswerten generiert. Rosa rauschen, braunes oder rotes Rauschen entsteht, indem man weißes Rauschen durch Low-Pass-Filter jagt, soweit habe ich es zumindest verstanden. Richtig?

Inspiriert von der Voss-Methode zur Generierung von fraktalem Rauschen (n. Gareth: Musimathics I), die von einer Grundfrequenz f ausgehend nur alle n Samples – n = SAMPLING_RATE / f – die Amplitude auf einen anderen Zufallswert ändert und auf diesem Prinzip basierend auch Werte für 2f, 4f, 8f, ... 2^x*f würfelt und reinmittelt.

Das hat mich doch sehr daran erinnert, wie harmonische Klänge entstehen: Teiltöne mit verschiedenen Amplitudenmaxima und Hüllkurven, deren Frequenzen jeweils ein vielfaches der Grundfrequenz ... und so weiter, euch brauch ich das bestimmt nicht wiederkäuen.

Jedenfalls könnte man doch diese Teilräusche analog zusammensetzen, also einfach mit Vielfachen statt Zweierpotenzen arbeiten, und jedem Teilrausch eine eigene Hüllkurve verpassen, oder?

Meine Frage: Wie immer eine nette Vorstellung, aber auch etwas unrealistisch, dass meine Idee was bahnbrechend neues wäre, zumal sie ja ziemlich trivial ist. Kennt man dieses Verfahren unter einem Namen? Geht mir ständig so, dass ich ein Rad neu erfinde und dann nicht zu bezeichnen weiß. Den Oszillator, der einfach f-mal die Sekunde die Amplitude auf einen anderen Zufallswert ändert, hab ich einfach mal provisorisch "crack" getauft in meinem Soft-Synthi-Projekt, und eingereiht zu den anderen Oszi-Primitiven "sine", "square", "sawtooth", "triangle" und "noise".

Anhang 1: Teilräusche und ihre Amplitudenverläufe, fürs Auge
Anhang 2: Dasselbe für Ohren
Anhang 3: Zum Vergleich, die Variante mit äh, selbes Problem ... "frequency-based constrained noise" (vermutlich = Braunes Rauschen)


Viele Grüße,
flowdy

P.S. Mein Soft-Synthi-Projekt habe ich schon mal an anderer Stelle in diesem Forum vorgestellt. Leider bisher keine Resonanz, womöglich war das Unterforum auch haarscharf an der Zielgruppe vorbei? Verschiebungsaktionen stehe ich offen gegenüber.
 

Anhänge

  • composite_cracks.png
    composite_cracks.png
    25,6 KB · Aufrufe: 8
  • composite_cracks_440Hz.mp3
    15,2 KB · Aufrufe: 47
  • composite_noise_440Hz.mp3
    13,9 KB · Aufrufe: 37
  • Daumen hoch
M.i.a.u.: Max
Meine Frage: Wie immer eine nette Vorstellung, aber auch etwas unrealistisch, dass meine Idee was bahnbrechend neues wäre, zumal sie ja ziemlich trivial ist. Kennt man dieses Verfahren unter einem Namen? Geht mir ständig so, dass ich ein Rad neu erfinde und dann nicht zu bezeichnen weiß.
Als Musiker interessiert mich die ganze Theorie dahinter sehr wenig, mir ist nur wichtig, wie das dann am Ende klingt.
Um ungewöhnliches Rauschen in allen Variationen zu generieren, habe ich bereits mehr als genug Möglichkeiten und ob das Rauschen dann weiß, rosa, braun oder blau-gestreift ist, juckt die Hörer meiner Musik am Ende auch nicht.
 
Sobald man eine Frequenz zuordnen kann, ist es eigentlich nach Definition kein Rauschen mehr - aber dafür sollte es dann auch tonal spielbar sein.

Die Beispiele klingen für mich sehr "digital" bzw. nach "bit-crushing", mit vielen harschen Artefakten in den Höhen. Aber mit Filter danach kann man damit sicher coole Sachen machen.

Rosa Rauschen ist wohl das "natürlichste" Rauschen: die Energie des Signals ist dabei in jeder Oktave gleich, d.h. je höher die Frequenz desto leiser. Im Gegensatz dazu ist weißes Rauschen in den Höhen deutlich "überbetont".
 
erinnert mich ein wenig an ein "kochrezept" fuer rosa rauschen: rauschen bzw. zufallswerte mit unterschiedlicher 'frequenz' werden addiert, wobei die frequenzverhaeltnisse (sampleraten)
dann gerne in irgendeinem harmonischen verhaeltnis zueinander stehen duerfen. dh. die frequenzen sind dann nicht gleichverteilt, sondern es gibt mehr tiefe als hohe und so.
"brownian noise" (oder random walk noise (genauso kann man das auch erzeugen)) klingt dann aber noch mehr nach meer.
 
@flowdy

Die Composite Cracks Version klingt wie S&H oder Rate Reducer Noise bzw. wie Noise vom ATARI Telespiel oder dem Pokey Chip (ATARI 400/800/XL/XE).

 
Zuletzt bearbeitet:
Ich lade am besten noch mal zwei Dateien hoch, die mit den selben Konfigurationen erstellt wurden, aber diesmal mit einer "Frequenz" von 50 Hz.

Beides ist "Rauschen"? Das sollte jetzt weniger klar sein. Meine Ohren widersprechen jedenfalls. Das eine klingt wie verwirbelter Wind oder theoretsch beschrieben wie ein Sinuston, der vom Ausgangssignal eines White-Noise-Generators mit starkem Index amplitudenmoduliert wird, und dabei ist gar keine Sinusfunktion beteiligt. Schon interessant, experimentell zu erleben, wie das Ohr dazu neigt, Sinusschwingungen herauszuhören, wo rechnerisch kein Sinus drinsteckt. Verantwortlich dafür ist eine Gleichgewichtsfunktion, die dafür sorgt, dass die Amplituden im positiven wie auch negativen Bereich quantitativ (summarisch) für eine "Periodendauer" ungefähr gleich verteilt sind. Aber wie sollte das Ohr das auch wissen. Es ist wahrscheinlich das Gehirn, das "Wind" ausschließt, da eine gewisse Regelhaftigkeit vorliegt, und schließlich irgendeinen Ton hineindichtet.

Der andere Ton hat bei so niedigen "Frequenzen" nach meinem Kenntnisstand wenig mit Ereignissen in der Natur zu tun, allenfalls mit elektrischen Entladungen. Je höher die Frequenz, umso mehr nähert sich sich dieses Ratschen dem weißen Rauschen an.
Dann würde ich in der Dokumentation zwischen knistrigem und dichtem Rauschen unterscheiden, cracking vs. dense noise auf Englisch.
Ich überlege gerade, ob ich die beiden Rauschgeneratoren zu einem kombinieren könnte, Das geht bestimmt irgendwie: Diesem Generator könnte man eine Frequenz mitgeben und ein weiterer Parameter, eine Art Winkelangabe auf der kontinuierlichen Skala zwischen den Extremen horizontaler Modus (Amplitudenänderung gilt für SAMPLING_RATE/f Samples) und vertikaler Modus (maximale Amplitudendifferenz von einem Sample zum vorigen)

Als jemand, der gerne Handbücher liest, bevor er einen Finger rührt, ist mir der experimentelle Ansatz vergleichsweise ungewohnt. Hat halt den Nachteil, sich immer von anderen beschreiben zu lassen, was man da gemacht hat. "Inverse Recherche", wenn man so will, nach dem Motto: Habe Lösung, suche Problem.

Digital, unnatürlich dürfte wohl alles klingen, wo lediglich drei Teiltöne/-räusche beteiligt sind. Man könnte diese Anzahl wohl additiv-synthetisch erhöhen, oder die Teilräusche mit Modulationen versehen (AM oderFM, aber diese Unterscheidung macht wohl erst recht bei Räuschen wenig Sinn), um sie mit "Oberräuschen" anzureichern. Sonst fällt mir keine Möglichkeit ein, das Rauschen natürlicher zu machen.

Im Gegensatz dazu ist weißes Rauschen in den Höhen deutlich "überbetont".
Wegen der Gleichverteilung hat das aber eher psychoakustische Gründe, Höhen sind en masse deutlich unangenehmer als Tiefen. Das heißt weitere Amplitudendistanzen von einem Sample zum anderen fallen überproportional deutlicher auf als geringere – könnte ich mir zumindest vorstellen.
 

Anhänge

  • composite_cracks_50Hz.mp3
    13,9 KB · Aufrufe: 521
  • composite_noise_50Hz.mp3
    13,9 KB · Aufrufe: 523
  • Daumen hoch
M.i.a.u.: Max
Man kann hier die hochgeladenen Audio Schnipsel auch mit 'nem Player einbinden.


 
  • Daumen hoch
M.i.a.u.: Max
Hier weißes Rauschen durch ein S&H "Modul", klingt schon ein wenig nach deinem Composite Cracks.

 

Anhänge

  • SandH.mp3
    257,1 KB · Aufrufe: 1.018
Warum "abgetastet"? Und tritt der Effekt nicht auch etwa bei der Rechteckschwingung auf? Salopp gesagt, würde ein Nyquist-Filter für mehr oder weniger "gerundete Ecken" sorgen, oder? Mit Synthese durch Filter und Filterketten kenn ich mich nicht so aus, möglich, dass meine Fragen mich als Unwissender outen. Sagen wir, ich hätte so einen Filter nachgeschaltet, und ich würde eine Rauschfrequenz von sagen wir 40 KHz einstellen: Dann hätte ich keine Artefakte, aber doch auch kein Signal, oder?
 
Warum "abgetastet"?

Den Oszillator, der einfach f-mal die Sekunde die Amplitude auf einen anderen Zufallswert ändert...

Du müsstest das Rauschen bandbegrenzen und dann Abtasten. Dann Crackt es halt auch nicht mehr. Aber das erklärt den Effekt.
 
Du müsstest das Rauschen bandbegrenzen und dann Abtasten. Dann Crackt es halt auch nicht mehr. Aber das erklärt den Effekt.

Wenn du mit "bandbegrenzen" auf einen modularen Hi/Lowpass-Filter anspielst – da muss ich passen, tue das aber leichthin und freimütig. Mein Synthesizer ist nicht modular, ganz bewusst. Die Potenziale, die mir dadurch entgehen, mache ich anders hoffentlich mehr als wieder wett. (Kann mir das auch leisten, da mir Echtzeitfähigkeit unwichtig ist).

Ich habe nun den Abtaster dahingehend verändert, dass er nicht einfach abrupt die Amplitude ändert. Sondern Sample für Sample kontinuierlich vom vorigen zum nächsten Zufallswert schreitet. Wir haben es also nicht mehr mit rechten Winkeln zu tun, sondern mit allen möglichen Winkeln zwischen 90 und -90 Grad, Zickzackkurven. Das dürfte die Artefakte doch auch reduzieren, nicht? Höre die angehängte Datei:
 

Anhänge

  • cracknoise_220Hz.mp3
    13,9 KB · Aufrufe: 477
Zuletzt bearbeitet:
Ich habe das nur kurz überflogen und bestimmt auch nicht richtig verstanden. Sample and Hold wird aus Rauschen generiert und damit lässt sich dann alles modulieren wie Amplitude, Frequenz oder was auch immer. Kann man dann noch multiplizieren und auf den Hüllkurven etc. anwenden. Ob da jetzt was cooles neues bei raus kommt, keine Ahnung.
 
Kennt man dieses Verfahren unter einem Namen?
Einen eigenen Begriff kenne ich dafür nicht, aber das klangliche Ergebnis ist bekannt und wird im modularen Synthesizer so hergestellt: Rauschen (gerne auch gefiltert) durchläuft ein Sample&Hold, das im Audiofrequenzbereich getaktet wird, der Ausgang des S&H ist zu hören. Oder für DAW-Benutzer: Rauschen durch einen Bitcrusher/Downsampler jagen, schicken, scheuchen.

P.S. Mein Soft-Synthi-Projekt habe ich schon mal an anderer Stelle in diesem Forum vorgestellt. Leider bisher keine Resonanz, womöglich war das Unterforum auch haarscharf an der Zielgruppe vorbei?
Am gewählten Unterforum liegt es meiner Ansicht nach nicht, sondern daran, dass Dir für Dein Projekt…
…Echtzeitfähigkeit unwichtig ist…
…und dass Dein Offline-Synthesizer Sompyler…
…ohne grafische Benutzeroberflache auskommt…
…und…
…Eingabedaten…im strikt hierarchischen YAML-Format…
erwartet, so dass man …
…Töne (nebst Rhythmus und Dynamik), sondern auch wie das Instrument klingt, …in Textform…
…eingeben muss.

Wenn Dir für Dein Projekt die Echtzeitfähigkeit wirklich so unwichtig ist, dass der Anwender bei laufender Musikerzeugung tatsächlich keinerlei Einfluß mehr auf die Klang und Komposition nehmen kann, sprich dass die ganze Veranstaltung nun in gar keinem Aspekt in Echtzeit spielbar sein sollte, dann fiele es in einem ganz fundamentalen Punkt hinter andere Synthese- und Kompositionsbeschreibungssprachen wie CSound und Supercollider zurück, dass dies vielleicht das fehlende Interesse erklären könnte.

Davon abgesehen kann ich mich nicht erinnern, hier im Forum Posts über CSound oder Supercollider gelesen zu haben, die darauf schließen ließen, dass diese Personen (a) solche Sprachen hinreichend gut beherrschen würden, dass sie (b) Interesse an einer weiteren Synthese- und Kompositionsbeschreibungssprache gehabt hätten.

Aber natürlich kann ich völlig daneben liegen, schließlich lese ich nicht alle Posts, und es kann ja Foristen geben, die sich für Synthese- und Kompositionsbeschreibungssprachen interessieren, aber dennoch nicht posten.

Wünsche Dir in jedem Fall weiterhin viel Freude bei Deinem Projekt!
 
Einen eigenen Begriff kenne ich dafür nicht, aber das klangliche Ergebnis ist bekannt und wird im modularen Synthesizer so hergestellt: Rauschen (gerne auch gefiltert) durchläuft ein Sample&Hold, das im Audiofrequenzbereich getaktet wird, der Ausgang des S&H ist zu hören. Oder für DAW-Benutzer: Rauschen durch einen Bitcrusher/Downsampler jagen, schicken, scheuchen.
Durch deinen und ckoehlers Beitrag habe ich jetzt auch ungefähr eine Ahnung, wie Sample&Hold funktioniert. Das ist offenbar ein zweidimensionaler Generator, bei dem nicht nur die qualitative Dimension der Amplitude, sondern auch die quantitative Dimension der Länge mit Zufallswerten unabhängig voneinander in parametrisierten Wertebereichen gespeist wird. Summas Beispiel zeigt, wie man S&H mit einer Hüllkurve in Richtung weißes Rauschen bringt und wieder zurück.

Hm, ich könnte meinen Primitiven jetzt, da "cracks" eine weniger passende Bezeichnung ist, in Anlehnung an Sample&Hold "Slope&Hold" nennen. Auch überlegen könnte ich, die vertikale Auslenkung per Window beschränkbar zu machen. Aber das hieße, dass ich dem Generator mehr als einen Parameter, die Frequenz, mitgeben müsste. Je enger allerdings das vertikale Window, der Wertebereich der Amplitudendifferenz ist, umso mehr verliert der Rausch seinen Rauschcharakter und wird zu schwach und zu periodisch.

Deine Vermutung, @serge, warum mein Projekt wenig Resonanz findet, leuchtet mir ein. Mir ist ja durchaus klar, dass man mit dem Sompyler nicht ernsthaft Musik machen kann, auch wenn das natürlich ein schöner Traum wär. Programmierte Musik hat etwas von »Ceci n'est pas de la musique« (Anspielung an Magrittes »Treachery of Images«, u.a. »Ceci n'est pas une pipe«), andererseits ist es mit aller Musik aus der Konserve – MP3-Player usw. – ja nicht anders.
Ich bin halt in erster Linie Softwareentwickler, der im Prinzip nicht mehr so gerne Softwareentwickler ist (alles hat eine moralische Dimension, und langsam gibt es mir zu viel Software auf der Welt, die nicht von denen benutzt wird, die sie programmiert haben), aber diese Tätigkeit immer noch so liebt, dass er sich auf diese Weise in das Thema Musik einarbeitet.
Einfach andere existierende Synthies kennenzulernen, die gibt es ja wie Sand am Meer, würde an meinen Ambitionen vorbeiführen. Ich will selbst machen, so viel wie möglich und vernünftig, vor steilen Lernkurven scheue ich mich nicht.
 
Wenn du mit "bandbegrenzen" auf einen modularen Hi/Lowpass-Filter anspielst – da muss ich passen, tue das aber leichthin und freimütig.
Ich spiele auf rein gar nichts an, zumindest nichts in Bezug auf modulares Irgendwie. Aber schau Dir mal das Abtast-Theorem an: https://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem
Gut ist auch diese Page: http://www.dspguide.com/ sowie die Nummerical Recipies: https://books.google.ch/books?id=1a...bAhXEBiwKHZ4GCJsQ6AEIJzAA#v=onepage&q&f=false
 
Zuletzt bearbeitet:
@swissdoc: Berufsbedingt habe ich zunächst ein Problem damit, dass du hier offensichtliche Raubkopien verlinkst (4. Link: ...ru/bookz/...), mich wundert, dass das nicht moderiert wird. Ich habe mir das physische Buch aus der Unibib besorgt, kostet auch nix, ist aber legal.

Was ich auch nachdem ich mir diverse Erklärungen angekuckt habe, immer noch nicht verstehe ist, warum bei explizit zufallsbasierten Algorithmen überhaupt von Artefakten zu sprechen ist. Ja, es kracht, aber das würde ich nicht als Artefakte bezeichnen, sondern ist hörbares Charakteristikum des berechneten Signals, genau wie es beabsichtigt/modelliert wurde. Wenn, dann müsste weißes Rauschen ja nur aus "Artefakten" bestehen. Aber das ist ja unsinnig insofern, dass Zufallswerte gar nicht »falsch« sein können, gegen die Intention, sonst wären sie ja nicht mehr zufällig.

Wie gesagt, die Eigenheit dieses Rauschens ist, dass für jedes n-te Sample ein neuer Zufallswert gezogen wird, wobei n = ceil( SAMPLING_RATE / (2*freq) ) [ceil bedeutet aufrunden]. Alles ab der Nyquist-Frequenz, bei 48k Abtastrate also 24kHz, ist also mit weißem Rauschen identisch. Ich würde mich freuen, wenn du oder wer anders mir erklärt, wo ich falsch liege, Link reicht natürlich. Nyquistfilter auf Rauschen anzuwenden würde dieses Rauschen nur ebenso willkürlich verfälschen wie ich hier mit meinen Verfahren.

Ich habe ja oben schon dargelegt, dass dieses Krachen aufgeweicht wird, indem nicht die Amplitude abrupt geändert wird, sondern graduell linear zwischen n und n+1. So belasse ich es nun auch.
 
Berufsbedingt habe ich zunächst ein Problem damit, dass du hier offensichtliche Raubkopien verlinkst (4. Link: ...ru/bookz/...), mich wundert, dass das nicht moderiert wird. Ich habe mir das physische Buch aus der Unibib besorgt, kostet auch nix, ist aber legal.
Du kannst mit Melden die Mods ankicken. Mir war das mit der Raubkopie nicht aufgefallen. Der Link ist geändert. Google Books ist hoffentlich gut für Dich? https://en.wikipedia.org/wiki/Don't_be_evil

Intuitiv ist mir klar, dass Du mit diesem crack Ansatz das Sampling Theorem verletzt. Rauschen ist ja analog und das mit den Zufallswerten eine Simulation (wobei man hier auch noch mit den Pseudozufallszahlen zu kämpfen hat). Auch wenn man analog abtastet, also einen S&H nimmt und irgendwie taktet, hat man das Sampling Theorem am Hals und musst vorher bandbegrenzen. Auch muss man bei der Wiedergabe einen Rekonstruktionsfilter verwenden.

Die von Dir implementierte Lineare-Interpolation stellt eine Art Tiefpassfilter dar, das ist dann der Rekonstruktionsfilter. Hier ist aber die Lineare-Interpolation auch eher willkürlich gewählt. Nicht falsch verstehen: Wenn es gut klingt, ist es gut. Ich versuche nur so von der wahren Lehre her zu erklären, was passiert. Das ist eben Aliasing, weil das Sampling Theorem verletzt wird.

Höre Dir mal so eine digitale Grusskarte an. Dort wird mit grosser Wahrscheinlichkeit bei der digitalisierung der Grussbotschaft nicht bandbegrenzt und beim Abspielen schon gar nicht. Zu teuer. So klingt es dann auch. Voll mit Aliasing. Ähnlich bei crack. Ein PPG würde ohne Aliasing aber auch langweilig klingen. Siehe Wavetables im Quantum :mrgreen:
 
Du müsstest das Rauschen bandbegrenzen und dann Abtasten. Dann Crackt es halt auch nicht mehr. Aber das erklärt den Effekt.

Nicht zwangsläufig. Man kann die durch die Abtastung entstehenden Spiegelfrequenzen durchaus mit ins Rauschspektrum einbinden, wenn man sie berechnet und entsprechend shaped. Auch mit Rechtecken ist das machbar, wenn man deren Oberwellen statistisch wieder abzieht , bzw die Lücken auffüllt und entsprechend filtert.

Kommt eben drauf an, wie zufällig das Rauschen sein soll. Pink Noise lässt sich mit einer Reihe fortgesetzter Rechteckschwingungen recht komfortabel herstellen. wird aucvh industriell genutzt, um dediziertes Rauschen zu haben.

Etwas mehr zu zufälligem Rauschen - auch als Zufallszahlgenerator - mit und ohne Balancierung zu einem dedizierten Spektrum habe ich hier mal gepostet:

Diese sind aber für Musik nicht uneingeschränkt nutzbar, weil sie recht aufwändig gefiltert werden müssen und dann maximal schweben.

Grussbotschaft nicht bandbegrenzt und beim Abspielen schon gar nicht. Zu teuer. So klingt es dann auch. Voll mit Aliasing.

Ein AA-Filter am Ausgang ist so oder so unverzichtbar, weil doe Spiegelfrequenzen gegenläufig wirken. D.h. eine ansteigende Tonhöhe würde in den gespiegelten Frequenzen hinablaufen. Wenn das AA-Filtering nicht weitgehend funktioniert, ist das extrem auffällig hörbar. Die Effekte, die solche einfachen Gerätchen haben, sind meist anderer Ursache. In der Regel Verzerrungen. Bei den Wavetable-Geräten sind es die Phasensprünge infolge der endlichen Auflösung. Daran kranken alle wave-Synthese-Methoden, seien sie noch so trickreich resampelt oder interpoliert.
 
Hier weißes Rauschen durch ein S&H "Modul", klingt schon ein wenig nach deinem Composite Cracks.

Was wird denn da mit S/H moduliert, die Frequenz?

Das wäre ja dann nur mit gesampleten Rauschen möglich....
 
@flowdy
"Alles ab der Nyquist-Frequenz, bei 48k Abtastrate also 24kHz, ist also mit weißem Rauschen identisch."

- nein, ab der Nyquist-Frequenz erscheint das Spektrum noch einmal gespiegelt

- In deinem Fall (ohne die lineare Interpolation) ist die Abtastrate SAMPLING_RATE / n,
weil du jeweils mit dieser Rate neue Zufallswerte für die Signalamplitude abgreifst.
Beispiel: Für freq = 448 Hz und n = ceil( SAMPLING_RATE / (2*freq)) erhälst Du dann eine
Nyquist-Frequenz von 448 Hz.
Die Spiegelfrequenzen erscheinen also direkt oberhalb von 448 Hz und sind somit sehr gut hörbar.

Davon abgesehen ist es ja nicht verboten, Geräusche zu erzeugen, die Spiegelfrequenzen mit enthalten.

Ich nehme an, dass Du einfach neben den klassischen farbigen Rauschquellen noch andere interessante
Geräuschquellen (ich nenne das jetzt mal nicht "Rauschen") realisieren willst.

Das finde ich persönlich auch wünschenswert.

Es gibt potenziell sehr viele Zufallsprozesse, die als Geräuschquelle dienen könnten.

Leider werden käufliche Synth-Plugins an dieser Stelle selten kreativ.
(Gegenbeispiel z.B. Falcon, das zumindest diverse Verteilungen abdeckt).

Noch zu Deinem Ansatz: Durch das Aufrunden von n kannst Du effektiv nicht jede beliebige Frequenz f
darstellen, sondern nur ganzzahlige Teiler der Sampling-Frequenz.
Um das Verfahren für beliebige Frequenzen nutzen zu können, müsstest Du an dieser Stelle noch einmal
ran. Die Abtast-Punkte mit 44800 Hz landen dann irgendwo zwischen dem Raster der Zufallsfunktion
mit Frequenz f. Als einfachste Lösung kannst Du dann zwischen den Nachbarwerten des Rasters
linear interpolieren.

Insgesamt mein Eindruck: ... ein Umstieg auf C++ könnte Dir große Benefits bringen.
Dort wird es einem von JUCE und Co doch schon sehr leicht gemacht, Plugins zu schreiben.
Die benötigten Anti-Aliasing Filter usw. kriegst Du dort auch mitgeliefert.
Und deine Oszillatoren werden spielbar...
Das finde ich nicht nur wichtig, weil kaum jemand yaml-Dateien schreiben wird,
sondern auch, weil man viele Möglichkeiten erst live durch Drehen an den Reglern
oder Verdrahten von Modulationen entdeckt.

Gruß Turing
 
@Summa Für Reaktor besitze ich ein spezielles Noise Modul, mit dem kann ich das auch machen.

Funktion ist mir allerdings schleierhaft, für mich klingt es einfach nach Bitcrushing.... :dunno:

 

Anhänge

  • reaktor-noise-sample-hold.mp3
    654,4 KB · Aufrufe: 325
@flowdy
"Alles ab der Nyquist-Frequenz, bei 48k Abtastrate also 24kHz, ist also mit weißem Rauschen identisch."

- nein, ab der Nyquist-Frequenz erscheint das Spektrum noch einmal gespiegelt

- In deinem Fall (ohne die lineare Interpolation) ist die Abtastrate SAMPLING_RATE / n,
weil du jeweils mit dieser Rate neue Zufallswerte für die Signalamplitude abgreifst.
Beispiel: Für freq = 448 Hz und n = ceil( SAMPLING_RATE / (2*freq)) erhälst Du dann eine
Nyquist-Frequenz von 448 Hz.

Die Spiegelfrequenzen erscheinen also direkt oberhalb von 448 Hz und sind somit sehr gut hörbar.
Bei 48k Abtastrate wird S&H / Cracking Noise an 448Hz mit ca. 107 Abtastpunkten auf dem gleichen Pegel in Folge, plus einem zur Pegeländerung umgesetzt. 108 Abtastpunkte könnten bis zu 54 Wechsel zwischen +A und -A abbilden, tun sie hier aber nicht. Wenn die Spiegelfrequenzen sehr gut hörbar sein sollen, müssten sie daher virtuell sein, also wie beim binauralen Hören im Gehör entstehen. Anders als beim Nyquist-Abtasttheorem, wo das Aliasing im Audacity u.ä. schon in der normalen Wellenform-Ansicht sichtbar wäre.

Noch zu Deinem Ansatz: Durch das Aufrunden von n kannst Du effektiv nicht jede beliebige Frequenz f
darstellen, sondern nur ganzzahlige Teiler der Sampling-Frequenz.
Richtig. Bei Geräuschen, die musikalisch eh nur einen beschränkten Wert haben, etwa für Percussion, bei der
tonale Einordnung in das harmonische Gefüge keine Rolle spielt, bleibe ich pragmatisch.

Um das Verfahren für beliebige Frequenzen nutzen zu können, müsstest Du an dieser Stelle noch einmal
ran. Die Abtast-Punkte mit 44800 Hz landen dann irgendwo zwischen dem Raster der Zufallsfunktion
mit Frequenz f. Als einfachste Lösung kannst Du dann zwischen den Nachbarwerten des Rasters
linear interpolieren.
Ich interpoliere ja schon an anderer Stelle. Beim Cracking nehme ich ja keine maximal steilen Flanken wie oben beschrieben, sondern gerade Linien. Natürlich könnte ich jetzt noch bei der Interpolation Zwischenwerte berücksichtigen, würde dann eben hier und da Knicks in diesen Linien geben, aber davon gibt es doch eh schon genug. denke aber nicht, dass sich das lohnt. Ob es jetzt beispielsweise 107 oder 108 Abtastpunkte sind, das macht eine Sollfrequenzabweichung von 16,1 Cent. Der Unterschied zwischen 2 und 3 Abtastpunkten im höchsten, kaum noch hörbaren Bereich, macht eine Quinte, aber hier spielen genaue Frequenzen ja wirklich keine Rolle mehr.

Insgesamt mein Eindruck: ... ein Umstieg auf C++ könnte Dir große Benefits bringen.
Dort wird es einem von JUCE und Co doch schon sehr leicht gemacht, Plugins zu schreiben.
Die benötigten Anti-Aliasing Filter usw. kriegst Du dort auch mitgeliefert.
Und deine Oszillatoren werden spielbar...
Das finde ich nicht nur wichtig, weil kaum jemand yaml-Dateien schreiben wird,
sondern auch, weil man viele Möglichkeiten erst live durch Drehen an den Reglern
oder Verdrahten von Modulationen entdeckt.
Hätte ich solche Ambitionen, würde ich wohl eher wie ihr fertige Software benutzen.
C++ lernen steht nicht auf meiner Agenda. Dabei habe ich kein Problem damit, wenn ich selbst der einzige Benutzer
meiner Software bleiben sollte. Zudem geht es mir in erster Linie um experimentelle Musikforschung, nicht um Produktion. So ist es mir wichtig, dass ich mir Dinge von Grund auf erarbeite und keinen Fremdcode benutze, der lt. Dokumentation explizit für Musiker ist.
Dennoch danke für deine Meinung. :)
 
Ich interpoliere ja schon an anderer Stelle. Beim Cracking nehme ich ja keine maximal steilen Flanken wie oben beschrieben, sondern gerade Linien. Natürlich könnte ich jetzt noch bei der Interpolation Zwischenwerte berücksichtigen, würde dann eben hier und da Knicks in diesen Linien geben, aber davon gibt es doch eh schon genug. denke aber nicht, dass sich das lohnt.
Wenn du dafür sorgst, dass die Knicke immer in der Mitte zwischen zwei Interpolationspunkten sind, entstehen nur ganzzahlige Harmonische / Vielfache, also Oktaven. Das klingt weniger unmusikalisch.
 
Hallo,

klassisches weißes Rauschen wird ja einfach mit gleichverteilten Zufallswerten generiert. Rosa rauschen, braunes oder rotes Rauschen entsteht, indem man weißes Rauschen durch Low-Pass-Filter jagt, soweit habe ich es zumindest verstanden. Richtig?

weil ich das gerade zufällig sehe: du musst nicht zwangsläufig filtern.

vorausschaubare verteilungsräume, die man auch berechnen könnte, berechnet man einfach.

pink und brownian sind da die klassiker schlechthin und sehr einfach zu berechnen.


zwar würde ein mathematiker jetzt argumentieren, dass die berechnung von pink noise und die alternative berechnung von rauschen mit normalvertelung, die man durch einen one-pole-one-zero butterworth tiefpass schickt, gewisse ähnlichkeiten miteinander haben - aber effektiver und einfacher ist ersteres.

die benutziung von frequenzfiltern ist aus digitaler sicht nur eine notlösung, schon alleine weil sie fehlerbehaftet ist. und laplace, cauchy oder 2-bit rauschen bekommst du damit sowieso niemals hin.
 
Wenn du dafür sorgst, dass die Knicke immer in der Mitte zwischen zwei Interpolationspunkten sind, entstehen nur ganzzahlige Harmonische / Vielfache, also Oktaven. Das klingt weniger unmusikalisch.
Sorry, dass ich mich erst jetzt melde, aber erst jetzt hab ich ungefähr ne Ahnung, was du meinen könntest. Ich layer allerdings eh schon Sounds übereinander, wenn ich möchte. Die Oszillatoren für jeden Layer sollen für sich genommen primitiv sein, und entsprechend leicht kombinierbar und vielseitig einsetzbar. Sollfrequenz sollte neben Länge und Phase zu den Parametern gehören, und darüberhinaus soll es keine oszillatorspezifischen geben. In der Mitte knicken riecht aber nach der Einführung einer zusätzlichen magischen Konstante (2), die sogleich die Frage aufwirft, ob sie nicht auch 3 sein könnte oder 7. Allerdings rätsel ich gerade über meine Worte, was meinte ich noch mal mit Zwischenwerten? Interpolation heißt doch immer "Zwischenwerte berücksichtigen".

Mit dem unmusikalisch ist das auch so eine Sache. Manchmal will man etwas Geräusch in der Musik haben, wie man auch etwas Salz in den süßen Kuchenteig gibt, um den Geschmack abzurunden (Notiz an mich selbst: Weniger Beispiele aus Domänen, in denen meine Ahnung mit Abwesenheit glänzt.) Man nennt es bekanntlich auch Dreck.

@einseinsnull, vorausschaubare Verteilungsräume lassen sich bestimmt effizienter berechnen als so, wie ich es mache: Einpassung von (einmalig berechneten) Zufallswerten in Korridore. Aber fragt sich, ob ein verteilungsraumbasierter Algorithmus flexibel genug wäre, etwa pitch-bends zu erlauben. Pitch-bends könnten die akustische Nachbildung brechender Meereswellen ermöglichen, zum Beispiel. Und Modulationen mit anderen Wellenformen?

Hier noch ein Stück fast musikalisches Rauschen, in dem ich farbiges Rauschen und linear interpoliertes S&H kombiniert habe:
Anhang anzeigen noise.mp3
 
range scaling in float ist quasi verlustfrei.

range scaling ist allerdings eher weniger dazu geeignet verschiedene formen von verteilungsräumen zu erzeugen. es ist allenfalls ein notwendiger schritt, um z.b. eine verzerrung wieder in die richtige range zu quetschen. (wenn du -1 bis 1 quadrierst, brauchst das nicht. bei log/exp/tanh/hanning/younameit musst du skalieren um wieder auf -1 bis -1 zu kommen.)

jedenfalls, das war meine hauptbotschaft - die dir als nicht-DSPler ja gelegen kommen dürfte -, macht es keinen sinn ein digitales 1/f oder 1/f² rauschen statt mithilfe von 1/f oder 1/f² zu berechnen das random() zu nehmen und dann eine moog ladder filter emulation dahinter zu schalten, an der du dir drei tage einen wolf programmierst und die dann einfach nicht das macht, was du wolltest, sondern nur etwas ähnliches.
 
Zuletzt bearbeitet:


Neueste Beiträge

News

Zurück
Oben