Hallo,
ich möchte mein Klavier elektronisch nachbilden und suche Tipps und
Tricks dies zu tun.
Ich habe jeden einzelnen Ton des Klaviers jetzt aufgenommen. Jetzt suche
ich eine Hardware, um diese (erst einmal rohen und unbearbeiteten)
Samples wiedergeben zu können.
Bevorzugt soll das ganze später auf einem eingebetteten System laufen.
Die Töne werden über midi angesteuert.
- Wie, mit welcher Software kann ich die Samples nachbearbeiten
- Wie kann ich auf einem Mikrocontroller auf Seite der Software mehrere
Samples simultan abspielen?
Der Beatssqueezer basiert auf einem STM32F407 - damit, also mit dem
DiscoveryBoard habe ich auch schon rumgespielt, allerdings kann ich nur
einfache Sinus Töne wiedergeben.
Gibt es zum Beatsqueezer den Source Code?
Die Schwierigkeit an einem solchen Unterfangen ist halt, dass das
Klavier mit verschiedenen Anschlagstärken aufgenommen werden sollte,
alles andere klingt nicht wirklich brauchbar.
Um die Anschlagstärke präzise wiederholen zu können, benutzen die Profis
einen Roboter. Zusätzlich werden Töne aufgenommen, die von der Mechanik
des Instrumentes kommen.
Danach erfolgt eine extrem (zeit-)aufwändige Nachbearbeitung der
Samples, damit das Instrument wirklich natürlich und ausgewogen klingt.
Da kommen dann schnell mal 17GB Sound-Daten zusammen - für einen
Mikrocontroller dann doch etwas viel.
Wo die Latte hängt kannst du ja mal hier nachgucken:
Klavier von Alicia Keys, für 99 EUR zu haben (als Software-Sampler)
https://www.native-instruments.com/de/products/komplete/keys/alicias-keys/
Danke für deine Antwort Joe F.
Es ist mir klar, dass mein aktuelles Sytem sche**ße klingt.
Es geht mir nicht um die Klangqualität, sondern um die elektronische
Umsetzung und die Software Seite. Wie kann ich so etwas
elektro-informationstechnisch umsetzten?
Naja, also du brauchst halt ein System mit großem, schnellen Speicher.
Angenommen du hast 88 Tasten mit 44.1 KHz/16-bit (CD-Qualität)
aufgenommen, und schneidest die Samples bereits nach 5 Sekunden ab, dann
kommst du schon auf 88 Tasten x 5 Sekunden x 44100 x 2 Bytes = 37 MB
Speicherbedarf für die Samples.
Das sollte dann schon RAM sein, du möchtest ja auch mal 10 Tasten
gleichzeitig anschlagen können.
Das "Abspielen" selbst ist dann nicht so schwierig. Im ersten Schritt
müsstest du erstmal den Midi-Datenstrom parsen (welche Taste wurde
angeschlagen/losgelassen).
Dementsprechend wird dann eben das entsprechende Sample aus dem RAM auf
den DAC gespielt. Bei Polyphonie müssen dann u.U. mehrere Samples
erstmal in Echtzeit gemischt werden, und das Summensignal geht dann zum
DAC.
Wie bewerkstelle ich das Mischen in der Praxis, wenn ich mehrere Tasten
gleichzeitig anschlage, z.B. bei einem Akkord?
Wie gesagt: Einzelne Sinus-Töne kann ich bereits abspielen. Wie schaffe
ich es nun einen Akkord zu spielen?
Es gibt sicher eine Lösung, ohne dafür gleich auf Desktop-PC-Hardware
zurückzugreifen ;)
Ich denke, das hier könnte was für dich sein: http://www.samplerbox.org/
Das ganze basiert auf dem Raspberry Pi, der kostengünstig zu haben ist.
Deine Samples kannst du vermutlich gleich so verwenden, wie du sie
aufgenommen hast.
randalf schrieb:> Wie bewerkstelle ich das Mischen in der Praxis, wenn ich mehrere Tasten> gleichzeitig anschlage, z.B. bei einem Akkord?
Die parallel abzuspielenden Samples werden einfach addiert.
Erfordert aber "Headroom" (Eingangssamples dürfen nicht voll
ausgesteuert sein, damit beim Summieren kein Überlauf passiert).
Mir scheint aber, dir fehlen generell die Grundlagen digitaler
Audioverarbeitung, so dass ich mir nicht sicher bin, ob du dir da nicht
ein bisschen viel vorgenommen hast...
Du hast recht, mir fehlen die Grundlagen in der Audioverarbeitung. Da
ich hobbymusiker bin möchte ich mich hier aber einarbeiten.
Jemand Tipps für Literatur/wisenschaftliche Artikel oder auch nur
Keywords, nach denen Ich suchen muss.
Ich bin fertig mit dem Bachelor in Elektrotechnik. Mit Audio hatte ich
im Studium nichts zu tun. Digitale Signalverarbeitung schon, da suche
ich jetzt Zusammenhänge. :D
Joe F. schrieb:> Mir scheint aber, dir fehlen generell die Grundlagen digitaler> Audioverarbeitung,
Das glaube ich auch. Zwei Samples zusammenmischen ist offenbar schon
zuviel.
Ich glaube auch nicht, dass es reicht bei einem Akkorde einfach drei
Samples abzuspielen und zu mischen.
Wie wird bei Sampler Synthesizern denn jetzt gemischt?
Angenommen ich habe 100 einzelne Oszillatoren. Wie bringe ich diese mit
geringem Aufwand zusammen?
Ja Summieren, allerdings braucht es dazu eine Vorstellung was wohin
summiert werden soll. Praktisch hat man ein 3D-Modell von Amplituden,
das in den Raum abgebildet wird. In der vereinfachten Elektronik ein
paar Klangkanäle die auf eine Stereobasis müssen. Da gibt es etliche
Optionen.
Einfaches Zusammenmischen geht Kanal für Kanal für jedes Sample.
Wir waren aber eigentlich beim Klavier und dem Mischen von Einzeltönen:
Die Sache ist deshalb nicht stimmig, weil es eine Interaktion des
Klavierbodens und anderer Resonanzkörper mit den Saiten gibt. Die
Erklärung ist etwas kompliziert, aber ich probiere es mal:
Schlägt man eine Saite an, dann setzt diese den Rest des Klaviers über
deren Aufhängung in Bewegung und die Nachbarsaiten klingen in gewissem
Umfang mit. Insbesondere die zweite und dritte angeschlagene Saite eines
Akkordes schwingen mit, bzw würden mitschwingen, was sie aber bei
Einzeltonaufnahme nicht tun, bzw in anderer Weise tun. Mischt man nun
zwei solcher Nachbarseitenschwingungen zusammen, könnte man glauben, das
Superpositionsprinzip würde für richtiges Verhalten sorgen. Das ist aber
nicht der Fall, weil die Störungen der Rückwirkungen der Mechanik andere
sind und zu anderen Modulationen führen. Es hört sich zwar auch nach
Klavier an, klingt aber anders.
Wesentlich dafür sind neben den nichtlinearen Auswirkungen der
Spannungen des Klavierkörpers auf die einseitig durchhängenden Saiten
(besonders beim Sostenutospiel) und dem generell nichtlinearen
Schwingungsverhalten von Saiten (das ist kein Sinus) auch die
Partialschwingungen des Resonanzbodens:
Jenachdem wie sich diese Schwingungen dreidimensional lokal addieren,
wirken sie mit anderer Phase und Amplitude auf die Saitenaufhängung. Bei
Minimalphase am Aufhängungsort wirken z.B. bestimmte Frequenzen gar
nicht und bei Maximalphase andere entsprechend mehr. Diese Effekte
addieren sich und schieben den Klang nach einer Einschwingphase in eine
bestimmte Richtung.
Entscheidend ist, dass der gehörte Klavierklang insgesamt betachtet eben
überwiegend nicht der Saitenklang, sondern der Bodenklang und der
Gesamtkörperklang ist. Bei Gitarren klappt das z.B. wesentlich besser
mit der Überlagerung. Die kriegt man durch simple Wellenaddition genauer
abgebildet.
Pauschal betrachtet kann man aussagen, dass die Summe der sich bildenen
Modulationen und Effekte beim händischen Mischen größer ausfallen, was
dazu führt, dass das Samplerklavier bei mehr, als 3-4 Tönen "fetter"
klingt, als das Echte, wenn man den Akkord aufnehmen würde. Das kann man
praktisch durch Aufnahmen zeigen und auch in Simulationen kommt das
raus.
Deshalb verwendet man heute entweder Nachbildungen von Klavieren durch
Körper- und Saitenemulationen oder man sampelt ganze Akkorde mit
unterschiedlichen Spieltechniken. Da gibt es einfach zu viele Parameter
und zu viele komplizierte Verkettungen von Effekten: Hart angeschlagene
Saiten haben mehr Oberwellenanteil, der mehr Energie in das System
bringt, welche sich atonal, also mit anderen Frequenzen als der
Grundwelle im System abbildet. Ein Hammer, der auf eine ruhige Saite
trifft, löst einen anderen HF-Anteil aus, als einer, der auf eine
bewegte Saite trifft. Ein anders befilzter Hammer hat weniger Oberwellen
und... und.. und...
Rufus ?. F. schrieb:> Nur am Rande bemerkt: Mittlerweile kann man Klaviere ausreichend gut> synthetisieren,
Nun ja, ...
Es bleibt eine Aneinanderreihung von Konservenschnipseln, denen der
individuelle Ausdruck fehlt. Das Ganze, was dabei rauskommt ist mehr
eine Collage, denn organisches Spiel.
Rufus Τ. F. schrieb:> https://www.pianoteq.com/
Nice!
Kommt schon verdammt nah ran. Bei den oberen Tasten der Pianos fehlt mir
noch ein wenig die Schärfe bei härteren Anschlägen, das sind aber
Details die bei Nicht-Solo-Aufnahmen unhörbar sind.
Das Fender Rhodes MK2 ist auch wirklich schön.
Testo schrieb:> Wie wird bei Sampler Synthesizern denn jetzt gemischt?> Angenommen ich habe 100 einzelne Oszillatoren. Wie bringe ich diese mit> geringem Aufwand zusammen?
Sampler != Klangerzeugung durch Oszillatoren.
Mischen = Addition von Samples ist ein recht geringer Aufwand im
Vergleich zu anderen Operationen (Filter etc.), die Multiplikationen
benötigen.
Bego schrieb:> Ich glaube auch nicht, dass es reicht bei einem Akkorde einfach drei> Samples abzuspielen und zu mischen.
Eigentlich schon... ;-)
Wenn du gleichzeitig drei Saiten auf dem Klavier anschlägst, passiert ja
im in erster Linie auch genau dies (mal von den vielen Neben-Effekten
abgesehen, die Jürgen S. beschrieben hat und die in der Tat wesentlich
zum Hörempfinden beitragen).
randalf schrieb:> Wie gesagt: Einzelne Sinus-Töne kann ich bereits abspielen. Wie schaffe> ich es nun einen Akkord zu spielen?
Probier's aus.
Im Augenblick hast du eine Funktion f(t), die deinen Sinuston enthält.
Definiere dir drei Sinusfunktionen sin_c(t), sin_e(t) und sin_g(t) für
die Töne C, E und G.
Zum Zeitpunkt "ich brauch ein neues Sample" rechnest du jetzt nicht mehr
y=f(t) (also deinen Sinus) aus, sondern
> y = sin_c(t)/3 + sin_e(t)/3 + sin_g(t)/3
Das sollte ein (ziemlich naiv) geschmischter C-Dur-Akkord aus Sinussen
sein. Genau so kannst du auch mit abgetasteten Daten vorgehen.
S. R. schrieb:> Im Augenblick hast du eine Funktion f(t), die deinen Sinuston enthält.> Definiere dir drei Sinusfunktionen sin_c(t), sin_e(t) und sin_g(t) für> die Töne C, E und G.>> Zum Zeitpunkt "ich brauch ein neues Sample" rechnest du jetzt nicht mehr> y=f(t) (also deinen Sinus) aus, sondern>> y = sin_c(t)/3 + sin_e(t)/3 + sin_g(t)/3
Und wenn das dann klappt ersetzt du sin_x(t) durch sample_x(t), wobei
das x für die jeweilige Note steht. Viel mehr Magie ist da nicht
dahinter.
Die programmtechnischen Herausforderungen fangen dann aber erst an, denn
in der Regel arbeitet man Sample-Block basiert, um z.B.
DMA-Möglichkeiten des Prozessors auszunutzen, damit man sich nicht darum
kümmern muss jedes Ausgangs-Sample einzeln zum richtigen Zeitpunkt zum
DAC zu schieben.
>y = sin_c(t)/3 + sin_e(t)/3 + sin_g(t)/3
Sagen wir mal so:
y = ( sin(t) + sin(5t/4) + sin_g(3t/2) ) / 3
Bei der Amplitude muss man im allgemeinen Fall mit etwas höherer
Verstärkung als 1/n agieren, um noch auf 0dB zu kommen.
Hm. Also Jürgens Informationen halte ich für wertvoll und wichtig. Ohne
Zweifel.
Aber für ein Anfängerprojekt, an das man erst einmal keine solch hohen
Ansprüche stellte, würde ich einfach mal versuchen, die verschiedenen
Samples, die gleichzeitig abgespielt werden sollen, zu summieren und die
Summe entsprechend der Anzahl der zu summierenden Samples herunter zu
dämpfen. Also etwa die Summe von drei Einzeltönen wieder durch Drei zu
teilen.
Vermutlich drehen sich da einem Musiker und Instrumentenbauer die Ohren
um, aber ich würde das mal versuchen und denke, es hört sich vermutlich
gar nicht mal soooo übel an. Für "Alle meine Entchen" sollte es reichen.
Jürgen S. schrieb:> Sagen wir mal so:
Dabei musst du aber aufpassen, dass der Klammerausdruck nicht überläuft
oder sättigt. Mein Beispiel ist halt das naivste von allen, was immer
funktionieren sollte.
Für gute Ergebnisse hast du schon viele wichtige und richtige Hinweise
gegeben. Ich verfolge die immer mit Interesse, auch wenn sie weitab
meiner Fähigkeiten liegen. :-)
Werner S. schrieb:> Warum klingt Klavier , Flügel, Bass und Schlagzeug so wunderbar> ausgezeichnet aber Trompete echt scheiße im Midi ?
Weil man Instrumente grob in zwei Kategorien einteilen kann. Systeme mit
Impulserregung und Systeme mit kontinuierlicher Erregung. Bei der
Impulserregung wird einmalig Energie in das System gegeben, die sich
dann beim Ausklingen verliert. Das ist mit Samples recht einfach
nachzubilden. Die Klangbeeinflussung findet praktisch nur einmalig zu
Beginn eines Tones statt, danach klingt der Ton einfach aus.
Instrumente, wie Bläser oder Streicher sind Systeme, die kontinuierlich
erregt werden. Also hat man während der gesamten Dauer des Tons Einfluss
auf den Klang. Das ist mit einem statischen Sample natürlich nicht
flexibel nachzubilden. Hier kann man halt nur unterschiedliche
Phrasierungen aufnehmen, oder man geht greift mit Lautstärke- und
Filtermodulation ein um den Klang zu beeinflussen; oder geht gar
komplexe Wege mit Überblendungen zwischen verschieden phrasierten
Aufnahmen.
Theor schrieb:> ...und die Summe entsprechend der Anzahl der zu summierenden Samples> herunter zu dämpfen
Damit sind aber der Einzelton und der Akkord gleich laut (=0dBFS), das
stimmt mit der Wirklichkeit nicht überein. Außerdem spielst Du ja nicht
immer fortissimo.
Martin H. schrieb:> ußerdem spielst Du ja nicht> immer fortissimo.
Trotzdem muss man damit rechnen, und der nötige Headroom ergibt sich aus
der maximal möglichen Anzahl von gleichzeitig abgespielbaren Samples
(=voices).
Bei z.B. max. 12 voices kann sich beim Aufsummieren der 12 Sample-Werte
im Extremfall der 12-fache Wert eines Einzelsamples ergeben, man braucht
also 4 Bit Headroom (16-facher Pegel, reicht also für bis zu 16 voices),
damit der Summen-Bus nicht überläuft.
Das ist schon klar, ich bezog mich auf was anderes. Weiter oben klang es
so, dass ein Sample unverändert wiedergegeben wird, zwei gleichzeitige
Samples werden halbiert, drei werden gedrittelt, ... Wie Du schreibst,
darf bei maximal möglicher Samplezahl in voller Lautstärke 0dBFS nicht
überschritten werden, es sei denn, Du möchtest sowas wie ein klanglich
erwünschtes (weiches) Clipping hinten dran hängen oder das ganze über
ein Lautstärkepedal im Zaum halten. Bei additiver Synthese kann es auch
bei realen Instrumenten zur Übersteuerung kommen, eine Hammond schreit
halt bei 88 8888 888.
Hat jemand Literatur zum Thema Digitale Audiosignalverarbeitung?
Im Netz und in der Unibibliothek werde ich nicht fündig.
Zweite Frage: Wie muss den das Summensignal addiert werden, sodass kein
Überlauf entsteht?
Chrissi schrieb:> Hat jemand Literatur zum Thema Digitale Audiosignalverarbeitung?> Im Netz und in der Unibibliothek werde ich nicht fündig.>
Da gibt es aber unzähliges an Leteratur, sowohl allgemeine digitale SV
als auch Konkretes zum Audio. Dabei ist vor allem tontechnisches Wissen
von Relevanz, wie z.B. bestimmte Frequenzen wirken, wie man Stereo
herstellt und behandelt und mit Pegeln umgeht.
> Zweite Frage: Wie muss den das Summensignal addiert werden, sodass kein> Überlauf entsteht?
Das ist aber jetzt auch schon x-mal geklärt worden.
Völlig unkorrellierte Signale addieren zum theoretischen Pegel, der sich
aus der mathematischen Summe ergibt. Das gilt für jede Frequenz.
Solange man keine Annahmen über die Bandkonstellation machen kann, ist
es somit nicht möglich, die maximale Summe zu ermitteln.
Praktisch muss man mit seinen Daten und Pfaden dafür sorgen, dass keine
Überläufe stattfinden, oder diese angezeigt werden und der Benutzer an
zentralen Stellen die Möglichkeit der Pegelstellung hat. Ansonsten kann
man das Signal selber messen, bewerten und halbautomatisch Pegeln.
-> AGC: automatic gain control