Karplus-Strong und Pitch?

schmale Pulswelle
Ich verstehe leider immer noch nicht was eine schmale Pulswelle für eine Signalform ist. Tut mir leid. Das Internet kennt es, aber nicht in Zusammenhang mit Audio. Eher zum Thema Blutdruck. Lediglich so was habe ich gefunden:

1716829561997.png

Was für mich grob ein Rechteck ist.

Oder ist es so was?

1716829901017.png

Schaut für mich aus wie ein über ein Envelope modulierter Sinus.
 
Ich verstehe leider immer noch nicht was eine schmale Pulswelle für eine Signalform ist.
Pulsbreitenverhältnis 10% zu 90%.

Wenn wir das ganze als "physical modeling " verstehen, dann entsprechen die schmalen (=10%igen) Pulse den vom Bogen abstehenden Härchen, die die Saite anregen.
 
wirklich nicht perfekt sein. Also näherungsweise klappt das ja bereits ganz gut. Wenn ich ein paar Hz daneben liege ist das schon okay.

es gibt auch eine abkürzung, die sich dem real thing annähert, im mittleren stimmbereich ganz gut funktioniert, und einfacher zu berechnen ist.
leider bekomme ausgerechnet diese abkürzung selbst nicht auf die reihe und will sie daher erst gar nicht hier anbringen.

ein paar hertz sind es ja nicht, es können schon auch +10 samples werden, je nachdem wie weit die nennfrenz des filters von der frequenz der note entfernt ist. das sind bei 3000 Hz dann ein paar keys. :P
 
zunächst mal fallen mir 2 andere dinge für ich ein.

1.) thema violinenbogen:

ich empfehle hierzu immer (white noise*pink noise*pink noise) als exciter.
ist fast einfacher zu machen als o.g. wellenformen und dabei aber chaotisch, wie es sein soll. aber versuch einfach beides mal (s.u.)

auch nicht zu unterschätzen ist die frage nach feedback vs feedforward. für das "violine" modell ist es üblich, einfach ein *~ -1 in die schleife einzubauen.


2.) thema tuning:

fürs erste kannst du ja zwei getrennte sachen bauen. einmal mit lowpass für percussive instrumente - und dann eines ganz ohne filter, nur mit amplitudenmultiplikation für das decay.

letzteres ist zwar nicht ganz das gleiche, aber wenigstens stimmt das tuning da zu 100%, ohne dass du 3 stunden recherchieren und ausprobieren musst.
das ausschwingverhalten eines resonators ist ja für die release phase eines ereignisses am interessantesten. davon hat eine "violine" aber gar nicht so viel. deren klangformung im verlauf bekommt man zu enem großen teil über den exciter hin.

um gute exciter signale zu erzeugen muss man auch nicht zwingend convolution verstehen. damit spielt man einfach herum und macht seine erfahrungen damit. das augenmerk legst du dabei auf das spektrum des exciter signals.
 
Zuletzt bearbeitet:
ich empfehle hierzu immer (white noise*pink noise*pink noise) als exciter.
ist fast einfacher zu machen als o.g. wellenformen und dabei aber chaotisch, wie es sein soll. aber versuch einfach beides mal (s.u.)
Probier es einfach mal aus; es ist einfach sehr viel interessanter als Noise. Die Geige klingt ja unterschiedlich je nach dem wie schnell der Bogen über die Saiten gezogen wird. Der reine Noise kann das so nicht abbilden. Das einzige, was der Noise macht, ist die leichte zufällige Verteilung der Härchen darzustellen (die aber an realen Pferdehaarbogen durchaus nicht gegeben ist. Ein neu bespannter Bogen weist eine sehr gleichmäßige Rauhheit auf. Ein Bogen mit abgespielter Bespannung hat eher was mit zufällig verteilten Härchen zu tun)
 
Dann musste ich mir erstmal einen Oszillator bauen der sowas überhaupt kann.

Hier mit einem Sinus. Square und Saw werde ich aber vielleicht auch noch machen. Zumindest Saw könnte noch interessant sein.

1716890768666.png
1716891657839.png

Mich stört ein wenig, dass die Sinusform bei Verkleinerung der Pulsbreite abflacht. Allerdings ist die Berechnung dafür ein klein wenig komplexer für einen wahrscheinlich nicht oder kaum hörbaren Unterschied. Und beim Raspi möchte ich dann doch sparen wo es geht.
white noise*pink noise*pink noise
Ja, das habe ich ja als erstes auch benutzt und hört sich gut an. Aber wenn @fanwander Recht behält wäre die Nutzung eines Puls schon mit mehr möglichen Variationen verbunden.
amplitudenmultiplikation für das decay
Du meinst wahrscheinlich einen Envelope? Den habe ich zusätzlich hinten dran mit unterschiedlichen Funktionen (linear, exponentiell/logarithmisch).
Werde ich mir auch mal vormerken.
 
