Re: Beats Per Minute Conversion
- To: mathgroup at smc.vnet.net
- Subject: [mg8508] Re: [mg8471] Beats Per Minute Conversion
- From: Paulo Mouat <mouat at mail.telepac.pt>
- Date: Thu, 4 Sep 1997 02:19:52 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Benjamin R. Tubb wrote: > Determine the MIDI Coarse and Fine Tuning values for converting to any > BPM playback from a given Sample Rate, MIDI Note and BPM (beats per > minute) rate. > > GIVEN: > SampleRate = 44100 kHz > Orginal BPM = 52 (beats per minute) > MIDI Note = C4 (i.e. Middle C) > Coarse Tuning = 0 (from a range, in semitones, of +/- 48) > Fine Tuning = 0 (from a range, in cents, of +/- 50) Determine Coarse and Fine Tuning for the given SampleRate and MIDI Note but depending on the intended BPM: cf[bpm_]:=Module[{c,f, t, u}, t=1200*Log[bpm/52]/Log[2]; u=Quotient[t,100]; c=u+Quotient[t-100*u+50,100]; f=Round[Mod[t-100*u + 50,100]-50]; {c,f}//N] (returns a list of tuning values in the form {coarse, fine}) To calculate BPM according to Coarse and Fine Tuning: bpm[c_,f_]:=N[52*2^(c/12 + f/1200)] These functions assume C4 as the MIDI Note. For any other notes, just add (or subtract) the number of semitones up (or down) from C4 to the Coarse Tuning value. Assuming C4 = MIDI Note 0, notebpm[midinote_]:=52*2^(midinote/12)//N gives the BPM of other MIDI notes, where notes lower than C4 have negative note numbers. For different SampleRates (in Hz), NewBPM = BPM*SampleRate/44100 where BPM is calculated using bpm[]. -- __|__ ___\_/___ Paulo Mouat, ___ mouat at mail.telepac.pt |___| http://www.geocities.com/Vienna/8804/ |___|