Forum: Digitale Signalverarbeitung / DSP / Machine Learning Elm Chan pitch conversion


von Thomas S. (thomas_s72)


Lesenswert?

Hallo,
ich habe eine Frage zur Webseite von Elm Chan:

http://elm-chan.org/works/vp/report.html

Das mit dem Filtern und Echo habe ich mal realisiert, klappt echt toll. 
Hardware ist ein XMega64A3U mit einem SPI RAM 32KB. ADC und DAC sind on 
Board, alles super.

Der Bursche hat echt was auf dem Kasten, ich ziehe da meinen Hut. Leider 
ist sein Englisch eher rudimentär, deshalb bleibt mir der Teil mit dem 
"Blending Buffer" für die Pitch conversion unklar.
Ich lasse den Read Pointer doppelt so schnell laufen wie den Write 
Pointer und es klappt auch schön. Leider ist da auch der beschriebene 
und zu erwartende Klick im Moment wenn die Pointer sich überschneiden.

Wer kann mal erklären, wie der Blending Buffer befüllt wird? Leider hakt 
es da bei mir.
Ich wäre für eine kurze Hilfe dankbar.

Gruß

Thomas

von Jim M. (turboj)


Lesenswert?

Thomas S. schrieb:
> Wer kann mal erklären, wie der Blending Buffer befüllt wird? Leider hakt
> es da bei mir.

Mit genau den alten Daten aus dem Fifo, die beim Schreiben von neuen 
Daten rausfallen (genauer: überschrieben werden).

von sumo (Gast)


Lesenswert?

Jim M. schrieb:
> Thomas S. schrieb:
>> Wer kann mal erklären, wie der Blending Buffer befüllt wird? Leider hakt
>> es da bei mir.
>
> Mit genau den alten Daten aus dem Fifo, die beim Schreiben von neuen
> Daten rausfallen (genauer: überschrieben werden).

Es sieht aber im Bild 6 (unterer Teil) nicht so aus, als wenn das die 
gleichen Daten sind. Ich vermute eher, daß da iegendwas interpoliert 
wird, damit eben kein Knacken (steile Flanke) erscheint.
Der Begriff "blending puffer" läßt das auch vermuten, denn er soll die 
Daten überblenden. Aber wie, hab ich auch noch nicht geschnallt...

von sumo (Gast)


Lesenswert?

"The cross fade is done during passing this range for 32 sample time."

Das Überblenden wird in einem Bereich von 32 Samples gemacht.
Nur wie?

von Tecco (Gast)


Lesenswert?

Jim M. schrieb:
> Mit genau den alten Daten aus dem Fifo, die beim Schreiben von neuen
> Daten rausfallen (genauer: überschrieben werden).

und genau deshalb ergibt das auch kein zufriedenstellendes pitching...

von Thomas S. (thomas_s72)


Lesenswert?

Das hilft mir aber nicht weiter, die alten Daten die rausfalllen sind 
auch irgendwann mal zu Ende, und dann kommt der Klick eben etwas später.

Irgenwie gehen die Daten da in einander über, ich wollte wissen wie der 
das macht.

von Harald (Gast)


Lesenswert?

http://elm-chan.org/works/vp/blk_over.png

Aus dem Bild geht hervor, dass die neuen Daten und die alten Daten sich 
um ein paar Samples überlappen. Diese Überlappungen werden 
zusammengeführt und eine neuer Wert "errechnet". Zu den Routinen die du 
dir anschauen musst gehört "xfer_data:" in VP_PITCH.ASM und das Makro 
"READ" in VP_DEF.INC.

von Jim M. (turboj)


Lesenswert?

Harald schrieb:
> Aus dem Bild geht hervor, dass die neuen Daten und die alten Daten sich
> um ein paar Samples überlappen. Diese Überlappungen werden
> zusammengeführt und eine neuer Wert "errechnet".

Genau: Da ist das Cross Fade.
Debei wird der Fading Parameter mit dem Abstand des Lese- zum 
Schreibzeiger verknüpft. Je kürzer der Abstand je mehr geht der Blending 
Buffer in den Endwert ein, bei Lesezeiger=Schreibzeiger dann (nahezu?) 
100%.

Damit hat man sanft von Ringpuffer-neu auf Ringpuffer-alt übergeblendet, 
wenn der Lesezeiger schneller als der Schreibzeiger läuft.

von nachtmix (Gast)


Lesenswert?

sumo schrieb:
> Der Begriff "blending puffer" läßt das auch vermuten, denn er soll die
> Daten überblenden. Aber wie, hab ich auch noch nicht geschnallt...

Nein, hast du nie  Whisky getrunken und aufs Etikett geschaut?
To blend heisst vermischen, verschneiden.
https://www.beowein.de/epages/Shop538.sf/de_DE/?ObjectPath=/Shops/Shop538/Products/10805
https://www.dict.cc/englisch-deutsch/to+blend.html

von Carlo (Gast)


Lesenswert?

blending ist hier das gleiche wie cross fade, sage ich mal

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.