Forum: Mikrocontroller und Digitale Elektronik Hardware zur Wiedergabe von Audio Samples


von randalf (Gast)


Lesenswert?

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?

von Joe F. (easylife)


Lesenswert?

randalf schrieb:
> - Wie, mit welcher Software kann ich die Samples nachbearbeiten

Audacity (beispielsweise)

> - Wie kann ich auf einem Mikrocontroller auf Seite der Software mehrere
> Samples simultan abspielen?

https://hackaday.io/project/8320-the-beatsqueezer-stm32-sampler
http://www.hypnotriod.org/beatsqueezer/

: Bearbeitet durch User
von Michael P. (mipo)


Lesenswert?

Such mal nach midi sampler

von randalf (Gast)


Lesenswert?

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?

von Joe F. (easylife)


Lesenswert?

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/

: Bearbeitet durch User
von randalf (Gast)


Lesenswert?

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?

von Joe F. (easylife)


Lesenswert?

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.

: Bearbeitet durch User
von randalf (Gast)


Lesenswert?

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 ;)

von Mick (Gast)


Lesenswert?

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.

von Joe F. (easylife)


Lesenswert?

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...

: Bearbeitet durch User
von randalf (Gast)


Lesenswert?

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

von Bego (Gast)


Lesenswert?

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.

von старший мудрый троль (Gast)


Lesenswert?

Mein Tip. Lass die Hardware weg, das gibt's ja alles schon. zB in Form 
deines Smartphones.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nur am Rande bemerkt: Mittlerweile kann man Klaviere ausreichend gut 
synthetisieren, so daß der Sample-Aufwand nicht mehr unbedingt nötig 
ist. Allerdings ist die dafür nötige Software nicht frei verfügbar, so 
daß man sie nicht auf einem selbstgestrickten Embedded-System laufen 
lassen kann, sondern es gibt sie nur für die üblichen Betriebssyteme:

https://www.pianoteq.com/

Hier ein willkürliches Klangbeispiel:

https://www.pianoteq.com/audio/grotrian/Bach%20-%20Fugue%20in%20F-sharp%20Major,%20WTC%20I%20-%20Yunling%20Zhang.mp3

von Testo (Gast)


Lesenswert?

Wie wird bei Sampler Synthesizern denn jetzt gemischt?
Angenommen ich habe 100 einzelne Oszillatoren. Wie bringe ich diese mit 
geringem Aufwand zusammen?

von старший мудрый троль (Gast)


Lesenswert?

Summieren. Punkt fuer Punkt

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von Joe F. (easylife)


Lesenswert?

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).

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

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.

von Joe F. (easylife)


Lesenswert?

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.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

>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.

von Theor (Gast)


Lesenswert?

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.

von S. R. (svenska)


Lesenswert?

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. :-)

von Werner S. (wernertrp)


Lesenswert?

Warum klingt Klavier , Flügel, Bass und Schlagzeug so wunderbar 
ausgezeichnet aber Trompete echt scheiße im Midi ?

von Toli B. (tolifox)


Lesenswert?

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.

von Martin H. (horo)


Lesenswert?

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.

von Joe F. (easylife)


Lesenswert?

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.

von Martin H. (horo)


Lesenswert?

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.

von Chrissi (Gast)


Lesenswert?

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?

von J. S. (engineer) Benutzerseite


Lesenswert?

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

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
Noch kein Account? Hier anmelden.