Hallo liebes Mikrocontroller Team! Ich bin Student an einer Uni und ich will als Übung für zuhause mithilfe eines SMT32 Programmes von einer Hardware eine Stimmaufnahme von mir verlangsamen und schneller machen! Also ich hab es bereits so weit geschafft, das ich die Stimme in das Programm bekomme und mit Audacity anhören kann! Nun ist die Frage, wie bekomm ich die Aufnahme langsamer? Ich wollte einfach die Ausgabe verlangsamen aber ich habe leider keine Ahnung wie bzw ow ich da anfangen soll! Also entweder ich seh es einfach nicht oder ich weiß auch nicht... Villeicht habt ihr eine idee oder seht wo man da was hinzufügen kann! Ich danke schön einmal im vorhinein! hier ist noch der code: /////////////////////////////////////////////////////////////// #include "stm32_init.h" void SPI2_IRQHandler() { int16_t left_out_sample = 0; int16_t right_out_sample = 0; int16_t left_in_sample = 0; int16_t right_in_sample = 0; GPIO_ToggleBits(GPIOD, GPIO_Pin_15); if (SPI_I2S_GetFlagStatus(I2Sx, I2S_FLAG_CHSIDE) == SET) { left_in_sample = SPI_I2S_ReceiveData(I2Sx); left_out_sample = left_in_sample; while (SPI_I2S_GetFlagStatus(I2Sxext, SPI_I2S_FLAG_TXE ) != SET){} SPI_I2S_SendData(I2Sxext, left_out_sample); } else { right_in_sample = SPI_I2S_ReceiveData(I2Sx); right_out_sample = right_in_sample; while (SPI_I2S_GetFlagStatus(I2Sxext, SPI_I2S_FLAG_TXE ) != SET){} SPI_I2S_SendData(I2Sxext, right_out_sample); } } int main(void) { stm32_wm_init(FS_48000_HZ, WM_DMIC_IN, IO_METHOD_INTR); while(1){} } PS: ich programmiere mit Keil uvision 5 Liebe grüße!
Wenn du nur die halbe und/oder doppelte Geschwindigkeit anpeilst, könntest du die Ausgabe mit halber/doppelter Samplerate machen.
Du kannst die Aufnahme mittels des DDS-Prinzips in fraktionalen Schritten verändern. Oder Du kannst die Frequenz mittels der Hilbert-Transformation und Muliplikation mit der komplexen Harmonischen verschieben.
Ja das hab ich mir auch gedacht nur egal was ich mache es wird nicht langsamer oder schneller Es wird einfach nur lauter oder es passiert gar nichts
Ok Dankeschön schonmal! Ich werde dann gleich Mal nachschauen was ich zu deinen Ideen finde und wie ich die in das Programm einbauen werde! Dank auf jedenfall!
Kannst du mir zeigen wie ich das in dem Programm löse mit der halben bzw doppelten Sample rate ..ich bin einfach zu blöd..
Wenn der ADC und DAC getrennte Chips mit getrennten Datenverbindungen sind, kannst du den ADC z.B. auf Samplerate 48 kHz und den DAC auf 24 kHz stellen. Dann würde die Ausgabe halb so schnell klingen.
>Kannst du mir zeigen wie ich das in dem Programm löse mit der halben bzw >doppelten Sample rate ..ich bin einfach zu blöd.. Zeichne doch mal eine Grafik auf ein Blatt Papier, auf der die ersten 5 Samples abgebildet sind ( x=time y=amplitude ). Dann zeichne eine eine ähnlich Grafik, wie das Ausgangssignal aussehen soll. Mach ein Foto und poste es hier.
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.