Forum: Mikrocontroller und Digitale Elektronik Modellbau Soundmodul mit STM32F4


von Philipp M. (lord-maricek)


Lesenswert?

Hi,

ich möchte in unser aktuelles Projekt mit einem Stm32F41 ein Soundmodul 
für mein Modellboot mit einprogrammieren. Ich weiß nur nochnicht, wie 
ich das anstellen könnte. Soundausgabe mit I2S und einem Audio Codec 
wäre nicht das Problem, sondern, das eigentlich Problem ist, dass ich 
mehrere Tonspuren habe, die mit unterschiedlichen Geschwindigkeiten 
ausgegeben werden.
z.B. das Motorgeräusch und das Horn. Das Motorgeräusch soll je nach 
Geschwindigkeit schneller oder langsamer abgespielt werden, das Horn 
soll aber immer gleich bleiben.

Wie kann ich sowas programmieren bzw. welche Hardware brauche ich dafür?
Oder sollte ich einfach einen Audio Codec mit mehreren ADC's nehmen? 
Dann würde ich über einen Timer die varibale Tonspur über einen DAC und 
die constanten Tonspuren über den 2. DAC abspielen. Oder gibt es da auch 
eine Möglichkeit, das ganze über den I2S zu machen?

Hoffe jemand kann mir helfen,

MfG
Philipp

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

Du brauchst das STM32F4 Discovery, hat alles drauf was du brauchst. 
Außer n Lautsprecher. Was das Mixen angeht: Du decodierst 2 3 Mp3s hast 
dann die Samplebuffer von den Dateien und muss diese jetzt hinrechnen.

Ich würde den I2S auf 44,1kHz einstellen und laufen lassen mit 2 Puffern 
dahinter die du immer wechselst. Den Buffer den du nicht abspielst 
kannste füllen.

Dazu musst du die sampleraten der verschiedenen Töne auf 48kHz anpassen.
Da würde ich mal n Sound DSP spezifragen wie man das genau macht.

fürs erste würde ich sagen, wenn der I2S auf 44,1kHz läuft brauchste 
auch Mp3s mit der sample rate. Wenn du nur 3 Töne gleichzeitig mit der 
gleichen Frequenz spielen willst, machste den Mittelwert der 3 samples.
Wenn ein Ton davon schneller laufen soll als der andere lässt du immer 
wieder samples von dem aus. Also bei 10% schneller überspringst du jedes 
10. sample und nimmst das nächste für den mittel wert mit den anderen 
Samples.

Die Sound Quali von dem ganzen ist zwar bestimmt nicht gut wenn das so 
gemixt wird aber es ist n Anfang.

Spiel doch erstmal 1 Ton mit dem F4 ab.

MfG

Tec

von Philipp M. (lord-maricek)


Lesenswert?

Hi,

Discovery ist vorhanden, werde damit maln bisschen rumprobieren.
Ich wollte allerdings alle Soundfiles einheitlich in Raw konvertieren 
und auf SD/Flash speichern und dann einfach über die Adresse mit dem DMA 
in den I2S schieben.

Wie du das mit den 2 Puffern meinst, versteh ich noch nicht so ganz. 
Wird dann immer ein jeweils ein Sample z.B. vom Motor und Horn 
nacheinander gespielt?

MfG
Philipp

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

sagen wir du hast vom Motor 1024 Samples und vom horn 1024 Samples.
Damit du beide gleichzeitig spielst musst du beide Wellen addieren. Also 
immer das Sample i vom Motor plus Sample i vom Horn. Gegebenen falls 
musst du die level der beiden anpassen, also z.b. nur 0.75 vom Motor 
(75% lautstärke) und 0.5 vom horn (50% lautstärke). Das ist das 
einfachste an Ton mixen was du machen kannst.

Und falls du die 2 Puffer meintest. Damit meine ich das du im Transfer 
Complete Interrupt zwischen 2 Arrays wechselst, die du auf den I2S 
jagst.
Oder du machst n doppelt so großen Buffer und nimmst Transferhalf 
Complete
und lässt den dam zyklisch laufen.

Nichts destotrotz musst du durch addieren erstmal das gemixte sample 
berechnen.

MfG

Tec

von Philipp M. (lord-maricek)


Lesenswert?

Achso, ok. Jetzt hab ichs verstanden. Ich werde das ganze mal probieren. 
Ich werds erstmal so machen, dass ich je nach Geschwindigkeit immer 
Samples weggelassen werden, bzw. ich werde springen. Wenn das geht, 
werde ich noch das Horn mit draufaddieren.

Danke

MfG
Philipp

von holger (Gast)


Lesenswert?

>Das Motorgeräusch soll je nach
>Geschwindigkeit schneller oder langsamer abgespielt werden,

Nimm mal Audacity und geb da eine Aufnahme deines
Motorgeräusches ein. Dann kannst du es schneller
oder langsamer abspielen. Entscheide selbst ob sich
das dann noch echt anhört.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Vllt bei unterschiedlichen Geschwindigkeiten bei der Realen Quelle 
aufnehmen
und die Verschiedenen samples zusammen mixen je nach geschwindigkeit des 
models.

von Philipp M. (lord-maricek)


Lesenswert?

Audacity hab ich schon drauf. Die beste Quali muss es nicht werden. Ich 
werde das ganze in nächster Zeit mal ausprobieren.

MfG
Philipp

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.