Höhe eines Signals verändern

Gast #1057757
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.
Gast #1057854
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
#1058403
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
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
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.
#1058573
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.
Gast #1058660
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 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.