cc117 (tap tempo) bug? (Version 1.85)

Hi BeatBuddy developers

When I assign a controller button (GuitarWing) to send cc117 (tap tempo) it won’t work untill I have visited “Main Pedal” > Midi Messages > MIDI IN > Control Change (CC) > Tap Tempo (CC.117) and disabled > (re)enabled it.

When the pedal has been switched off and restarted I have to repeat the procedure for it to work.

It took some time fiddling with the cc-assignment software (for GuitarWing) untill I found out that it was the BB setting for cc117 which had to to be switched off and on again.

Is it a bug?

Yours sincerely Måns Mårtensson

Just to let you know I have seen this post and am looking into it.

Any update on this? Can we send CC-117 without a data bit and get into tap tempo mode?

CC’s are three byte commands:
Byte 1 - Command type (CC) plus Channel number
Byte 2 - Command number, eg 117
Byte 3 - Value for the CC command
You cannot just send two bytes and expect it to work because whatever is listening for midi input is going to be waiting for a third byte. Even worse, if you only send two bytes for a CC command and then send another midi command, it will take the first byte of the following command as the 3rd byte of the CC, then take the 2nd byte (assuming there is one) of that following command as the next command. At that point, who knows what he heck will happen!

@Big E, thanks for the explanation, but I’m still too dense.

From the BB MIDI documentation, I get this:
CC-117 Enters Tap Tempo mode and generate Tap Event.

So, for byte 1, channel 1 plus the CC which is 117, would be 118?

Byte one tells the receiver what the following data is (and what channel it applies to). In this case you are telling it that the data coming is is a CC on channel 1. The actual information starts in byte 2 (which for a CC is the CC number, 117 in this case).

Byte one is split into two ‘halfs’. In the interest of keeping things simple (I hope) I’ll explain it like this:

The first ‘half’ is always the decimal number 176
The second ‘half’ is the channel number starting at ZERO (for channel 1) through 15 (for channel 16). Basically the value is the channel number minus 1 (It’s a computer thing, don’t worry about it).
To get the value for byte 1, you add the two ‘halfs’ together.
So, for channel 1, the second ‘half’ is zero. Adding them together you get 176+0 = 176.

Byte TWO is the cc number itself, so for tap tempo for the BB, it is 117.

Byte three is not used by the BB for tap tempo so you can just code zero.

So for tap tempo, you’d need to send (in decimal) the following three numbers for channel 1

176,117,0

Does that help?

all of that makes perfect sense. Thank you. I’ll report as to how it works!

BAH! I got nothing with this: 176,117,0
I’m baffled at this point. I can send all manner of other CC commands successfully, but not tap tempo. I’m starting to suspect that there needs to be something more, sent prior, and potentially after, the 117 command, but the BB manual is less than helpful there.

CHANGE BB SONG FOLDER:
MIDI.sendControlChange(0,0,1);
MIDI.sendControlChange(32,folder,1);
MIDI.sendProgramChange(song,1);

TRIGGER FILL:
MIDI.sendControlChange(112,127,1);

MIDI set tempo to 120:
MIDI.sendControlChange(176,106,0);
MIDI.sendControlChange(176,107,120);

Increment (97) or Decrement(96) Tempo by 1
MIDI.sendControlChange(97,1,1);
MIDI.sendControlChange(96,1,1);

//— change volume on BB to XX%----------
MIDI.sendControlChange(108, XX, 1);

// change BB drum set to x
MIDI.sendControlChange(116, x, 1);

// Pause/Unpause BB

MIDI.sendControlChange(111, 127,1);

// Initiate transition on BB
MIDI.sendControlChange(113, 127,1);

START
MIDI.sendControlChange(114, 127,1);

TRIGGER OUTRO
MIDI.sendControlChange(115, 127,1);

Wait, are you using an Arduino or other hardware to send the CC’s via software?
I thought you just wanted the raw data.
If using the Arduino midi library (looks like you are) then it would be:

MIDI.sendControlChange(117,0,1)

That’s CC 117, data value 0, channel 1

I’ve tried all manner of apps and libraries, though yes, I’m currently working with Arduino’s MIDI library.

I wasn’t successful with MIDI.sendControlChange(117,0,1) either…

I see you’re working with Arduino too… have you had any luck getting BB to respond to CC117?

I’ve not actually used tap tempo, I’m just basing my answers on what ‘should’ work and my knowledge of the Arduino midi library.
I’ll give it a try though if I get time.

The other thing that occurs to me is that I don’t think you can send just ONE tap temp CC, you have to send a bunch of them at the tempo you want, otherwise how would it know what tempo you actually wanted.

I figured the CC117 would open the tap tempo screen and allow for the sending of more CC117’s, but it doesn’t appear to even do that. I’ve also sent multiple 117’s and nothing. I even opened the tap tempo screen manually with a foot switch so that I could see the green dot and while sending CC117 the green dot doesn’t blink to indicate a tap.

Well I just tried it and I cannot get it to work either.

Success with a capital Suck.

This works: MIDI.sendControlChange(117,1,1);
However, like the OP said, it’s buggy and doesn’t always work when the BB powers up. Sometimes you have to disable the CC117 and then Re-enable it.

Thank you Big E. Now BB folks, please squash the bugs!

I thought about trying that but I’d powered my pedal board off and couldn’t be bothered to plug it in again!
However doc says data value not used to it should not care what you put there.
As you say, it’s obviously buggy.
Thankfully I don’t need to use it as I set the tempo explicitly with CC 106 and 107 which works just fine.

:smiley:

yeah, oddly enough the manual says “not used”, but apparently you can’t send a 0 or it won’t work. Sending anything from 1-127 does work… so the documentation needs an update.

With my MIDI remote project, I wanted to hit a button and have the drummer be able to use his kick drum to establish tempo. Progress!

Bump :slight_smile: