www.mikrocontroller.net

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

Autor: nur ein (Gast)
Datum: 24.11.2008 19:37

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.
Autor: gast (Gast)
Datum: 24.11.2008 19:39

Autor: nur ein (Gast)
Datum: 24.11.2008 20:44

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
Autor: Christoph Kessler (Firma db1uq) (christoph_kessler)
Datum: 25.11.2008 12:33

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.
Autor: nur ein (Gast)
Datum: 25.11.2008 13:34

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.
Autor: Christoph Kessler (Firma db1uq) (christoph_kessler)
Datum: 25.11.2008 14:28

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/1348...
http://www.elv.de/Voice-Changer,-Komplettbausatz/x...
Autor: nur ein (Gast)
Datum: 25.11.2008 14:37

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.
Autor: Christoph Kessler (Firma db1uq) (christoph_kessler)
Datum: 25.11.2008 14:40

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.
Autor: nur ein (Gast)
Datum: 25.11.2008 16:05

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)
Autor: Christoph Kessler (Firma db1uq) (christoph_kessler)
Datum: 25.11.2008 16:23

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.
Autor: nur ein (Gast)
Datum: 25.11.2008 16:36

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.
Autor: nur ein (Gast)
Datum: 25.11.2008 17:43

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
Autor: Christoph Kessler (Firma db1uq) (christoph_kessler)
Datum: 26.11.2008 08:31

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Mit dem Abschicken erkennst du die Nutzungsbedingungen an.
- Amazon.de Anzeige -
amazon.de

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net