Jump to content

Recommended Posts

Posted

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
Posted

I'm still playing with it and trying to fully understand what you're after here, but perhaps using StringRegExp would help for those lines where not all categories are there.

Posted

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

Posted

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?

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
  • Recently Browsing   0 members

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