Hallo, ich weiß jetzt nicht ob ich hier an der richtigen Stelle bin. Ich bin noch relativ neu in der DSP-Welt und möchte gerne E-Gitarren Sound mit einem DSP erzeugen. Leider konnte ich bis jetzt im Internet noch keine mathematischen Modelle oder sonstiges zu diesem Thema finden. Ich bin im Moment auf dem Stand, dass sich der Ton der E-Gitarre aus dem Grundton und den Obertönen zusammensetzt. Die Frequenzen für die Grundtöne habe ich hier gefunden: http://de.wikipedia.org/wiki/Ton_%28Musik%29 Meine Frage ist kann man so ein Signal auf einem DSP überhaupt erzeugen? Wenn es möglich sein sollte, wie geht man da am besten vor? Wie könnte man die Obertöne erzeugen bzw. wo finde ich wie sich diese Töne zusammensetzen? Gibt es Literatur zu diesem Thema? Ich habe mir auch schon das Programm FL-Studio angeschaut und es soll wohl eine komplette E-Gitarre auf dem Windows PC simulieren. Hier der Link von einem Youtube Video: http://www.youtube.com/watch?v=ZAEsQ-qyAWk Dann müsste es doch auch gehen diese Töne mit einem DSP zu erzeugen oder? Vielen Dank fürs lesen und ich bin sehr gespannt ob vielleicht jemand schon mal was ähnliches gemacht hat. Grüße Wisler
Naja du willst ein Eingangssignal verzerren, also über ein nicht-lineares System abbilden. Im einfachsten Fall hast du einen Sinus y = f(t) als Eingangssignal und schickst den jetzt durch ne andere Funktion y2 = g(y) folgendermaßen: y2 = g(f(t)). g(y) könnte zum Beispiel die Kennlinie einer Röhre sein. Wenns z.B. ne SGN-Funktion ist, kannst du so aus nem Sinus nen Rechteck machen und hast damit schon ganz gut Obertöne.
Les' doch mal http://music.columbia.edu/cmc/music-dsp/musicdspfaq.html und insbesondere http://music.columbia.edu/cmc/music-dsp/FAQs/guitar_distortion_FAQ.html
Wisler Electronics schrieb: > Ich bin im Moment auf dem Stand, dass sich der Ton der E-Gitarre aus dem > Grundton und den Obertönen zusammensetzt. Theoretisch korrekt, aber in der Praxis erzeugt man Saiteninstrumente synthetisch via Physical Modeling. Google mal nach Karplus-Strong bzw. Waveguide. K-S ist im Prinzip eine sehr kurze Delay Line (Ringpuffer), die du mit einem Excitersignal (z.B. Dirac, Rauschen oder Envelope (DC)) antriggerst und die nach quasi 'ausschwingt'. Waveguide kannst Du dir vorstellen wie einen Tennisschläger, wo die Bespannung quasi die einzelnen bi-direktionalen Delaylines darstellt, an den Knotenpunkten (scattering junctions) teilt sich die Wellenfront auf (Matrixoperation). Zumindest Nylonsaiten lassen sich mit wenig Aufwand via Karplus-Strong sehr einfach nachbilden. Bei Stahlsaiten wird es etwas schwieriger. Den Korpus solltest Du natürlich auch mit einbeziehen, aber da musst Du schon mit Waveguides rumhantieren. Klick mal hier: http://www.ee.columbia.edu/~ronw/dsp/ http://www.cim.mcgill.ca/~clark/nordmodularbook/nm_physical.html http://www.acoustics.hut.fi/research/asp/aguitar/ Bei dem Ding in dem youtube-Video würde ich mal auf reFX Slayer tippen, der macht auch Physical Modeling.
Vielen Dank für die vielen Infos. Zuerst hat man gar nichts und dann soviel dass man nicht weiß was man zuerst lesen soll. Ich denke der Karplus-Strong Algorithmus ist ein guter Startpunkt. Ich werde den erstmal in Matlab programmieren und dann mal sehen, wie ich ein Modell dieser Gitarre erstellen kann. Gibt ja sogar bei Matlab eine kleine Demo zu diesem Algorithmus. (filterguitardemo) Fall jemand noch mehr Anregungen hat würde ich mich sehr freuen. Grüße Wisler
Die klassischen E-Guit Sounds werden analog erzeugt. Das muss man nachbilden: Overdrive, Clipping
e-guit schrieb: > Die klassischen E-Guit Sounds werden analog erzeugt. Das muss man > nachbilden: Overdrive, Clipping Das ist klar, was hinter der Gitarre ist, kann man mit Filtern und Waveshaping modellieren. LS-Box evtl. via Impulsantwort, ansonsten Waveshaper + Filterbank. Aber das schwierigste an der 'Gesamtheit' ist das modellieren der Gitarre an sich. Also: Exciter (Plek, Finger)->KS/Waveguide<->Korpus->Pickup(Filter+Waveshaper)->Preamp Model->Power Amp Model->Lautsprecher Nicht zu vergessen Rückwirkungseffekte, z.B. LS auf Endstufe (Dämpfungsfaktor, Sagging d. Pentoden (Class AB)), Feedback von LS auf Saitenschwingung etc.
Danke nochmals für die Ideen. Wie immer bei einer Simulation muss man wissen was man simulieren möchte und welche Vereinfachungen man treffen möchte. Ich bin leider kein Toningenieur. Ich studiere Nachrichtentechnik und konnte durch mein Studium schon ein wenig Erfahrung mit digitaler Signalverarbeitung und DSPs sammeln. Darum dachte ich mir ich könnte doch mal versuchen eine E-Gitarre mit dem DSP umzusetzen. Es soll jetzt nicht ein professioneller Synthesizer werden, sondern mir ist hier der Lerneffekt wichtig. Ich beschäftige mich auch erst seit ein paar Tagen mit dem Thema Klangsynthese und bin noch ganz am Anfang. Ich bin auch eher durch Zufall auf dieses Thema gestoßen. Ich denke ein guter Anfang für die Physik der E-Gitarre ist hier zu finden: http://homepages.fh-regensburg.de/~elektrogitarre/ Wenn ich es jetzt richtig verstanden habe muss ich folgende Schritte machen: - Saitenschwingung mit Karplus-Strong Algorithmus vielleicht auch den Extended Karplus-Strong Algorithmus (https://ccrma.stanford.edu/~jos/pasp/Extended_Karplus_Strong_Algorithm.html) Damit ist es möglich die Frequenz des Tons zu erzeugen. - Danach den Tonabnehmer(Pickup?) modellieren (Vielleicht auch mit Waveshaper + Filter) - Den Korpus modellieren (Filter) - Effekte wie Flanger, Tremolo usw. (Mit einem DSP) - Verstärker modellieren (Filter, Kennlinie?) - Danach dann mit dem DA-Wandler auf einem Lautsprecher ausgeben. Stimmt das so oder habe ich etwas vergessen? Ich weiß ich werde so sicher nicht einen perfekten Sound hinbekommen, weil sicher ein paar Systemverhalten der E-Gitarre nicht mit moduliert wurden. Aber ein DSP hat ja auch nur begrenzte Rechenkraft und deshalb sollte das Modell auch nicht zu komplex werden oder? Aber für einen Nichtmusiker, wie mich wird es schon ausreichen ;-) und zum anderen soll das Projekt oder Programm auch mal fertig werden. Leider bin ich auch nur alleine und deshalb soll es hier nicht um die Exaktheit des Modells der E-Gitarre werden. Ich denke eine E-Gitarre zu kaufen und dann zu spielen ist sicher billieger und hat eine sehr viel höhere Qualität. Danke für eure Tipps haben mich schon eine ganzes Stück weiter gebracht. Wisler
Ich habe noch einen Link gefunden. Dort baut jemand eine E-Gitarre selbst und beschreibt diese mathematisch. http://www.bergarbeiten.at/physik_der_egitarre_v8.pdf Dort wird auch der Tonabnehmer mit einem System 2. Ordnung simuliert. Diesen Filter könnte man doch nachher auch in den DSP programmieren oder? Wisler
Nicht schlecht, aber den Sound der E-Gitarre macht der Gitarrist mit den Saiten und Fingerbewegungen. Da ist nicht viel systematisch zu simulieren. In der Arbeit wird z.B. auch die Wellengleichung abgehoben, aber genau das ist es ja nicht sondern die komplexe Resonanz mit dem Hals, der gebeugt wird und die Dämpfung durch die Finger. Da ist viel chaotisches Leben in einer gitarre, das man so nicht nachbilden kann. Auch die Elektronik kommt zu kurz. Es gibt unzählige Ansätze von Verzerren und jeder ist ein wenig anders. Meist kommt es dann mehr auf die Elektronik an, als auf den Tonabnehmer. Viele Gitarristen lassen z.B. auch ihre Guitarre mit dem Lautsprecher interagieren und nutzen Rückkopplungen.
Martin Kluth schrieb: > Viele Gitarristen lassen z.B. auch ihre Guitarre mit dem Lautsprecher > interagieren und nutzen Rückkopplungen. Jimi lässt grüßen :)
>Zumindest Nylonsaiten lassen sich mit wenig Aufwand via Karplus-Strong >sehr einfach nachbilden. Hab ich schon mal gemacht. Und durch einen Programmierfehler gab's eine Art Limiting. Das Ergebnis: ein ziemlich satter E-Gitarren-Sound. Hat sich richtig gut angehört.
Hi @ll @Christoph H. Mit welcher Sprache hast du den das programmiert? Hast du auch einen DSP benutzt? Ich habe jetzt einiges dazu im Internet finden können ;-) Hier die Links: Sound examples, welche durch physical modelling entstanden sind wenn ich es richtig verstanden habe. https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html Physical Modelling für E-Gitarren: https://ccrma.stanford.edu/~jos/pasp/Electric_Guitars.html (Ist ein ganzes Buch, dass man online lesen kann :-)) Hier noch drei PDFs, an welchen ich mich orientieren werde! Dort wird beschrieben, wie man eine E-Gitarre modelieren kann ;-) https://ccrma.stanford.edu/~jos/pdf/LAC2008-jos.pdf https://ccrma.stanford.edu/~jos/pdf/Acoustics08.pdf https://ccrma.stanford.edu/realsimple/faust_strings/faust_strings.pdf Vielleicht hat jemand Lust auch so ein Projekt zu starten und man könnte sich austauschen! Grüße Wisler
>@Christoph H. >Mit welcher Sprache hast du den das programmiert? Hast du auch einen DSP >benutzt? C. Der Karplus-Strong-Algorithmus stammt aus der 8Bit Ära und braucht ziemlich wenig Rechenleistung. Der Algorithmus ist patentiert, aber das Patent ist schon abgelaufen. Der Algorithmus läuft ganz locker auf einem Atmega8. Das Ganze besteht nur aus einem Ringbuffer und einer Mittelwertbildung aus 2 Werten als Filter.
Christoph H. schrieb: > Das Ganze besteht nur aus einem Ringbuffer und einer > Mittelwertbildung aus 2 Werten als Filter. Nicht ganz. Wenn ein Tiefpass daran beteiligt ist (und sei es nur die Interpolation einer fractional delay line), verstimmt sich das ganze nach oben hin, wg. dem 1-sample delay. Also sollte ein Allpass zusätzlich mit rein, dessen Länge mit in die Delay-Kalkulation einfließen sollte. Das ist aber keine Alchemie und z.B. bei J.O. Smith beschrieben.
>Nicht ganz.
Hast Du den Klang schon einmal gehört? Wieso meinst Du einen Allpass zu
benötigen?
Also ich finde den Klang eigentlich nicht schlecht, aber ich bin jetzt auch kein Musiker. ;-) Wenn es jetzt darum geht wie sich der Algorithmus anhöhrt, dann gibt es hier http://cnx.org/content/m15489/latest/sub_ks-build.html ein Online Video wo der Algoritgmus mit LabView umgesetzt wird. Was ich mich im Moment frage ist, wie mache ich es mit mehreren Frequenzen? Ich möchte erreichen, dass sich mehrere Frequenzen überlagern können. Wenn ich jetzt nicht ganz falsch liege, dann bräuchte ich das um Akkorde abspielen zu können. Da eine Gitarre ja sechs oder 7 Saiten hat, kann ich ja nicht eine Saite benutzen um den DA-Wandler voll auszustauern und hier ist gerade mein Problem. Wie macht man das bei Synthesizern? Sind da einfach alle Töne die gleichzeitig auftreten können schon von Anfang an mit einem Faktor beaufschlagt. Also bei meiner Beispiel mit 1/6 oder 1/7, dann können sich die Töne überlagern und man ist nicht in der Vollaussteuerung. Habt ihr da vielleicht eine bessere Idee wie man das macht? Wisler
Christoph H. schrieb: > Hast Du den Klang schon einmal gehört? Ja, ich arbeite beruflich in dem Bereich. > Wieso meinst Du einen Allpass zu > benötigen? Ist halt so. Das 1-Sample-Delay sorgt für Verstimmung nach oben hin. Genauso wie alle Biquad-IIRs nach oben hin eine verzerrte Kurvenform haben. So ist z.B. ein Filter mit Glockenkurve (Peaking oder Bandpass) gegen Nyquist dermaßen asymmetrisch, dass der Amplutudengang fast wie ein Sägezahn aussieht. Oversampling kann bei KS helfen (ohnehin wenn Nichtlinearitäten mit rein sollen), ansonsten kann man natürlich auch mit der Frequenz weiter unten bleiben, je nachdem was gefordert ist.
Wisler Electronics schrieb: > Sind da einfach alle Töne die gleichzeitig auftreten > können schon von Anfang an mit einem Faktor beaufschlagt. Also bei > meiner Beispiel mit 1/6 oder 1/7, dann können sich die Töne überlagern > und man ist nicht in der Vollaussteuerung. Synthesizer skalieren nicht je nach Stimmenauslastung. Das wäre aus musikalischer Sicht großer Käse. Eine echte Gitarre wird auch nicht pro Saite leiser, wenn ich Akkorde spiele. Was man evtl. machen kann (würde ich ohnehin tun): Den Pickup gleich mit modellieren. Also prinzipiell LP->Waveshaper->HP, idealerweise am Eingang noch ein Kammfilter (ggf. nach pickup modelling googeln). Als Waveshaper eignet sich z.B (wenn input als float (-1..1), sonst skalieren: if (x > 1) x = 1; else if (x < -1) x = -1; else x = (x - x x x * 1/3) * 1.5; Damit hätte man recht gut die Charakteristik des magnetischen Systems approximiert. LP am Eingang simuliert den Höhenverlust, HP am Ausgang filtert DC der Saitenschwingung aus. Sofern man den Pickup also nicht full-scale ansteuert, sondern vielleicht mit 'nem Drittel des Signals oder so, sollte alles in Ordnung sein. Muss man etwas experimentieren. Soundsynthese ist immer empirisch. Es gibt genug schlechte Bespiele für eine technisch-korrekte Herangehensweise, die aber offenbar nie abgehört wurden ;)
Sascha schrieb: > if (x > 1) x = 1; > else if (x < -1) x = -1; > else x = (x - x x x * 1/3) * 1.5; Das wird hier komisch geparsed... ich meinte: (x - x^3 * 1/3) * 1.5;
>Also sollte ein Allpass zusätzlich mit rein, http://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis Ich wage jetzt mal zu behaupten, dass in der frühen Ausführung der 8Bit Synthesizer kein Alpass, sondern ein simpler Mittelwertfilter implementiert war. Poste doch einfach mal den Beweis des guten Klangs als wav-file.
Hier mal die einfachste Struktur mit Mittelwertfilter: https://ccrma.stanford.edu/~jos/Mohonk05/Karplus_Strong_Algorithm.html
Hi Leute, ich habe etwas gefunden was auch die Rückkopplung mit einbezieht. Dort wird gezeigt wie man E-Gitarre Sound mit Matlab erzeugt. Vielleicht interessiert es ja den ein oder anderen. http://mt.music.mcgill.ca/~collicuttm/MUMT618/KSA_distortion_and_feedback.html#Introduction Grüße Wisler
Wisler Electronics schrieb: > Wie macht man das bei Synthesizern? So, wie in jedem elektronischen Instrument, in dem ein Mischer implementiert ist: mit headroom nach oben. Jede Einzelstimme hat ihre spezifische Vollaussteuerung, z.B. 16Bit auf maximaler Lautstärke. Die werden aber auf z.B. 24 Bit summiert und weiterverarbeitet. Damit steht für Filter (Reso) und Effekte, wie Hall und Echo, die sich noch aufaddieren können genug Platz zur Verfügung. Real stehen MIDI-CTRL z.B. auf 100 statt auf 127 und lasten die Lautstärke nicht genau aus, schon von daher hat man "Platz". Addieren sich nun mehrere Stimmen zusammen, steigt die Gesamtlautstärke statistisch um +3dB. 256 Stimmen liefern also nur Faktor 16 an Signalstärke und damit 20 Bit, statt 16. Letzlich muss die Sache natürlich skaliert werden. Das muss der User dann mit seinen Händen und dem Lautstärkeregler tun.
Christoph H. schrieb: > Hier mal die einfachste Struktur mit Mittelwertfilter: > https://ccrma.stanford.edu/~jos/Mohonk05/Karplus_S... Ein simpler MW-Filter finde ich an dieser STelle aber etwas "undersized". In digitalen Messsystemen wäre das nicht zulässig - einzig in COnsumersystemen.
Hallo, ich bin gerade dabei das extended Karplus Strong Model in Matlab zu implementieren. Das einzige Filter was ich noch nicht ganz verstanden habe ist das String stiffness Filter(Saitensteifheitsfilter) Hs(z). Weiß jemand wie man das bestimmt? Ich weiß nur, dass es ein Allpassfilter ist. Damit müsste es doch möglich sein eine Stahlsaite zu implementieren oder? Grüße Wisler
Hi Leute, heute habe ich es geschafft den extended Karplus Strong Algorithmus in Matlab zu implementieren. Ich möchte euch gerne ein paar Wave-Dateien zeigen. Vielleicht könnte ihr mir ja sagen was noch fehlt oder man noch verbessern kann. Ich kann in dem Modell die Zupfposition, den Zupfwinkel, Tonhöhe, Weich oder Hart angeschlagen einstellen und noch die Verzerrung mit Soft Clipping. Das einzige was mir noch fehlt ist der String stiffness Filter(Saitensteifheitsfilter) Hs(z). Nur leider habe ich immer noch nichts darüber finden können, wie man diesen dimensionieren muss. Aber so richtig hört es sich noch nicht nach E-Gitarre an. :-( Grüße Wisler
Ich bedanke mich mal für diesen Thread. Sehr Informativ und ich war überrascht das der Karplus-Strong-Algorithmus, obwohl er so einfach ist, doch so "gut" klingt (dafür das es im Prinzip nur ein vorgefülltes Delay mit einem simplen Addierer und ner Shift-Operation ist). Habe keine 2 std später nen funktionierendes Stückchen Quellcode gebastelt das schon ganz brauchbar klingt, selbst wenn ich beim Extended Karplus-Strong nicht wüsste wie ich die ganzen Übertragungsfunktionen bzw Filter realisieren müsste. Danke jedenfalls noch.
Wenn es denn etwas komplizierter sein soll. Such mal nach "Universität Regensburg" und "Physik der Elektrogitarre".
Also nach Gitarre klingt das bei Weitem nicht. Da kann mit mit synthetischen Einstellungen (Sinus-GEN, Modulation und einem zweiten überlagerten verklingenden Oberton als Transiente) wie es mit jedem üblichen Synthie möglich ist, deutlich mehr erreichen. Wisler Electronics schrieb: > Aber so richtig hört es sich noch nicht nach E-Gitarre an. :-( Weil eine E-Gitarre auch nicht die akustischen Rückkopplungen und Modulationen bringt, wie eine Konzertgitarre -dafür aber am Signal bastelt. Schau Dir mal die elementaren Verzerrtechniken an, die üblichweise angewendet werden, als da wären Clipping, Phaseinversion, Compression, etc. Aus der Analogtechnik sind zahllose Verzerrerschaltungen bekannt, eine gute fand ich mal im Elektor: Dort wird die Lautstärke gemessen und die Verstärkung negativ geregelt sodass eine gleichmässig klingende Gitarre mit verzerrtem Sound entsteht und sich die Verzerrung nicht wie beim Clipping mit ausklingender Lautstärke entschärft. Ich habe sowas in VHDL nachgebildet: Beitrag "VHDL-Effektgerät für Gitarre und andere Instrumente" Das Gemansche basiert auf elementaren Clip, Spiegel und Modulationstechniken, wie es die Bodeneffektboxen leisten sowie einem nachgeschalteten Verzerrer, ähnlich dem hier: Beitrag "Re: Röhrenklang nachbilden"
Hi zuerst einmal möchte ich bei für die Antworten bedanken, weil die mich wieder auf neue Ideen gebracht haben. So wie viele schon geschrieben haben, macht natürlich der Verstärker sehr viel am Klangbild der E-Gitarre. Den habe ich natürlich noch nicht richtig nachgebildet. Ich denke ein einfaches Soft - Clipping ist zwar für den Anfang ganz nett, führt aber nicht zum gewünschten Ergebnis. Ausserdem ist der Karplus Strong Algorithmus schon etwas in die Jahre gekommen und heute gibt es doch schon sehr viel bessere Techniken, wie Waveguides oder die FTM (http://www.amazon.de/Synthesis-Physical-Modeling-Functional-Transformation/dp/0306478757 leider ist das Buch, aber doch recht teuer :-( ). Mit der FTM wird die partielle DGL in Echtzeit berechnet und das Verfahren hört sich wirklich gut an. (http://sonic-core.net/joomla.soniccore/index.php?option=com_content&view=article&id=224&Itemid=181&lang=de) Weiterhin bin ich auf die Möglichkeit gestoßen, dass man einen Röhrenverstärker mit Wellendigitalfiltern modelieren kann. (http://www.acoustics.hut.fi/~mak/PUB/ICASSP_2006.pdf) Hat schon mal jemand sowas gemacht? Wenn ja wie klingt so etwas? Ich würde gerne mal so etwas machen, aber leider habe ich im Moment nicht die Zeit dazu und ich denke es wird bestimmt 2013 bis ich damit anfangen werde. Kennt hier jemand den Unterscheid zwischen den Waveguide Verfahren und den Wellendigitalfiltern (Wave digital Filter auf Englisch)? Damit soll es wohl möglich sein analoge elektrische Schaltungen mit hilfe von digitaler Signalverarbeitung zu modelieren. Viele Grüße Wisler
Soweit ich weis, ist der Karplus-Strong Algoritnmus eine Spezialisierung der Waveguide Modellierung: https://ccrma.stanford.edu/~jos/Mohonk05/Interpretations_Karplus_Strong_Algorithm.html
Hallo es gibt mal wieder etwas neues von mir ;-) Im Anhang könnt ihr auch das Zeitsignal einer schwingenenden B-Saite aus Nylon anhöhren. Hört sich doch besser wie der karplus strong an oder? Die Berechnung wurde durch den folgenden Algorithmus durchgeführt. http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=27&ved=0CF0QFjAGOBQ&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.84.1572%26rep%3Drep1%26type%3Dpdf&ei=K_BZUdSzOdDFtAbEwIDQDw&usg=AFQjCNFS-ctJ9wJw7cod23YeKc0dtiwBuw&bvm=bv.44442042,d.Yms&cad=rja Weiß hier jemand einen Daumenwert, wie groß die Verzögerung zwischen gespielter Note und bis der Ton an den Lautsprechern ausgegeben wird sein darf? Viele Grüße Wisler
Wisler Electronics schrieb: > Weiß hier jemand einen Daumenwert, wie groß die Verzögerung zwischen > gespielter Note und bis der Ton an den Lautsprechern ausgegeben wird > sein darf? Kommt auf den Einsatzfall an: Für Production ist es beliebig, man hört ja die Latenz nicht. Für Live ist das kaum ein Problem, da kann man mit 20ms (6m Distanz) prima hinkommen, ohne dass es auffällt. Für Aufnahmen und Einspielungen argumentiere ich immer so, dass der Ton von der Gitarre 50cm Weg zum Ohr hat. Bei Kopfhörer-basierten Aufnahmen hast Du also 1,5ms Zeit für Echtzeitbetrieb. Wenn der Ton allerdings aus einer Midi-Gitarre kommt, sind locker schon 1ms davon verbraten (3 Byte Ton+Controller bei 30kbps). Der DSP wäre als mit einer Rechenzeit von 0,5s absolut verzögerungsfrei. Da Du sicher samplebasiert rechnest, musst Du wahrscheinlich in 48kHz fertig sein, der DSP ist also mitunter sogar zu schnell :-) Real kann man noch gut Einspielen, wenn ein Ton innerhalb von 5-10ms nach Anschlag zu hören ist - bei gezupften Instrumenten eher weniger. Daher kann man auch getrost Lautsprecher in 1m Entfernung zum Ohr benutzen. Du hast also abzüglich MIDI-Gitarre immer noch positive Zeit für die Echtzeitsynthese. Schwieriger wird es, wenn Du noch Filter einsetzt, die über das RAM arbeiten und mehrere Samples abarbeiten sollen: Schon aus musikalisch-technischen Gründen muss man dazu mal eine 1/4 Welle "sehen", um filtern zu können, was eine entsprechende Zahl von TAPs erfordert und bei einer akustischen Gitarre rund 3 ms Betrachtungszeitraum sind.
Zu Deinem Beispiel-WAV:
An der Hüllkurve musst Du noch etwas arbeiten, meine ich, vorne gibt es
einen gewaltigen Knackser, der Klang ist irgendwie tot und zudem fehlen
mir die Oberwellen in der Einschwingphase. Was für eine Gitarre soll das
sein? - Die Nylongitarre?
>Der Karplus-Strong-Algorithmus stammt aus der 8Bit Ära
Vom Klang hätte ich jetzt sogar eher die 60er getippt: Klingt wie der
Auftakt bei den Stones "I can't get no satisfaction" oder so.
Zu dem paper der Universität Erlangen:
Auf die Schnelle überblicke ich den Algorithmus nicht vollständig, aber
die scheinen sich ja richtig Gedanken gemacht zu haben, wegen der
Formeln. Mich wundert es aber, dass der Klang etwas dumpf ist- Bist Du
sicher, das richtig berechnet zu haben? Meine Gitarre klingt da doch
reichlich anders. Irgendwie mehr Leben drin.
Matthias schrieb: >>Der Karplus-Strong-Algorithmus stammt aus der 8Bit Ära > Vom Klang hätte ich jetzt sogar eher die 60er getippt: > Klingt wie der Auftakt bei den Stones "I can't get no satisfaction" Na wenn schon dann "I feel fine" von den Beatles. >paper der Universität Erlangen > die scheinen sich ja richtige Gedanken gemacht zu haben, > Mich wundert es aber, dass der Klang so dumpf ist- Das Dokument der beiden Herren der Universität Erlangen zeigt schön auf, wo das Problem der synthetischen Klangerzeugung liegt: Zwar wird eine Welle berechnet, die einer einschwingenden Saite gleichkommt, Gitarren bestehen aber nicht nur aus Saiten. Genau genommen besteht 60% des Klangs aus Interaktionen der Saiten untereinander, sowie mit dem Steg und dem Resonanzkörper, die jeweils in komplexer Weise gegeneinander schwingen. Solange man das alles nicht genügend gut emuliert, ist man letztlich mit einem synthetischen Signalgemisch und "Ohrabgleich" schneller und rechenzeitsparender an der Realität dran. Die ausklingenden Oberwellen, ihre Phasenlage und Amplitude zu der Grundwelle, lässen sich ja auch vektoriell in klassischer Weise durch Superposition beschreiben, indem man nicht ständig die DGLs löst, sondern die partiellen Lösungen der DGL im Zeitbereich separiert, faktisch also die Resultate betrachtet, nachbaut und erfahrungsbasiert musikalisch passend abmischt. Die so erzeugten Wellen lassen sich in den Verlaufsformen sher leicht unabhängig von einander geeignet hindrehen. Sie sind zwar in sich nicht "echt" und im Verlauf auch nicht "real", vermitteln aber sher gut den gewünschten Klangeindruck. Wisler Electronics schrieb: > Damit soll > es wohl möglich sein analoge elektrische Schaltungen mit hilfe von > digitaler Signalverarbeitung zu modelieren. Naja, das ist ja so neu nun wieder nicht. Im Grunde ist pSPice der erste Versuch, das zu erledigen und die hardwaremassigen Implementierungen von Regelalgorithmen und Systemmodellen zwecks echtzeitberechung im Rahmen der Estimationsrechung die logische Folge. Das wird seit Aufkommen genügend schneller Microcontroller und DSPs landauf und landab gemacht. Logisch ist es dann auch, das Verhalten der Musikinstrumente mit Oszillatoren abzubilden und sie zu berechnen. Da gibt es auch den Ansatz, sie aus elektrischen Bauteilen zu bilden, die ja quasi alle Grundgleichungen / Differentiale etc vorhalten und sie zu simulieren. Die VA-Synthese bei den virtuell analogen Synthesizern geht genau den Weg. Die Frage ist halt, wie weit man da gehen muss, um genau genug zu sein. Ich habe dazu selbser schon vor 15 Jahren einiges mit DSPs gemacht: http://www.96khz.org/oldpages/vamodelling.htm und das gestaltet sich nicht so ganz einfach, denn die reale Klangbildung in Instrumenten ist deutlich komplizierter, als es die Mathematik auf den ersten Blick suggeriert. Die Lösungen laufen gewissermassen der Realität davon.
Martin Kluth schrieb: > In der Arbeit wird z.B. auch die Wellengleichung abgehoben, > aber genau das ist es ja nicht sondern die komplexe Resonanz mit dem > Hals, der gebeugt wird und die Dämpfung durch die Finger. Sehr richtig! Gerade der sich bewegende Hals bei Gitarren schwingt und tordiert, womit er die Saiten dehnt und führt zu eingprägten Wellen, die rythmisch zugeführt werden, wodurch die Saiten ständig in unterschiedlichster Weise Energie erhalten und miteinander austauschen und über die Luft ist das ebenfalls der Fall. Das ist zwar nicht so extrem, wie bei der Dreiklanggruppe des Klaviers, aber definitiv hörbar. Praktisch betrachtet führt das zu einer Mischung aus Tonhöhenmodulation (Vibrato) und Amplitudenveränderung (Tremolo), die einen inneren Zusammenhang haben. Damit kann man z.B. auch das "wolfen" von Celli und Bässen erklären und simulieren, wobei ja selbst dies abstrakt analysierbar und synthetisch ungefähr nachbildbar ist. Will man diese ganzen Effekte in Echtzeit durch Gleichungen abbilden, sodass sich die Schwingungen und Modulationen von selbst einstellen, muss man permanent die verschiedenen "Oszillatoren", die im Instrument stecken, berechnen und alles phasenrichtig zusammenziehen. Weiter muss man die Schalllaufzeit in den Materialien berücksichtigen, Reflektionen berechnen und dabei die Dämpfungen und Energieflüsse in die Nachbarregionen ausrechnen. Nur dann entstehen ansatzweise die komplexen Schwebungen und Tonhöhenschwankungen von echten Instrumenten, durch die sich ein realer Klang von synthetischen Pseudo-Sinus-Wellen und einfachen Saiten-DGLs unterscheiden und nur dann sind sie auch realitätsnah. Das alles muss aber sehr gut und akurat gemacht werden, will man den synthetischen Sound übertreffen. Bei den vorgestellten Methoden und Algos (auch den links hier) wird viel zu viel weggelassen! Ich will den thread nicht kapern, das es sich hier ja um Musik aus DSPs dreht, möchte aber eineseinwerfen: Ich sehe, dass die Problematik einfach grundsätzlich an der Rechenzeit liegt - mit DSPs ist da irgendwann einfach Schluss. Meine höchsteigene Schlussfolgerung aus Messungen und Beobachtungen lautet: Entweder synthetisch Superponieren oder wenn, dann eine sehr gute Realzeit-Schwingungsemulation mit möglichst viel Oszillatoren unter möglichst realer Abbildung der Objekteigenschaften und - geometrien. Dies geht aber nur mit ordentlich viel Rechenpower. Ob das mit durchschnittlichen DSPs zu machen ist, wage ich mal, in Frage zu stellen. Die dafür vielen parallelen Verarbeitungsschritte eignen sich gfs besser für einen FPGA.
Juergen S. schrieb: > Bei den vorgestellten Methoden und Algos (auch den links hier) wird viel > > zu viel weggelassen! Was z.B.?
>Will man diese ganzen Effekte in Echtzeit durch Gleichungen abbilden,
Die Frage wäre, ob man alles wirklich simulieren sollte. Vielleicht
lassen sich ja auch so Algorithmen finden, die dem Gitarrenklang sehr
ähnlich sind.
Der Karplus-Strong Algorithmus stammt aus den 80er Jahren als DSPs nicht
verbreitet waren und lässt sich auf den 8 Bit Prozessoren von damals
rechnen. Hätte man sich da schon auf die genaue Simulation beschränkt,
wäre man niemals zum Ergebnis gekommen. Ich wage auch zu bezweifeln,
dass man mit der heute bekannten Wave-Guide-Theorie einen so einfachen
Algorithmus wie Karplus-Strong gekommen wäre.
Es ist ein wenig wie mit der DDS: nur das weglassen von überflüssigen
Genauigkeiten führt zu einem praktikablen Ergebnis.
D.h.: die Kunst liegt im weglassen und der geschickten Vereinfachung.
Ich habe noch etwas im Internet gefunden und diese Sounds finde ich wirklich gut. So etwas würde ich auch gerne erreichen. Was meint ihr dazu? http://www.acoustics.hut.fi/publications/papers/cmj-electric-guitar-synthesis/ Ich denke auch man muss ein paar Sachen weglassen, aber es sollte sich immer noch gut anhören. So wie es chris beschrieben hat. @Matthias Ja es soll eine Nylongitarre sein. So wie es in dem Paper beschrieben wurde. Ich werde die Parameter noch anpassen müssen, damit es einer E-Gitarre näher kommt. Ich denke der dumpfe Sound kommt davon, dass der Korpus der Gitarre und der Tonabnehmer noch nicht mitberechnet werden. Die DGLs beschreiben ja auch nur die Schwingung der Saite. Für den Anfang finde ich es schon um einiges besser als Karplus Strong. Das mit dem Knackser am Anfang konnte ich schon beheben. Es lag nur daran, dass man den Wert 0 der Gleichungen nicht nehmen darf, da er 1,0 ist. (Clipping) Ich denke man wird es auch nicht ganz perfekt hinbekommen den Klang einer Gitarre nachzubilden, da es doch schon sehr komplexe Vorgänge sind und sich die Physiker wohl auch noch nicht ganz einig sind :-) @Juergen S. Ich denke auch so langsam, dass du recht hast mit den ganzen Resonanzen und dem Korpus. Sa muss ich noch etwas Arbeit reinstecken und sicher auch manche Sachen vereinfachen, damit es noch echtzeitfähig bleibt. Es ging hier eigentlich nicht um das kapern des Threads, sondern ob es überhaupt möglich ist so etwas zu realisieren! Ja es stimmt es werden einige Vereinfachungen gemacht, wie z.B. dass die Saite starr an den Enden verbunden ist, aber das ist mir auch jetzt erst klar geworden. Aber die Interaktion zwischen den einzelnen Saiten werde ich wohl weglassen müssen, da es dann richtig kompliziert wird. Leider müsste man den Thread auch umbennen, da ich jetzt keinen DSP mehr verwenden will sondern einen normalen Computer mit einer NVidia Grafikkarte. (Ich will CUDA für die Klangerzeugung verwenden) Aber ich finde es gut, dass man hier viele Anregungen bekommt und doch noch weiter diskutiert wird. Vielleicht kommt ja am Ende doch noch ein gutes Ergebnis raus.
Ich antworte mal auf beide Punkte gleichzeitig: chris schrieb: > Die Frage wäre, ob man alles wirklich simulieren sollte. Vielleicht > lassen sich ja auch so Algorithmen finden, die dem Gitarrenklang sehr > ähnlich sind. Matthias schrieb: > Juergen Schuhmacher schrieb: >> Bei den vorgestellten Methoden und Algos (auch den links hier) >> wird viel zu viel weggelassen! > Was z.B.? Vor allen Dingen muss das gesamte Instrument betrachtet und verstanden werden und das scheint mir z.B. in der o.g. Arbeit nicht der Fall zu sein. Der Satz hier sagt eigentlich alles: > No analysis of recorded sounds and no fitting of parameters > has been required. Tja, "analysis of recorded sounds" stünde aber IMO am Anfang des gesamten Prozesses, da man nur so erkennen kann, welche Aspekte den eigentlichen Klang eines Instumentes ausmachen. Das sind nämlich bei unterschiedlichen Instrumenten durchaus nicht immer Dieselben! Bei Gitarren, Harfen und Flügeln z.B. ist es die bereits erwähnte Saiteninteraktion, die einen wesentlichen Klangbeitrag liefert. Diese Instrumente klängen nämlich von den Saiten her ansonsten alle ziemlich gleich, wenn man nur DGLs lösen müsste und es sind mithin genau die Modulationen der Wellen, die den jeweils eigentümlichen Klang ausmachen. Das ist natürlich Wissen, dass man erst mal haben muss. Wenn das nicht drin ist, hat man schon verloren! Daher sind genaue Messungen und Einstellungen der Parameter für das komplexe Dämpfungsverhalten von Materialien nämlich sehr wohl nötig. Gerade Holz ist nämlich leicht "nichtlinear" und mit klassischen DGLs kaum sinnvoll zu beschreiben. Da braucht es zur Emulation des Klankörpers eine Art "Multibandkompressor mit EQ". Das sehe ich nirgends in dem Dokument beschrieben. Auch in einem DOk aus Östereich für die E-Gitarren-Emulation, das google ausspuckt, gibt es keine brauchbare oder halbwegs realitätsnahe Berücksichtigung der Holzeigenschaften. Tatsächlich bestehen aber die allermeisten Gitarren a) aus sehr viel und b) auch klanglich aktivem Holz! Selbst die E-Gitarren-Berechnung funktioniert daher nicht über eine reine Saitenemulation. Das lässt sich leicht durch eine Betrachtung der Materialeigenschaften im Bezug auf Feder-Masse-Dämpfung belegen - zudem versichern mir Gitarristen immer wieder glaubhaft, dass sie den Unterschied von gut zu schlecht gepflegten E-Gitarren hören, wenn das Holz innen eine unsichtbare Macke abbekommen hat, nachdem wieder mal eine unsanft in die Ecke geknallt wurde. Das Holz ist aber in allem mir bekannten Veröffentlichungen zu dem Thema entweder falsch, unzureichend oder garnicht vernüftig modelliert. Von daher heben weder der viel gerühmte KS-Algorithmus noch die anderen Publikationen meine Augenlieder wesentlich an ;-)
Wisler Electronics schrieb: > Ich denke auch so langsam, dass du recht hast mit den ganzen Resonanzen > und dem Korpus. Die Holzthematik und die Art der Instrumentenstruktur sind doch genau der Grund, warum sich alle auf die E-Gitarren stürzen und von realen mal lieber die Finger lassen: 1. Scheinbar wenig Klangeinfluss durch das Holz 2. eine punktförmige Aufnahme des Klanges, sonst wird es arg kompliziert 3. elektronische Klangverzerrung die sich perfekt nachahmen lässt, weil heutige Guit-Effekte oft genug mit DSPs realisiert werden. 80% des Gesamtklangs sind damit quantitativ nachstellbar, aber es sind genau die restlichen 20%, die u.a. von der 3D-Wirkung des realen Gitarrenkorpus kommen und das Leben ausmacht, in dem sich eine echte Gitarre von einer Synthesizergitarre unterscheit.
Juergen Schuhmacher schrieb: > zudem versichern mir Gitarristen immer > wieder glaubhaft, dass sie den Unterschied von gut zu schlecht > gepflegten E-Gitarren hören In dem Zusammenhang sei vielleicht eingestreut, dass es eine Reihe von Versuchen mit Glasfaser- und Kohlefaserinstrumenten gibt (nicht nur Gitarren) und die oftmals nicht das gewünschte Ergebnis bringen, weil sie zu hart sind, während Holz weich ist und viel schluckt.
Musiker schrieb: > Juergen Schuhmacher schrieb: >> zudem versichern mir Gitarristen immer >> wieder glaubhaft, dass sie den Unterschied von gut zu schlecht >> gepflegten E-Gitarren hören > In dem Zusammenhang sei vielleicht eingestreut, dass es eine Reihe von > Versuchen mit Glasfaser- und Kohlefaserinstrumenten gibt (nicht nur > Gitarren) und die oftmals nicht das gewünschte Ergebnis bringen, weil > sie zu hart sind, während Holz weich ist und viel schluckt. Solche Effekte müssten sich mit einem guten DSP aber durchaus simulieren lassen, finde ich.
mike schrieb: > Musiker schrieb: >> Juergen Schuhmacher schrieb: >>> zudem versichern mir Gitarristen immer >>> wieder glaubhaft, dass sie den Unterschied von gut zu schlecht >>> gepflegten E-Gitarren hören Das ist auch kein Märchen, sondern Realität. >> In dem Zusammenhang sei vielleicht eingestreut, dass es eine Reihe von >> Versuchen mit Glasfaser- und Kohlefaserinstrumenten gibt (nicht nur >> Gitarren) und die oftmals nicht das gewünschte Ergebnis bringen, weil >> sie zu hart sind, während Holz weich ist und viel schluckt. > Solche Effekte müssten sich mit einem guten DSP aber durchaus simulieren > lassen, finde ich. Na, ob man da jede Kleinigkeit simulieren kann... ?
Ist ja eine richtig wissenschaftliche Diskussion hier. Ich habe mir auch schon desöfteren überlegt, ob und wie man Gitarren mathematisch nachbilden kann, zumal ich leidenschaftlicher Gitarrenspieler bin (allerdings akustisch, nicht elektrisch). Meine Überlegungen dazu führten mich in eine ähnliche Richung wie in einigen Beiträgen angeklungen ist. Ich glaube nicht, dass man (Martin Kluht) >jede Kleinigkeit simulieren kann Da ist zuviel Zufall und Chaos im Spiel. Meine Überlegung geht daher auch in die Richtung zu hinterfragen, ob man alles simulieren / berechnen muss oder ob nicht durch akustische Randbedinungen viele Tonanteile existieren, die so gering sind, dass sie unhörbar sind und weggelassen werden können. Richtig ist zweiffelsfrei (Jürgen Schumacher) > dass es das Holz ist, in dem sich eine echte > Gitarre von einer Synthesizergitarre unterscheidet Wie liesse sich das Holz simulieren? Der Gitarrenkörper ist etwas dreidimensionales, wie schon angedeutet wurde und beeinflusst die Saiten stark und hat so eine Wirkung, wobei er auch selber in die Luft klingt. Das geht so weit, dass man den Klang des Körpers dämpfen kann, wenn man die Gitarre mehr klemmt, die Hand auflegt und Vieles mehr. Was wäre mit einem 3D-FEM-Modell? In der Mechanik werden solche Systeme verwendet und beschrieben, um sie zu optimieren, z.B. in der Autoindustrie. Reicht die Auflösung (ich meine die Punktdichte) um zu akustisch richtigen Ergebnissen zu gelangen?
Andi F. schrieb: > Wie liesse sich das Holz simulieren? Der Gitarrenkörper ist etwas > dreidimensionales, wie schon angedeutet Es gehr nur mit Vereinfachungen und einem Model, das an mehreren Stellen mit entsprechen eingestellen Dämpfungen und Resonanzen arbeitet. Diese müssen ausgemessen und passend durch Schwingkreise emuliert werden. > Was wäre mit einem 3D-FEM-Modell? In der Mechanik werden > solche Systeme verwendet Das wäre das Ideal, geht aber nicht in Echtzeit. Eine Unterteilung in kleine Fragmente wäre nötig um reale Verhältnisse zu beschreiben, aber die Menge an Elementen ist einfach zu gross. Auch ein FPGA kann nicht beliebig genau und schnell genug "analog" rechnen. Es müssen ja Grenzfrequenzen bis 20kHz und mehr berechnet werden, der Genauigkeit wegen mit Überabtastung und dann schafft man nur wenige Punkte in Echtzeit, braucht also Fläche. Ich habe es mal für eine Gitarrenseite beschrieben und in der Tat kann man eine Stelle anzupfen und die Schwingun stellt sich passend ein, samt transientem Verlauf der Oberwellen, aber wenn man die Saite nicht "einspannt" sondern in einem selbst noch schwingenden System aufhängt, wird das schnell unübersichtlich :-) Ich beschreibe Saiten, speziell in der Dreiklanggruppe eines Flügelns daher mit einem anderen Ansatz.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.