Forum: Mikrocontroller und Digitale Elektronik SMT32 Ausgabe verlangsamen


von Semi Mamou (Gast)


Lesenswert?

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!

von JohnDoe (Gast)


Lesenswert?

Wenn du nur die halbe und/oder doppelte Geschwindigkeit anpeilst, 
könntest du die Ausgabe mit halber/doppelter Samplerate machen.

von Markus (Gast)


Lesenswert?

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.

von Semi Mamou (Gast)


Lesenswert?

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

von Semi Mamou (Gast)


Lesenswert?

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!

von Semi M. (semi_m)


Lesenswert?

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..

von JohnDoe (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.