Forum: Digitale Signalverarbeitung / DSP / Machine Learning Höhe eines Signals verändern


von nur ein (Gast)


Lesenswert?

Ich steh grad ein wenig auf dem Schlauch. Ich lese in c Inputsignale in 
einen Integer ein, jezt will ich die Tonhöhe verändern aber irgendwie 
komm ich nicht darauf wie ich das realisieren kann. Ich bin mir sicher 
das es etwas ganz einfaches sein muss aber ich stehe wie gesagt momentan 
total auf dem Schlauch.

von gast (Gast)


Lesenswert?


von nur ein (Gast)


Lesenswert?

Entspricht dabei das t dem Eingangssignal? Wenn ja kann man die Tonhöhe 
mit
sin(2*pi*n*t) verändern? (Das n wäre dann ein vorher eingesezter Wert)
Danke für deine schnelle Antwort

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die Tonhöhe einer Tonaufzeichnung nachträglich zu ändern ist nicht so 
einfach, geht es darum?
Da gibt es den "Pitch-shifter", das geht ähnlich der Zeitlupe/-raffer 
beim Film. Alle Frequenzen sind mit einem Faktor multipliziert.
Dann gibt es noch die Einseitenbandmischung, da wird eine Frequenz 
addiert, das klingt bei Musik anschließend sehr seltsam. Der 
"Ringmodulator" war in der experimentellen Musik mal ein beliebtes 
Spielzeug.

von nur ein (Gast)


Lesenswert?

Es geht darum die Tonhöhe in echtzeit zu verändern. Ich lese den 
Integerwert in c ein bearbeite ihn und gebe ihn gleich danach wieder 
aus, am besten wäre ein kleines code Beispiel wie das aussehen könnte.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

wie gesagt, das geht nicht so einfach, hab schon öfters den "voice 
changer" von ELV genannt, der arbeitet mit einem MSM6722 von OKI:
http://www.alldatasheet.com/datasheet-pdf/pdf/134894/OKI/MSM6722.html
http://www.elv.de/Voice-Changer,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_13700

von nur ein (Gast)


Lesenswert?

danke für die hilfe
ein kompletter Baustein kommt leider nicht in Frage der Aufbau ist 
unveränderlich es muss leider alles softwareseitig erledigt werden. An 
Rechengeschwindigkeit oder Ram mangelt es nicht aber am verständnis.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Zum Frequenz-Verdoppeln wird je ein Stück von einigen Millisekunden 
zwischengespeichert, und doppelt so schnell zweimal ausgegeben. Genauso 
macht es der Zeitlupe im Film, jedes Bild wird doppelt gezeigt. Die 
Störung, die sich dadurch ergibt sollte im Infraschallbereich liegen, 
dann hört man sie nicht so stark.

von nur ein (Gast)


Lesenswert?

Also muss das auf jeden Fall auf mehrere Threads verteilt sein das man 
gleichzeitig aufnnehmen und abspielen kann? Ab eiw vielen samples 
funktioniert das ganze denn einigermasen? (Es geht um sehr schwache 
Instrumentensignale also darf die latenz nicht zu hoch werden)

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Nein das geht kontinuierlich mit einem Ringpuffer, der mit einem 
Schreibzeiger z.B. mit einer festen Geschwindigkeit beschrieben wird und 
mit einem Lesezeiger mit variablem Tempo wieder ausgelesen. Eine kleine 
Verzögerung ergibt sich immer. Der Lesezeiger überholt bei 
Frequenzerhöhung immer wieder des Schreibzeiger, bei Erniedrigung kommt 
er nicht nach und überspringt Stücke aus dem Datenstrom, die schon 
wieder überschrieben wurden.

von nur ein (Gast)


Lesenswert?

Hmm das sind alles Sachen die mir neu sind ich habe bisher nur in 
diversen Hochsprachen programmiert oder eben direkt mit logikbausteinen 
gearbeitet daher habe ich ein komplett falsches denkmuster. Ich dachte 
mir das Schreib und Lesezyklen paralell aber mit unterschiedlicher 
geschwindigkeit erfolgen müssen => Multithreading. Wie der Ringpuffer 
(wenn ich es richtig verstanden hab ist das ja nur ein Integer Arrayin 
dem die Werte ständig überschrieben werden)seriell ablaufen soll ist mir 
schleierhaft.

von nur ein (Gast)


Lesenswert?

Die Methode mit dem Pitch Shift hört sich auch recht interessant an. Wie 
schwer ist es in etwa das zu lernen und dann umzusetzen? Ich bin 
udrhcuas bereit einige Stunden zu investieren um mich in die Materie 
einzuarbeiten aber ich finde zu solchen sachen immer nur beschreibungen 
für die ein mathestudium als grundkenntnis nicht übel wäre

von Christoph db1uq K. (christoph_kessler)


Lesenswert?


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.