SMT32 Ausgabe verlangsamen

Gast #5008532
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!
Gast #5008690
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.
Gast #5011197
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
Gast #5011199
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!
Gast #5012151
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.
Gast #5012210
>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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.