Loopy Pro: Create music, your way.

What is Loopy Pro?Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.

Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.

Download on the App Store

Loopy Pro is your all-in-one musical toolkit. Try it for free today.

Set tempo with midi-cc from OnSong? …

edited August 2025 in Loopy Pro

I want to adjust the tempo in Loopy Pro by sending a simple midi command from the OnSong app.

But how to do that when MIDI CC goes from 0-127, and the tempo resolution in Loopy Pro is 10-500?

Comments

  • @OlaRos said:
    I want to adjust the tempo in Loopy Pro by sending a simple midi command from the OnSong app.

    But how to do that when MIDI CC goes from 0-127, and the tempo resolution in Loopy Pro is 10-500?

    What convention does OnSong use to send tempo by MIDI CC?

  • It looks like they use a pair of CCs for MSB/LSB, default 106/107. Not sure how you could use that in LP, though. They don't seem to support Link, which would be a much cleaner solution.

  • @espiegel123 said:

    @OlaRos said:
    I want to adjust the tempo in Loopy Pro by sending a simple midi command from the OnSong app.

    But how to do that when MIDI CC goes from 0-127, and the tempo resolution in Loopy Pro is 10-500?

    What convention does OnSong use to send tempo by MIDI CC?

    From the online manual:

    1) MIDI Editor: https://onsongapp.com/docs/interface/menubar/song-editor/menubar/metadata/midi/editor/

    2) MIDI syntax: https://onsongapp.com/docs/features/formats/onsong/metadata/midi/

    3) Setting the tempo from OnSong (video):

    (6:44 sedig tempo to BeatBuddy).

    I have used OnSong (lyrics/chords) for sending midi settings like the the tempo to the BeatBuddy (BB) and VoiceLive 3 Extreme (VL3x) - and the presets on the VL3x.
    I’m using a midi pedal to turn to the next song in OnSong - with all the settings. Extremely effective.

    I now want to adjust the tempo in Loopy Pro - with OnSong by sending midi cc command(s) to Loopy Pro.

    But …
    When I send cc 1-127 to Loopy Pro, the tempo in Loopy Pro is set to 10-500.
    That’s my challenge now …

  • @uncledave said:
    It looks like they use a pair of CCs for MSB/LSB, default 106/107. Not sure how you could use that in LP, though. They don't seem to support Link, which would be a much cleaner solution.

    By using StreamByter in Loopy Pro??

  • @OlaRos said:

    @espiegel123 said:

    @OlaRos said:
    I want to adjust the tempo in Loopy Pro by sending a simple midi command from the OnSong app.

    But how to do that when MIDI CC goes from 0-127, and the tempo resolution in Loopy Pro is 10-500?

    What convention does OnSong use to send tempo by MIDI CC?

    From the online manual:

    1) MIDI Editor: https://onsongapp.com/docs/interface/menubar/song-editor/menubar/metadata/midi/editor/

    2) MIDI syntax: https://onsongapp.com/docs/features/formats/onsong/metadata/midi/

    3) Setting the tempo from OnSong (video):

    (6:44 sedig tempo to BeatBuddy).

    I have used OnSong (lyrics/chords) for sending midi settings like the the tempo to the BeatBuddy (BB) and VoiceLive 3 Extreme (VL3x) - and the presets on the VL3x.
    I’m using a midi pedal to turn to the next song in OnSong - with all the settings. Extremely effective.

    I now want to adjust the tempo in Loopy Pro - with OnSong by sending midi cc command(s) to Loopy Pro.

    But …
    When I send cc 1-127 to Loopy Pro, the tempo in Loopy Pro is set to 10-500.
    That’s my challenge now …

    i don't see anything in the links you posted that indicates OnSong uses CC to send a tempo value. Perhaps I missed it. i didnt watch the 16 minute video. if the information is in the video only, please explain the details of the protocol they describe for sending tempo via MIDI CC.

    can you post quotes here or summarize how OnSong sends tempo via CC?

    Tempo information is typically not sent when using midi clock (midi clock doesn't send tempo). It is calculated from received clock ticks. Ableton Link includes tempo information but not via MIDI%

  • See my previous post for the formatting specifics.

    In AUM, you can use a PB message to MIDI Control to set tempo. The following StreamByter script converts the default MSB/LSB on CC 106/107 to a PB message that works in AUM. Can Loopy Pro use PB to set tempo? If so, you could tweak the constants at the top to make it work.

    #TempoCCtoPB
    
    # Load StreamByter in a MIDI slot. Paste this in and Install Rules.
    # You can Save it for later reuse (hamburger menu in lower right). 
    # Tap the magnifier to see the actual input and output messages. 
    # Tap the "globe" icon in lower right to switch between controls 
    # and edit screen.
    
    If load
    Set Name TempoCCtoPB
    
    # global constants
    Alias $106 MSBCC
    Alias $107 LSBCC
    Alias $20 minTempo
    Alias $500 maxTempo
    Alias 4000 maxBend
    
    # useful variables
    Alias J00 lastMSB
    Alias J01 lastLSB
    Alias J02 bendDiv
    Alias J03 halfDiv
    Ass J00 = 0 0 0 0  0 0 0 0  0 0 0 0  0 0 0 0  
    Mat bendDiv = maxTempo - minTempo
    Mat halfDiv = bendDiv / 2
    
    # generate and send PB version of given tempo
    Sub SendTempoPB pChan pMSB pLSB
       mat P00 = 80 * pMSB
       mat P00 = P00 + pLSB
       set LB0 P00 +D
       if P00 >= minTempo
       if P00 <= maxTempo
          mat P00 = P00 - minTempo
          mat P00 = maxBend * P00
          mat P00 = P00 + halfDiv      # enable rounding
          mat P00 = P00 / bendDiv
          mat I11 = P00 & 7F      # format bend bytes
          mat I12 = P00 / 80
          if I12 >= 80
             ass I12 = 7F
          end
          mat I10 = E0 + pChan
          send I10 I11 I12
       end
       end
    End
    
    End # Initialization ———————————————————————————
    
    # handle CCs. Assume LSB always comes second
    If MT == B0
       if M1 == MSBCC
          ass lastMSB = M2
          block
       end
       if M1 == LSBCC
          SendTempoPB MC lastMSB M2
          block
       end
    End
    
  • i don't see anything in the links you posted that indicates OnSong uses CC to send a tempo value. Perhaps I missed it. i didnt watch the 16 minute video. if the information is in the video only, please explain the details of the protocol they describe for sending tempo via MIDI CC.

    can you post quotes here or summarize how OnSong sends tempo via CC?

    Tempo information is typically not sent when using midi clock (midi clock doesn't send tempo). It is calculated from received clock ticks. Ableton Link includes tempo information but not via MIDI%

    Like @uncledave said:
    “ It looks like they use a pair of CCs for MSB/LSB, default 106/107. Not sure how you could use that in LP, though. They don't seem to support Link, which would be a much cleaner solution.”

    What I do in OnSong, is putting a MIDI CC with a value (example: “midi: CC10:127@0”). Then I put Loopy Pro in a learning state before I send the midi cc10 with value 127 (tempo) to channel 1 (@0). See the attached image from loopy pro.

    After the learning process in loopy pro, I can change the value I’m sending from OnSong — but with the 0-127 limit.
    Midi value 0 sets the tempo in loopy pro to 10.
    Midi value 127 set the tempo in loopy pro to 500 (100%).

  • edited August 2025

    If you change the maximum to 137 BPM, you could exactly hit any value from 10 to 137 with a single CC. Or make the maximum 264 to set any even tempo from 10 to 264.

  • @OlaRos : what tempo range do you need. There will be a way to set something up. But the details will depend on the range.

    @uncledave : unfortunately loopy pro doesn’t yet use pitchbend for incoming midi control but it is on our to-do list

  • @espiegel123 said:
    @uncledave : unfortunately loopy pro doesn’t yet use pitchbend for incoming midi control but it is on our to-do list

    Could he load AUM with my script, then use Link between AUM and Loopy Pro?

  • @uncledave said:

    @espiegel123 said:
    @uncledave : unfortunately loopy pro doesn’t yet use pitchbend for incoming midi control but it is on our to-do list

    Could he load AUM with my script, then use Link between AUM and Loopy Pro?

    There will be a method that won’t require that once we know his desired tempo range.

    Once we know the range, we can use streambyter to send different tempo ranges on different channels if the range is more than 128…and if a range of 128 is sufficient, it is just a matter of setting the midi binding’s settings.

  • edited August 2025

    @espiegel123 said:

    @uncledave said:

    @espiegel123 said:
    @uncledave : unfortunately loopy pro doesn’t yet use pitchbend for incoming midi control but it is on our to-do list

    Could he load AUM with my script, then use Link between AUM and Loopy Pro?

    There will be a method that won’t require that once we know his desired tempo range.

    Once we know the range, we can use streambyter to send different tempo ranges on different channels if the range is more than 128…and if a range of 128 is sufficient, it is just a matter of setting the midi binding’s settings.

    I think the lowest tempo in OnSong is about 40 bpm. I’m happy … if I can set the top of the top of the tempo to about 167 (40+127).
    The tempo range will then be 40-167.
    With this - limitation, I can send midi cc 0-127 from OnSong to Loopy pro - which also works when I tested.

    CC value 0 will set the tempo to 40.
    CC VALUE 127 wil set the tempo to 167.

  • wimwim
    edited August 2025

    Not to throw a wrench into anything, but just to note ...
    OnSong does appear to send MIDI Clock, which could also be used to control the tempo, and for other things such as start and stop.

    https://onsongapp.com/docs/interface/menubar/utilities-menu/editors/midi/settings/

  • @OlaRos said:

    @espiegel123 said:

    @uncledave said:

    @espiegel123 said:
    @uncledave : unfortunately loopy pro doesn’t yet use pitchbend for incoming midi control but it is on our to-do list

    Could he load AUM with my script, then use Link between AUM and Loopy Pro?

    There will be a method that won’t require that once we know his desired tempo range.

    Once we know the range, we can use streambyter to send different tempo ranges on different channels if the range is more than 128…and if a range of 128 is sufficient, it is just a matter of setting the midi binding’s settings.

    I think the lowest tempo in OnSong is about 40 bpm. I’m happy … if I can set the top of the top of the tempo to about 167 (40+127).
    The tempo range will then be 40-167.
    With this - limitation, I can send midi cc 0-127 from OnSong to Loopy pro - which also works when I tested.

    CC value 0 will set the tempo to 40.
    CC VALUE 127 wil set the tempo to 167.

    So, are you all set now?

  • @espiegel123 said:
    So, are you all set now?

    It works.
    But I would like to see a MIDI 14-bit solution (MSB/LSB) to achieve 16,384 steps and offer smoother control for parameters like pitch and volume. If I understand you correctly, it could happen.

    So yes, I'll settle for this, but I'll look into how I can send a cc value from OnSong that gives the exact same tempo value in loopy pro (40-167 instead of 0-127). I'll have to play around with StreamByter a bit.

    Once again - Thanks a lot for your input! You're all fantastic contributors!

  • It might be worth a try using MIDI Clock instead. That's how most apps and hardware sync with each other when they don't support Ableton Link. It should be plenty stable, especially if the two apps are on the same device. If they're not and you're using wifi to communicate, then perhaps not.

  • @wim said:
    Not to throw a wrench into anything, but just to note ...
    OnSong does appear to send MIDI Clock, which could also be used to control the tempo, and for other things such as start and stop.

    https://onsongapp.com/docs/interface/menubar/utilities-menu/editors/midi/settings/

    It's already been tried @wim. But OnSong drifts and is very unstable. It takes about 20-30 seconds before OnSong delivers a somewhat stable midi clock - even with midi clock over usb c cable (please see OnSong's own video a little further up in the discussion). And alter a short time (about 30-40 seconds, OnSong stops to send midi clock - even when the app can run in the background).

    OnSong can’t reproduce this error. And that’s really strange! I have this problem on my iPhone Pro and iPad Pro. Also after a complete reinstall on both devices …

    It’s a complete new discussion, but if you have OnSong by yourself, it would be very interesting if you could also test the following:

    1) Use Onsong and Loopy Pro on the same tablet. 2) Make Loopy Pro ready to receive midi clock (use virtual midi under the sync menu).
    3) In OnSong: activate midi clock and scroll to a song where bpm is set.
    4) When you now switch to Loopy Pro: what do you observe with tempo in LP? Does the tempo jump to a very low value - and stay there and drift for a while, before it stabilizes at the correct tempo?

  • Have you tried JustChords yet? It’s pretty neat and easy to use, syncs with iCloud, has a proper app for Mac, an AUv3 extension and is free (no subscription). Had been a longtime OnSong user but not looking back.

  • @jacou said:
    Have you tried JustChords yet? It’s pretty neat and easy to use, syncs with iCloud, has a proper app for Mac, an AUv3 extension and is free (no subscription). Had been a longtime OnSong user but not looking back.

    Never - but testing now. Possible to send midi-clock? How?

  • Hi @OlaRos , ok, I just thought it might be worth a try. I don’t have on song, so I can’t help with other testing. I feel like there could be some way to get a finer control over the tempo using that MSB/LSB, but I’m not sure I can pull it off. I’m glad you have something that is OK for now.

  • @OlaRos said:

    @jacou said:
    Have you tried JustChords yet? It’s pretty neat and easy to use, syncs with iCloud, has a proper app for Mac, an AUv3 extension and is free (no subscription). Had been a longtime OnSong user but not looking back.

    Never - but testing now. Possible to send midi-clock? How?

    Sorry I’m not actually using that midi clock feature. But from what I read about that AUv3 extension it should work. I hope you’ll find out. Otherwise there is a JustChords Discord server with the dev and other friendly people that surely can help with that :)
    https://discord.gg/y6ZBfUFp

  • wimwim
    edited August 2025

    I don't think that JustChords can send MIDI Clock at this time, but it sounds as though the developer is interested in adding that functionality. Such a wonderful developer. 👍🏼😎

    It can send midi messages on song load, but then you have the same precision issue as with OnSong.

  • wimwim
    edited August 2025

    Hi @OlaRos - is that you (Olav) active in discussion with the developer on Discord recently?

  • JustChords can be run as an AUv3 plugin in Loopy Pro. You could conceivably control the song switches and tempo switches in Loopy Pro and JustChords would follow along. For instance, you could have a stepped dial that would load the songs you want and set the tempo.

    I suppose you could use the same approach with OnSong. Loopy is so flexible with it's widgets and actions that you might save yourself a lot of trouble by controlling things the other way round.

  • Foregr> @wim said:

    Hi @OlaRos - is that you (Olav) active in discussion with the developer on Discord recently?

    … yes

  • wimwim
    edited August 2025

    Hey @olaRos. I noticed OnSong can be programmed send tap tempo. I suspect that would be the ideal method for OnSong with Loopy Pro.

    Tap can set tempo on devices that receive tempo using a "tap for tempo" style input. OnSong can be configured to send this as one or more MIDI events.

    It's a premium feature though. I don't know if you have that.

    The tap feature of OnSong will send a MIDI event every time a quarter note is performed according to the tempo set on each song. On some MIDI equipment, this can be used to set the tempo instead of using MIDI clock which sends 24 MIDI events per quarter note, or sending the BPM as Control Changes.

    To configure OnSong to send a MIDI event for each tap, choose a channel. By default, tap is disabled. You can enable it by choosing On all channels or a specific channel.

    Tap on the wrench icon to set the MIDI commands to send for the tap. This will open the Tap MIDI Commands screen where you can type in a MIDI command using OnSong's MIDI syntax. The default value is to send a value of 127 on Control Change #105. You can change this value here, or use commas to specify multiple values.

  • nvm. I think Loopy Pro rounds off tap tempo.

Sign In or Register to comment.