Ja, das habe ich ja als erstes auch benutzt und hört sich gut an. Aber wenn @fanwander Recht behält wäre die Nutzung eines Puls schon mit mehr möglichen Variationen verbunden.

cracklenoise kannst du auch so shapen, dass es form und "frequenz" verändert.

in einer sehr einfachen version mischst du z.b. einfach eine parallele instanz dazu, um die "laute knackser" frequenz durchschnittlich zu verdoppeln.

1716898966980.png

periodische und chaotische exciter signale halte ich für 2 grundlegend verschiedene dinge die zu unterschiedlichen ergebnissen führen.

oder man mischt sie einfach, das ist auch nicht verboten. :)

wenn du das rauschen mit dem gepulsten in der amplitude modulierst, hast du schon fast das gute alte VOSIM exciter prinzip. es ist dann periodisch und chaotisch gleichzeitig! und schokolade! und was zum spielen!



Du meinst wahrscheinlich einen Envelope?

das lässt sich auch immer machen - jedenfalls zum verkürzen des decays, oder für eine dedizierte "note off" getriggerte ausklingphase.

ansonsten aber nein, die absenkung der amplitude führt im delay loop dazu, dass es schneller oder langsamer ausklingt. also einfach nur statt eines frequenzfilters * 0.9 benutzen, gerade so wie man das bei jedem echo effekt auch macht, das war der vorschlag. es gibt andere dinge, die mit diesem resonator dann nicht mehr gehen, aber so pfuscht dir kein filter unbekannter bauart mehr in die länge des loops rein.

CNMAT resonators~ & co externals dürfte es für pd auch geben. ist dann noch eingeschränkter im design, kommt dafür aber gleich in bänken (=mehrstimmig) daher.
 
Zuletzt bearbeitet:
cracklenoise kannst du auch so shapen, dass es form und "frequenz" verändert.
Ja, sicher. Aber jetzt habe ich mit dem Puls angefangen. ;-)

1716899191453.png

1716898795128.png

Da lassen sich lustige Formen zusammen mixen. Ich bin sehr gespannt was dabei rauskommt. Heute Abend wird's dann mal getestet.
also einfach nur statt eines frequenzfilters * 0.9 benutzen
Das mache ich zur Dämpfung sowieso auch noch. Siehe Patch eine Seite zurück.
CNMAT resonators~ & co externals dürfte es für pd auch geben
So auf Anhieb ist da nichts zu finden. Und das sind eh etwas böhmische Dörfer für mich.
 
Dann musste ich mir erstmal einen Oszillator bauen der sowas überhaupt kann.

Hier mit einem Sinus. Square und Saw werde ich aber vielleicht auch noch machen. Zumindest Saw könnte noch interessant sein.

Anhang anzeigen 217211
Anhang anzeigen 217213

Mich stört ein wenig, dass die Sinusform bei Verkleinerung der Pulsbreite abflacht. Allerdings ist die Berechnung dafür ein klein wenig komplexer für einen wahrscheinlich nicht oder kaum hörbaren Unterschied. Und beim Raspi möchte ich dann doch sparen wo es geht.

Ja, das habe ich ja als erstes auch benutzt und hört sich gut an. Aber wenn @fanwander Recht behält wäre die Nutzung eines Puls schon mit mehr möglichen Variationen verbunden.

Du meinst wahrscheinlich einen Envelope? Den habe ich zusätzlich hinten dran mit unterschiedlichen Funktionen (linear, exponentiell/logarithmisch).

Werde ich mir auch mal vormerken.
Eigentlich sollte das doch ganz einfach sein - aber mir fehlen bei der von dir genutzten Software die Erfahrungswerte, eine Impulswelle enthält im Prinzip alle Harmonischen praktisch wie 'ne SAW nur ohne abfallende Lautstärke bei den höheren Harmonischen, ich würde mich da nicht unbedingt aufs Aussehen der Wellenformen konzentrieren. Alternativ 2x Sägezahn eine davon invertiert, wenn du die beiden in der Phase verschiebst bekommst du auch deine schmale Pulswelle bzw. PWM.
 
Tja, ich weiß auch nicht. Bin gerade etwas frustriert. Im Grunde habe ich genau das was du beschreibst.

1716910791765.png

1716910811869.png

An der Wellenform halte ich mich nicht so wirklich fest. Aber dass im unteren Spektrum was fehlt ist der Steigung im Sägezahl geschuldet die aufgrund der vereinfachten Berechnung je nach PWM immer später einsetzt denke ich.

Aber davon mal abgesehen war das Ergebnis mit Rauschen ja wirklich brauchbar. Mit der Pulswelle hört sich das hier durch den KPS einfach an wie ein Sägezahn. Ob's am fehlenden unteren Spektrum hängt... Keine Ahnung. Vielleicht ist ja auch noch ein Denkfehler meinerseits drin. Verstanden habe ich es aber eigentlich.
 
