Forum: Digitale Signalverarbeitung / DSP / Machine Learning mehrere Töne gleichzeitig wiedergeben


von Thimo (Gast)


Lesenswert?

Hallo,

ich möchte ein Klavier bauen, das wie folgt funzt:

Taste 1 drücken - Ton 1 wird abgespielt.
Taste 2 drücken - Ton 2 wird abgespielt.
Taste 1 und 2 gleichzeitig drücken - Ton 1 und 2 werden abgespielt.

Am besten der Ton ist kein Piepen, sondern klingt so, wie der richtige 
Sound eines Klavier. (Ton auf nehmen - wav - wiedergeben)
Ich habe ca 40 Tasten :-)
was ist die preiswerteste Lösung das zu realisieren?

Ich bin totaler Anfänger was Mikrocontroller angeht bzw. DSPs

Vielen Dank

Thimo

von Michael O. (mischu)


Lesenswert?

Wenn es nur um den Preis geht....
http://www.thomann.de/de/casio_sa_45.htm

Wenn nicht - kann was aufwendiger werden.

Mit Klavierton aufzeichnen und bei Tastendruck wiedergeben wird es nicht 
getan sein. Dein Sample hat nur eine endliche Länge. Wird die Taste sehr 
lange gehalten, musst Du das sample natlos wiederholen - ohne Klicken 
oder andere Artefakte.

Die Wiedergabe aber perfekt wie ein Piano klingen lassen, das bekommen 
teilweise nicht mal etablierte Firmen hin - wie soll das dem Hobbyisten 
mit einem Bastelprojekt gelingen??

Normalerweise hätte ich dir zu einem ATMEGA geraten. Allerdings 
benötigst Du relativ viel Speicher für die Klänge - die werden 
vermutlich nicht mehr in den internen Flash passen. Mehrere Töne mischen 
bekommt man auch ohne DSP hin.
Für einen ordenlichen Klang benötigst Du aber eine vernünftige 
Abtastrate (Richtung 32...48kHz), mehrere Tasten heisst - Berechnung für 
mehrere Kanäle durchführen. Der Haken fängt mit einer Anschlagdynamik 
an. Die muss sauber gemessen, ein Modell berechnet werden und mit dem 
Wavesample verknüpft werden. Sollen dann noch Oberwellen hinzu gefügt 
werden wird es anstrengend.

Eigentlich ein schönes Endlosprojekt um in die DSPtechnik einzusteigen 
:)

von mki (Gast)


Lesenswert?

Du kannst ja versuchen die Töne mathematisch zu beschreiben. Um bei 
deinem kleinen Beispiel zu bleiben etwa so:

Ton_1 = sin(omega_1*t)
Ton_2 = sin(omega_2*t)

Und beide zusammen:
Ton_3 = sin(omega_1*t)+sin(omega_2*t)

Das sind bei 40 Tönen zwar sehr viele Berechnungen aber du sparst die 
den Speicherplatz für deine wav Dateien.

von eProfi (Gast)


Lesenswert?

Ein solches Projekt kenne ich für Kirchen-Orgel-Simulation auf PC-Basis:
Hauptwerk - the world's most advanced virtual pipe organ.
http://www.hauptwerk.com/

Könnte -mit einigen Anpassungen- auch für Piano funktionieren.

Der Aufwand richtet sich danach, wie real es klingen soll.

wavetables wäre der erste Begriff zum Suchen.

von MaWin (Gast)


Lesenswert?

> was ist die preiswerteste Lösung das zu realisieren?

Ein (alter) PC.

Dir ist aber schon klar, daß das mit einem Klavier so viel Ähnlichkeit 
hat, wie eine Autohupe mit einer Trompete?

von Gerrit B. (gbuhe)


Lesenswert?

Hallo Thimo,

Du kannst in der Numerik bzw. digitalen Signalverarbeitung einfache 
saubere (Sinus-)Töne mit Hilfe von digitalen Oszillatoren erzeugen. Dazu 
sind pro Oszillator nur zwei Speicherstellen und wenige matehmatische 
Operationen pro Abtastwert aufzuwenden. Das sieht dann z.B. so aus:

Y(n) = SIN_OMEGA*dirac(n) + 2*COS_OMEGA*Y(n-1) - Y(n-2)

SIN_OMEGA und COS_OMEGA sind Konstanten. SIN_OMEGA*dirac(n) ist der 
Initialwert, der die Amplitude bestimmt.

SIN_OMEGA = sin(2*pi*fc/fs)

mit fc - gewollte Oszillatorfrequenz, fs - Abtastrate

COS_OMEGA bestimmt die Oszillatorfrequenz: COS_OMEGA = cos(2*pi*fc/fs)

Wenn Du beide Konstanten ausgerechnet hast und SIN_OMEGA in die 
Speicherstelle Y(n-1) schreibst, mußt Du nur für jeden Abtastwert des 
Oszillators folgendes rechnen:

Y(n) = 2COS_OMEGA*Y(n-1) - Y(n-2)

Es bleibt also nur eine Multiplikation und eine Subtraktion pro Sample 
zu rechnen und ein perfekter Sinus kommt heraus. Natürlich mußt Du bei 
jedem Durchlauf Y(n-1) in die Speicherstelle Y(n-2) und Y(n) nach Y(n-1) 
für den nächsten Durchlauf schieben.

Versuche es einfach mal in der numerischen Simulation aus 
(www.scilab.org, oder www.octave.org).
Da es sich um eine rückgekoppelte Struktur handelt (IIR), ist die 
Amplitude und Frequenz nicht ohne weiteres modulierbar. Das ganze System 
würde instabil werden.

Mit einem Klavierton hat das natürlich nichts zu tun, sondern mit ganz 
sauberen Sinustönen.

Viele Grüße!

Gerrit, DL9GFA

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.