Old 09-18-2019, 12:09 PM   #1
Human being with feelings
Join Date: May 2019
Posts: 22
Default control tempo via MIDI

Since Reaper can't be a slave to an external MIDI clock, is it possible to adjust tempo BPM via MIDI CC? I'm looking in "Actions list," but I don't see anything that takes the absolute value of a CC value and adjusts the tempo to match, they seem to do it via a percentage (coarse or fine). I know I'll only get 0-127, but I can offset that to what I want, or try OSC.

I'm using TidalCycles to send MIDI with Reaper as a VST host, I'd like to make tempo changes via this and have Reaper along with VSTs I have hosted in sync with that.
ovitus is offline   Reply With Quote
Old 09-18-2019, 12:10 PM   #2
Human being with feelings
EvilDragon's Avatar
Join Date: Jun 2009
Location: Croatia
Posts: 23,333

Not possible.
EvilDragon is online now   Reply With Quote
Old 09-18-2019, 01:13 PM   #3
Human being with feelings
lunker's Avatar
Join Date: Nov 2007
Location: Lucas, TX, USA (via Luleå, Sweden)
Posts: 960

Reaper can slave to an external clock. It supports reading SPP and MTC.

You would need a device to convert the MIDI clock into one of those formats (even though the names sound similar, MTC is not the same as MIDI clock pulses, IIRC).

I had a $50 box from Guitar Center that I used to convert the MIDI clock from my sequencer to MTC and print that onto a tape track so that I could sync the tape deck and sequencer together. I think I may have actually used that box to sync Reaper to the tape deck back when tape was #1 and Reaper was #2. Now the tape deck's been in the closet for 10+ years, and the little MTC converter is long gone.

EDIT: Actually ... you might not need a converter after all. Check out this section in the User Guide: "23.8 Slaving REAPER to MIDI Sequencer Software".
Best Regards, Ernie "lunker" Lundqvist
BDSM (Bad Dog Studio Musicians)
Windows 10 running on Z390 + i7-8700

Last edited by lunker; 09-18-2019 at 01:49 PM.
lunker is offline   Reply With Quote
Old 09-18-2019, 07:50 PM   #4
Human being with feelings
Join Date: Dec 2014
Posts: 354

Action: Set Tempo, Coarse maps CC values 0-127 to bpm 40 - 294. I’ve never used Tidal Cycles, but pseudo code:

function set_tempo(bpm) {
  send_cc_n_with_value((bpm - 40) / 2)
You’d only have to be a little more clever to use the corresponding Fine action in conjunction to get <2bpm resolution.
preferred.nomenclature is offline   Reply With Quote
Old 09-19-2019, 01:31 PM   #5
Human being with feelings
Join Date: May 2019
Posts: 22

So I did get this to work doing the following:

In Options > Preferences > Control/OSC/Web, you can create an OSC device.

Set "f/tempo/raw" as the device name:

# Example: TEMPO f/tempo/raw
# The device sends /tempo/raw 100.351 to change the REAPER tempo to 100.351 bpm.
# REAPER sends /tempo/raw 120 when the tempo changes to 120 bpm.

On the TidalCycles side:

reaperTarget = OSCTarget {oName = "reaper", oAddress = "", oPort = 5050, oPath = "f/tempo/raw", oShape = Just [("reaper", Just $ VS "a")], oLatency = 0.0, oPreamble = [], oTimestamp = NoStamp}
reaper = pF "reaper"

-- total latency = oLatency + cFrameTimespan
tidal <- startMulti [reaperTarget, (superdirtTarget {oLatency = 0.6, oAddress = "", oPort = 57120})] (defaultConfig {cFrameTimespan = 1/5})

Anyway, it's working perfectly for my needs, syncing Reaper's BPM with CPS. Really having a blast with this right now, fluctuating both with oscillators in Tidal.
ovitus is offline   Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -7. The time now is 10:06 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.