Höhe eines Signals verändern

Gast #1057757
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.
#1058403
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.
Gast #1058488
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.
Gast #1058569
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.
Gast #1058660
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)
#1058686
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.
Gast #1058700
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.
Gast #1058768
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren