mathemat. Problem: Loops zusammenschneiden?

von Jay, 25.04.05.

  1. Jay

    Jay HCA Piano/Spieltechnik Ex-Moderator HCA

    Im Board seit:
    29.10.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    4.667
    Ort:
    München
    Zustimmungen:
    181
    Kekse:
    7.137
    Erstellt: 25.04.05   #1
    Hallo,

    wie der Titel schon andeutet, handelt es sich hier um eine sehr theoretische Frage. Und zwar habe ich für einen Kumpel nach dessen Wünschen eine kleines Sequenzerprogramm geschrieben. Er spielt damit einen Part ein (Start mit Fußschalter), und wenn er wieder auf den Fußschalter drückt, wird der Part geloopt und er kann Solo drüber spielen. Soweit kein Problem.

    Wenn ich jetzt den Rhythmuspart zu einer Schleife zusammenschneide, muss ich ja verhindern, dass der Übergang vom Ende zum Anfang "ploppt". Hier fehlt mir das amtliche Fachwissen, also habe ich vorerst eine Lösung verwendet, die mir einigermaßen gängig erschien: Ein bestimmter Teil (im Moment knapp 20 ms) am Anfang und Ende der Schleife werden mit einer Funktion multipliziert, die "sachte" gegen 0 läuft. Meine Funktion der Wahl ist eine halbe Sinuswelle (pi/2 bis 3*pi/2), die ich dann normiert habe, so dass die Funktionswerte bei 1 beginnen und bei 0 enden.

    Mit der Einstellung gehts schon ganz gut, so dass man den Übergang fast nicht mehr hört (hängt ja auch von der Aufnahme ab). Meine Fragen dazu sind: Welche Funktionen gibt es noch, die man dafür verwenden kann (Gauss?)? Wie lange ist die ideale Ein-und Ausfadezeit bzw. wie kann ich die bestimmen? Gibt es noch andere Verfahren außer der Multiplikation, auch über FFT o.ä.?

    Gruß,
    Jay
     
  2. Reidelrock

    Reidelrock Registrierter Benutzer

    Im Board seit:
    29.09.03
    Zuletzt hier:
    14.03.14
    Beiträge:
    192
    Zustimmungen:
    3
    Kekse:
    85
    Erstellt: 25.04.05   #2
    Hi jay!

    Also ich kenn mich mathematisch auf dem Gebiet auch so gut wie gar nicht aus, aber wenn ich mir das so vorstelle, ist doch diese Popproblem eigentlich eine Überlagerung zweier Wellen. Das heißt der letzte Funktionswert der letzten Welle ist ein anderer als der erste Funktionswert der Welle oder? Wenn dem so ist, müßte man eine Funktion finden, die den Unterschied der Funktionswerte ausgleicht. Ich könnte mir vorstellen, dass das mit der Fouriertransformation tatsächlich funktioniert. Allerdings würde ich auch mal schauen, ob eine LaPlace- Transformation mit Grenzwertsätzen nicht auch funktionieren könnte. Ist nur eine Vermutung...

    Gruß Marco
     
  3. Jay

    Jay Threadersteller HCA Piano/Spieltechnik Ex-Moderator HCA

    Im Board seit:
    29.10.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    4.667
    Ort:
    München
    Zustimmungen:
    181
    Kekse:
    7.137
    Erstellt: 25.04.05   #3
    Ja. Beim Zusammensetzen entsteht dadurch ein Sprung, der das Störgeräusch verursacht. Man muss also diesen Übergang weich gestalten, was ich bisher dadurch gelöst habe, dass ich beide Enden auf 0 zurückfahre wie oben beschrieben.

    Im Grundstudium habe ich das gehasst. :rolleyes: Das Problem neben der Auswahl eines geeigneten Verfahrens ist auch dessen Implementierung. Die Multiplikation ist digital ja kein Problem. FFT auch nicht, nur was genau mache ich dann, wenn ich das Spektrum habe? Aber Laplace-Trafo? Ich habe ja keine bestimmte Funktion, sondern einen Haufen digitaler Werte. Da weiß ich nicht, wie ich die transformieren soll. :confused:

    Danke schonmal fürs Gedanken machen. :)
     
  4. .Jens

    .Jens Mod Emeritus Ex-Moderator HCA

    Im Board seit:
    18.08.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    10.615
    Ort:
    Hamburg
    Zustimmungen:
    1.926
    Kekse:
    23.787
    Erstellt: 25.04.05   #4
    Die Idee mit dem Sinus ist schon ganz richtig. Wenn du jetzt stattdessen einen Sinus^^2 nimmst (hast du ja schon de facto durch die Normierung auf 0 und 1), und die nicht ERST aus- und DANN wieder einblendest, sondern richtig überlappen lässt, dann sollte ein nahezu unhörbarer Übergang rauskommen. Denn, wie wir wissen, ist sin² + cos² = 1, ne?
    Dass das in der Praxis nicht ganz so funktioniert, liegt daran, dass dein Signal kein Rauschen ist, sondern irgendein beliebiges, so dass Interferenzen einem da Sorgen machen können.

    Wenn es rein um die Verhinderung eines "Knack" geht, dann tut es auch ein ganz schneller Fade (der dann auch linear sein darf) von vielleicht 10ms.

    Jens
     
  5. Jay

    Jay Threadersteller HCA Piano/Spieltechnik Ex-Moderator HCA

    Im Board seit:
    29.10.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    4.667
    Ort:
    München
    Zustimmungen:
    181
    Kekse:
    7.137
    Erstellt: 25.04.05   #5
    Der Idealfall ist natürlich der unhörbare Übergang. Das Aus- und wieder Einblenden hat den Vorteil, dass der Funktionswert 0 ein unproblematischer Mittelpunkt ist. Welchen "Treffpunkt" müsste ich denn bei einem Direktübergang wählen? Einfach die Mitte?

    Und ich nehme mal an, mit Interferenzen meinst du den dadurch entstehenden ungleichmäßigen Wellenverlauf. Lässt sich das überhaupt verhindern?
     
  6. .Jens

    .Jens Mod Emeritus Ex-Moderator HCA

    Im Board seit:
    18.08.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    10.615
    Ort:
    Hamburg
    Zustimmungen:
    1.926
    Kekse:
    23.787
    Erstellt: 25.04.05   #6
    Bei dem (durchaus üblichen) sin²-Übergang nimmst du tatsächlich die Mitte. Oder anders gesagt: du nimmst je eine Viertelperiode von einem sin² und einem cos² und lässt die gleichzeitig "loslaufen". Damit hast du (theoretisch) einen gleichbleibenden Summenpegel.

    Ja.
    Nein. Jedenfalls nicht, wenn der gewählte Übergang für beliebige Signale gelten soll.

    Jens
     
  7. clemens

    clemens Registrierter Benutzer

    Im Board seit:
    01.02.04
    Zuletzt hier:
    7.10.08
    Beiträge:
    2.384
    Ort:
    Austria
    Zustimmungen:
    9
    Kekse:
    668
    Erstellt: 25.04.05   #7
    Das hätte ich auch vorgeschlagen. Warum eigentlich so kompliziert? Sinusfunktionen, FFT, whatever... das ist doch alles overkill, wenn du nur den Plopp verhindern willst. Für einen linearen Fade auf 0 und von dort wieder auf reichen schon je 10 oder 20 Samples, das ist komplett unhörbar. Was genau ist eigentlich das Problem mit deiner momentanen Lösung?

    Eine andere, auch recht leicht zu realisierende Möglichkeit wäre noch ein echter Crossfade zwischen dem Ende des Loops und dem Anfang; dazu brauchst du natürlich einen kurzen überlappenden Teil am Ende oder am Anfang (oder beides).
     
  8. Jay

    Jay Threadersteller HCA Piano/Spieltechnik Ex-Moderator HCA

    Im Board seit:
    29.10.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    4.667
    Ort:
    München
    Zustimmungen:
    181
    Kekse:
    7.137
    Erstellt: 25.04.05   #8
    Die aktuelle Lösung ist gut, aber nicht optimal. Und 10 bis 20 Samples reichen nicht. Je nach Rate triffts "einige Hundert" eher. In der Testversion haben sich 800 Samples bei einer Rate von 44100 pro Sekunde recht gut gemacht. Außerdem würde ich gern wissen, wie die "Lehrbuchlösung" aussieht.

    Überlappen geht nicht, da der Rhythmus sonst verloren geht. Als Spieler schaltet man ja genau im Rhythmus an und aus, da kann man nicht einfach ein Stück rausschneiden, selbst wenn es nur einige ms sind.

    Den Mittelpunkttreff-Vorschlag vom Jens muss ich erst noch ausprobieren ...
     
  9. clemens

    clemens Registrierter Benutzer

    Im Board seit:
    01.02.04
    Zuletzt hier:
    7.10.08
    Beiträge:
    2.384
    Ort:
    Austria
    Zustimmungen:
    9
    Kekse:
    668
    Erstellt: 25.04.05   #9
    Doch, wenn du einfach nach dem Stopp noch ein paar Millisekunden länger aufnimmst.
     
  10. Jay

    Jay Threadersteller HCA Piano/Spieltechnik Ex-Moderator HCA

    Im Board seit:
    29.10.03
    Zuletzt hier:
    3.12.16
    Beiträge:
    4.667
    Ort:
    München
    Zustimmungen:
    181
    Kekse:
    7.137
    Erstellt: 25.04.05   #10
    Stimmt. Da hat mal wieder einer nicht mtgedacht. ;)
     
Die Seite wird geladen...

mapping