eine Impulswelle enthält im Prinzip alle Harmonischen

das ist korrekt - und auch damit sollte man an einem resonator modell ausgiebig herumexperimentieren.

das von fanwander ins spiel gebrachte dingens war allerdings nicht das impuls-dingens sondern das puls-dingens, und das sind zweis verschiedenem dingens. :)

ein IT or ein BLIT können die basis von einem puls-dingens sein (impuls + linear slew auf down = saw), müssen aber nicht.


wobei wir bei der frage wären, wie herr tommi sowas schön sparsam bauen kann.

das sparsamste was es gibt wäre ganz frei von funktionen: man lädt (oder generiert) ein sample, und loopt das dann. die frequenz ändert man über die loop länge des wavetables.
bei einem BLIT bitte nur in ganzen samples - bei allem anderen frei und mit gewöhnlicher interpolation von der stange. beim IT (single sample click) bleibt der einfach wie er ist und nur die pausen dazwischen sind in der länge dynamisch.

will man auch noch die breite der "pulse" modulieren, spielt man die ganze geschichte einfach höher oder tiefer ab.

einen sparsameren pulswellengenerator dürfte es nicht geben.

ich würde mit nicht-eckigen formen wie hanning, bell curve u.ä. anfangen und dann mal vergleichen wie sich das rechteck oder der click davon unterscheiden.

bipolar ist außerdem erst mal nicht zwingend notwendig. bei unipolar ist der unterschied zwischen feedback und feedforward auch größer. mit beidem zusammen sind quasi immer 4 varianten eines klanges verfügbar.
 
Zuletzt bearbeitet:
um mal meine 3 cents dazuzugeben die vielleicht helfen: (hab das original paper von carplus und strong gelesen). Die haben keinen filter benutzt, sondern ganz simpel benachbarte Werte Addiert und durch 2 halbiert (<< 1). Nicht nur das das schneller ist, vielleicht hat das auch leicht anderes Verhalten das sich besser kontrollieren lässt.
 
Das hatte ich als es um der/die/das Filter ging allerdings auch in Betracht gezogen um Rechenzeit zu sparen. Allerdings ist das in Pure Data Pain In The Ass. Immer eine bestimmte Anzahl Samples in einem Puffer vorzuhalten, hinten das Alte raus, alles einmal schieben, vorne das Neue rein, summieren und halbieren... Alles in Echtzeit. Das mit den Tonhöhen funktioniert ja auch erstmal zufriedenstellend.

Ich habe mir jetzt noch tatsächlich die Mühe gemacht und eine Oszillator gebaut der wie oben ausschaut, nur eben mit einem richtigen Sägezahn. Es hat sich, wie erwartet, nicht viel geändert. Also ich mach da jetzt erstmal eine kreative Pause. Vielleicht fällt der Groschen ja irgendwann noch...
 
warum slide~ in pd fehlt habe ich nie verstanden. wenn du das selbst machst dürfte es 100 mal so viel rechenleistung brauchen wie mit poles und zeros.^^


das mit dem "oszillator" ist eine misconception. die geschichte mit dem pulsetrain und den zyklischen wellenformen benutzt man tendenziell, wenn die grundfrequenz durch diesen erfolgen soll, und der resonator (bzw mehrere davon) dann nur noch einen formanten dazu ergänzen.

bei k/s oder modal ist das ein reines exciter signal, das eben ein plektrum, ein drumstick, einen pferdehaarbogen oder regentropfen - überwiegend in deren amplitude - simuliert, und die wahrnehmbare frequenz des klanges entsteht dann nur durch den resonator.
 
Ach na ja. Irgendwie bekommt man ja doch alles gelöst in PD. Aber es ist teilweise eben tricky.

Erstmal läuft es ja nun, auch wenn die Simulation des Bogens jetzt nicht sofort hingehauen hat. Viel gelernt habe ich auch. Daher hier auch nochmals vielen Dank an alle die mich unterstützt haben!
 
Sorry, mit PD kenne ich mich nicht aus, sondern code hardcore in c++ da war es einfacher als mit dem Tool. Ich habe einfach die Wellenlänge im Delay abgetastet und bei höheren Frequenzen das arithmetische Mittel als Signal genommen. Dämpfung war auch nur eine lineare approximation.
Es freut mich aber, dass du eine Lösung gefunden hast.
 
Da bin ich doch ganz zufällig noch auf ein altes Video gestoßen:



Das ist schon ganz cool finde ich. Mittlerweile läuft der Patch allerdings nicht mehr und die Umsetzung ist etwas Spaghetti. Aber als Lernobjekt ganz brauchbar. Hab's mal an den Beitrag gehängt.

Auf jeden Fall ist das sehr viel komplexer als ich erwartet hatte.
 

Anhänge

  • karplus-strong.zip
    2,8 KB · Aufrufe: 0


Zurück
Oben