Skip to content

midifiletempo

Sets the playback tempo of a MIDI file.

This opcode can be called from anywhere, it is a non-op if used in an instrument triggered by a MIDI event.

Requires the -F flag to operate. If a filename is passed to -F, it is open with id 0 and playback starts immediately.

Syntax

 midifiletempo(tempo:i[,id:i])
 midifiletempo(tempo:k[,id:i])
midifiletempo itempo[,id]
midifiletempo ktempo[,id]

Initialization

tempo -- if positive, the bpm to set. If negative, the absolute value is used as a tempo scaling parameter (playback speed).

id (optional, default=0) -- MIDI file id, defaults to 0, the id of any file passed to the -F flag.

Examples

Here is an example of the miditempo opcode. It uses the files midifiletempo.csd.

Example of the midifiletempo opcode.
<CsoundSynthesizer>
<CsOptions>
-F -odac
</CsOptions>
<CsInstruments>
0dbfs=1

mf@global:i = midifileopen("catherine.mid")

instr Midisynth
 midifileplay(mf)
 amp:i = ampmidi(0.2)
 cps:i = cpsmidi()
 sig:a  = vco2(amp,cps)
 env:a  = madsr(0.001, 0.5, 0.1, 0.1)
   out(sig*env)
endin

instr Tempo
 midifiletempo(p4,mf)
endin


schedule(Midisynth,0,0)
schedule(Tempo,5,0,110)
schedule(Tempo,10,0,-1)
event_i("e", 0, midifilelen(mf))

</CsInstruments>
<CsScore>
</CsScore>
</CsoundSynthesizer>

See also

Sensing and Control: Tempo and Sequencing

Credits

Author: Victor Lazzarini
May 2025
New in Csound 7