Jump to content

Convert Music beats to seconds


botanic
 Share

Recommended Posts

I am trying to convert something in the notation of "Measures : Beats : Division" into seconds. I have the key signature as well as the BPM and the Division just my script is returning wrong values. I believe part of the problem is that all 3 categories are not there every time, for example:

16: 1:  0 
      2:  0 
      3:  0 
         24 
         48

if $tempstring <> "   1: 1:  0 " Then
        $tempstring = StringReplace($tempstring, " ", "")
        $tempstring = StringReplace($tempstring, "  ", "")
        $tempstring = StringSplit( $tempstring, ":")
        if $tempstring[0] = 1 Then
            $beatdif = $tempstring[1] - $beat3
            if $beatdif < 0 then $beatdif = $division + $beatdif
            $beat3 = $tempstring[1]
            $tempstring = (($beatdif/$division)*$BPM)/60
            ElseIf $tempstring[0] = 2 Then
            $beatdif = ($tempstring[1] - $beat2) &":"& ($tempstring[2] - $beat3)
            $beatdif = StringSplit($beatdif, ":")
            $beat2 = $tempstring[1]
            $beat3 = $tempstring[2]
            if $beatdif[1] < 0 then $beatdif[1] = StringLeft($keysig, 1) + $beatdif
            if $beatdif[2] < 0 then $beatdif[2] = $division + $beatdif
            $tempstring = (($beatdif[1] + $beatdif[2]/$division)*$BPM)/60
            ElseIf $tempstring[0] = 3 then
            $beatdif = $tempstring[1] & ":"& ($tempstring[2] - $beat2) &":"& ($tempstring[3] - $beat3)
            $beatdif = StringSplit($beatdif, ":")
            $beat = $tempstring[1]
            $beat2 = $tempstring[2]
            $beat3 = $tempstring[3]
            if $beatdif[2] < 0 then $beatdif[2] = StringLeft($keysig, 1) + $beatdif
            if $beatdif[3] < 0 then $beatdif[3] = 192 + $beatdif
            $tempstring = ((($beatdif[1] * StringRight($keysig, 1)-$beat) + $beatdif[2] + $beatdif[3]/$division)*$BPM)/60
        EndIf
        EndIf
Link to comment
Share on other sites

Basically im trying to get the seconds where the "Measures" * $keysig = Beats, Beats / BPM = seconds (i think my math is wrong there), and Division = Division/$Division Beats

Its kinda complicated I know but I hope that helps clear it up

Let me see if I understand this right, though I'm still not quite sure I understand divisions (is that like 8ths or 16ths?). For example:

Time signature (not key signature :) ) = 4/4

Tempo (BPM) = 120 BPM

120 BPM = 120 beats per 60 seconds (120/60) = 2 BPS (beats per second), so 1 BEAT = 0.5 sec.

16:1:0 = (16 * 4) + 1 * 0.5 = 65 beats in 32.5 sec.

Clear as mud?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...