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
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
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
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
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
>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.
Vllt bei unterschiedlichen Geschwindigkeiten bei der Realen Quelle aufnehmen und die Verschiedenen samples zusammen mixen je nach geschwindigkeit des models.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.