Tap - BPM Counter

  • Hallo,


    da ich mich für die BPM meiner Lieder interessiere und beim anhören immer auf den Tisch tippe habe ich mir schnell was zusammengeschrieben.
    Vielleicht könnt ihr es ja auch gebrauchen.


    Entweder jeden Beat oder Off-Beat auf Tap drücken und nach etwa 20 - 30 Beats das Label anschauen.


  • Hi,
    das Script ist cool :thumbup:


    Noch cooler wäre es, mit der BASS-UDF den Beat direkt aus dem Lied zu erfassen und daraus die BPM anzuzeigen....dann musst du nicht immer "tippen".
    Wobei man direkt das Mikrofon von PC/Laptop anzapfen könnte und von dort die BPM erfasst.
    Btw. wäre das sicher eine klasse App für ein Smartphone.

  • Hi,
    das Script ist cool :thumbup:


    Noch cooler wäre es, mit der BASS-UDF den Beat direkt aus dem Lied zu erfassen und daraus die BPM anzuzeigen....dann musst du nicht immer "tippen".
    Wobei man direkt das Mikrofon von PC/Laptop anzapfen könnte und von dort die BPM erfasst.
    Btw. wäre das sicher eine klasse App für ein Smartphone.

  • Klein, smart und macht was es soll - :thumbup:


    Kleine Anregung: Wenn man einen Beat ausgelassen hat (vielleicht daneben geklickt) dann kann man wieder von vorne anfangen. Klasse wäre es daher einfach später wieder einzusetzen zu können.
    Das könnte man damit bewerkstelligen, dass nicht die Anzahl der Klicks während der gesamten Zeitdauer verwendet wird, sondern die Mittlung des Abstandes zwischen zwei aufeinander folgenden Beats.
    Wenn man nun ein paar Beats hat, kann ein Auslassen des Beats daran erkannt werden, dass seine Zeit z.B. größer als 1,2x wie das bisherige Mittel ist. Auch Doppelklicks könnte man damit abfangen.


    Wenn du das dann noch statistisch machst, in dem du parallel die Standardabweichung bestimmst, dann kannst du sogar mit angeben wie genau du die bpm bestimmt hast.

  • Das mit dem Beat auslassen klingt gut, ich werde mal schauen wie ich das unterbringe.


    Das Problem bei der Bass.dll / Bassfx.dll ist, das die nicht richtig die Beats zählt.
    Wenn ich ein 140 BPM Lied nehme wird mir z.B. nur 90 angezeigt, das liegt daran, das die DLL nur Bassschläge als Beat nimmt.
    Das ist richtig, aber wenn ich im Intro z.B. ein Piano oder eine High-Hat habe die den Beat spielt, dann wird das nicht mitgezählt und so sinkt die BPM drastisch.
    Eine Möglichkeit wäre eine Stelle in der Mitte des Liedes zu nehmen wo eine Bassdrum den Beat angibt.
    Nur stellt sich hier die Frage wie man so eine Stelle rausfindet. Man könnte ein 10 Sekunden Intervall nehmen und das Intervall ausrechnen das die höchste BPM hat,
    allerdings ist hier das Problem das es bei einigen Musikrichtungen das Problem gibt, das einige Stellen schneller sind als das restliche Lied.

  • Ich habe mal die robuste Variante umgesetzt:


    Nun kann man auch nach einer Pause später einfach wieder einsteigen und auch Doppelklicks oder ähnliche Fehler sollten keine negativen Auswirkungen haben.
    Außerdem gibt es parallel eine Anzeige wie genau man den Bpm-Wert bestimmt hat (Voraussetzung: Normalverteiltes Verhalten - sprich: es gibt nur einen richtigen Bpm-Wert und alle Abweichungen sind zufällige Messabweichungen)

  • Die Standardabweichung zu ermitteln ist aber beim Tippen nicht nötig, denn man kann nicht sicher sein ob der perfekte Beat von den man die Abweichung berechnet auch perfekt zum Beat in Lied war.
    Man würde eine Abweichung zu einem Wert ermitteln der selbst wahrscheinlich eine Abweichung beinhaltet.

  • Ich gebe zu, dass ich nicht exakt verstanden habe was du sagen wolltest.


    Gehen wir mal von einem Lied aus welches eine absolut exakte Taktung besitzt. Das ist vor allem bei Sequenzer-basierten Stilrichtungen wie Techno oder Hip Hop der Fall.
    Aber auch Rock ist beim Einspielen in der Regel exakt getaktet (Metronom im Ohr des Drummers).
    Jetzt tippen wir den Beat einfach mit. Wir versuchen natürlich exakt den Beat zu treffen werden aber immer etwas zu spät oder zu zeitig tippen.
    Im Mittel treffen wir aber den richtigen Beat. Die Fehler die durch unser Tippen dazukommen verhalten sich dann normalverteilt.
    Daher können wir sowohl die Standardabweichung als auch den Standardfehler als statistisches Maß zur Beurteilung der Schätzgüte heranziehen.


    Gehen wir nun vom erweiterten Fall des Rock-Drummers mit Metronom aus.
    Bis auf Ausnahmen wie Nicholas Barker oder Gene Hoglan wird jeder andere Drummer den Beat nie exakt treffen. Im Mittel bleibt er aber drin und seine Fehler sind ebenfalls normalverteilt.
    Schlechte Drummer haben dabei eine große Standardabweichung, gute eine kleine. Der Mittelwert bleibt unabhängig davon der Selbe.
    Jetzt kommen unsere Tippfehler beim Abtippen hinzu - ebenfalls normalverteilt wie wir ja schon festgestellt haben. Das führt zu einer Überlagerung der beiden Normalverteilungen. Und die Summe zweier Normalverteilungen ergibt wieder eine Normalverteilung.
    Auch in diesem Fall wäre die Anwendung des Standardfehlers also korrekt.


    Falls du immer noch skeptisch bist, kann ich dir gerne noch einen Shapiro-Wilk-Test auf Normalverteilung mit implementieren, damit du jeweils sicher sein kannst, dass der angezeigte Standardfehler ein korrektes Maß zur Beurteilung der Schätzgüte darstellt.

  • Ich glaube wir reden aneinander vorbei. Was ich meinte war das man den Beat selbst nicht genau tippen kann und man folglich nur die Standardabweichung zu einem nicht genauen Beat bestimmen kann.
    Aber selbstverständlich kann man davon ausgehen das man im Normalfall den Beat erwischt.

  • Was ich meinte war das man den Beat selbst nicht genau tippen kann und man folglich nur die Standardabweichung zu einem nicht genauen Beat bestimmen kann.

    Genau deswegen benötigen wir ja erst Maße für die Schätzgüte. Wenn wir in der Lage wären den Beat genau zu tippen bräuchten wir keine Genauigkeitsabschätzung.


    Wir möchten den Wert ermitteln der als bpm im Sequenzer eingestellt war bzw. im Metronom für den Drummer.
    Dieser exakte theoretische Wert den wir ermitteln wollen ist der Erwartungswert.
    Wie machen wir das? - Wir nehmen z.B. 20s aus dem Lied und tippen fleißig mit (wir ziehen eine Stichprobe).
    Die Stichprobe ist durch unser manuelles Tippen, dem miesen Drummer und weitere Einflüsse (normalverteilt) fehlerbehaftet.
    Der Mittelwert dieser Stichprobe ist bei dieser Konstellation dann ein Schätzwert für den exakten Erwartungswert.
    Nun stellt sich aber die Frage: "Wie nah liegt der Schätzwert am Erwartungswert dran?".
    Und für normalverteilte Stichproben ist das simpelste Maß hierfür nunmal der Standardfehler (nicht mit der Standardabweichung verwechseln...).


    Aber selbstverständlich kann man davon ausgehen das man im Normalfall den Beat erwischt.

    Wir müssen ja auch nicht exakt tippen. Wir müssen nur mehr tippen je schlechter wir treffen um, einen für uns annehmbaren, Standardfehler zu erreichen.