mehrere Töne gleichzeitig wiedergeben

Gast #1425914
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
#1426050
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 
:)
Gast #1426115
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.
Gast #1426949
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.
#1431760
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren