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.
Datum: 24.11.2008 19:39
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
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.
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.
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...
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.
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.
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)
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.
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.
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
Datum: 26.11.2008 08:31
Das Thema hatten wir schon öfters: http://www.mikrocontroller.net/attachment/12563/Pi... Beitrag "Stimme verzerren?"
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