MIDI-Assistant - Free software tool for RC-50, RC-300 and RC-505

Started by Loopmaster B., January 04, 2021, 09:32:07 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Loopmaster B.


https://rc50looper.jimdofree.com/midi-assistant/

MIDI-Assistant - Free software tool for RC-50, RC-300 and RC-505
Sometimes I wished the pushing of the RC-50 pedals could be kind of automated, so I could concentrate on playing. When checking the MIDI-functions of the RC-50, I found out that this is really possible (to a certain degree; later I found out it is completely possible with an RC-505). So I bought an USB-to-MIDI interface and started exploring with it. I found the free downloadable "Bome Send SX" software by googling, which I used to check which messages are sent by the RC50 or other MIDI-devices - and how the RC50 reacts to which MIDI messages. There might be a lot of MIDI-software available which can do the job of sending the needed MIDI messages at the correct timing, but I decided to try programming one myself. I found the C# MIDI Toolkit by Leslie Sanford at Code Project, and wrote a little MIDI-assistant software. You can Download it from my GMX-Cloud here:

Download MIDI-Assistant
Download Sources (C#)
What you need to use the MIDI-Assistant with your looper:

*) A windows computer or laptop with an USB interface and .NET framework 4.0 being installed

*) an USB to MIDI interface with one MIDI-IN and one MIDI-OUT channel, like this:

https://www.thomann.de/at/thomann_midi_usb_1x1.htm



How to connect:

*) Connect the MIDI-IN of the looper with the MIDI-OUT of the USB-to-MIDI-interface (out of the PC - in to looper)

*) Connect the MIDI-OUT of the looper with the MIDI-IN of the USB-to-MIDI-interface (out of the looper - in to the computer)

*) First connect the MIDI interface to the PC, start MIDI Assistant, then connect the interface to the looper.  If you don't follow this sequence, you migh get some error messages. Try sending a few commands - if you get an error message, restart MIDI assistant and try again. Once some commands can be sent without error, the program runs stable.

*) For the RC-505, it works to just connect PC and looper with an USB cable. System / USB MODE must be set to AUDIO/MIDI for this



What can the MIDI-Assistant to for you:

When you push START on the looper,  the MIDI-Assistant gets a MIDI-Start message and starts counting the MIDI-Clock messages being sent out from the looper. 24 MIDI-Clock messages are sent within one quarter beat, so the timing is very accurate. The MIDI assistant exactly knows the current quarterbeat of your performance, and it can send a MIDI-message to the looper after each desired number of received Clock-messages beginning from performance start.



Available messages:



I) Special for RC50:



*) Start: starts the currently selected phrase, or all phrases which are set to SimulStart in the patch-settings. This does only work if MIDI-Sync is set to REMOTE in the System-Settings and in the Patch settings



*) Stop: stops all phrases and the guide. This does only work if the MIDI-Sync is set to REMOTE in the System-Settings and in the Patch settings



*) Program Select: switches to the selected patchnumber. Recording of the new selected Patch starts immediately if it is empty, otherwise playing starts. If the already selected patch is sent, all unsaved recording is cleared and the current patch starts over, like it was just selected.



*) CC#1 or CC#7: lots of settings can be adjusted with the CTL/EXP PEDAL button on the RC50 what CC#1/CC#7 can do on the RC50. Sending Phrase Levels is very useful to simulate Single Mode in Multi Mode - with this, it is possible to start recording immediately in simulated "single" mode when a phrase is changed, which is not possible usually. See Task 11 at START page.



*) CC#80:  lots of settings can be adjusted with the CTL/EXP PEDAL button on the RC50 what CC#80 can do on the RC50. I usually use it for UNDO, so it avoids getting me busy with Task 1 (see start page). I also tried sending CC#80 for switching PlayMode from Multi to Single - all phrases stop, but a Start message can follow up to keep playing - give about one quarterbeat after the CC#80 before sending start in this case, otherwise nothing will happen (you can place a defined pause here and play a fill).

Unfortunately CC#80 is ignored if being sent in the wrong timing. After pushing a pedal, give about one quarterbeat time before sending a CC#80 message. But AFTER sending CC#80, there is no time-limit, so it works very well for UNDO.

Please note that Data2 of the MIDI-message must have at least a value of 64, or the message is ignored in any case by the RC50.

One nice idea: You can set the cursor at the send-button of CC#80 and use the SPACE-bar as additional pedal.



*) Using MIDI-relays: The RC-50 has 4 footswitch inputs - these inputs can be used with MIDI-switchable-switchers, so called MIDI-relays or MIDI-switchers. These switchers can be automatically switched with the MIDI-Assistant. This gives you the possibility to automatically trigger up to 5 pedal actions by MIDI. Check the internet for MIDI-relays, for example here: https://www.microdesignum.cz/EN/eshop/MIDI-Switchers/



II) RC-300 and RC-505:



*) Program Select: switches to the selected patchnumber. Recording of the new selected Patch starts immediately if it is empty, otherwise playing starts. If the already selected patch is sent, all unsaved recording is cleared and the current patch starts over, like it was just selected.



*) CC#1  -#31, CC#64 - #95

Each CC can be assigned to a specific action in the Assign Switch parameters. For example, to Start/Stop Playing of Track1 with CC#1, make the following Assignment in one of the Memory / Assign Switch settings: Source CC#1, Target TR1 PLAY/STOP. For switching by MIDI, the Source Mode has no effect ("TOGGLE" and "MOMENT" act equally). Values for Data2 must be within zero and 127. If a single switching action is assigned, a Data2 value between 64 and 127 switches to ON-state - can be seen as "Pedal pressed" state. A value between zero and 63 switches to OFF state - can be seen as "Pedal not pressed" state. So, if you want to use a specific CC multiple times for the same switching action, you have to send CC#x Data2=64 (switch ON - action happens; like pressing a pedal and keeping the foot on the pedal), CC#x Data2=63 (switch OFF - nothing happens; like lifting the foot from the pedal), then send again CC#x Data2=64 (switch ON - action happens again). Sending just CC#x Data2=64 multiple times has no effect!  This would be like pressing a pedal and then try to press it again without lifting the foot...

Within MIDI Assistant, I recommend to use a CC-Ramp with Data2-value starting at 64 and ending at 63 with at least 50 ms duration (100 ms are even better) - so this uses just one single table entry for each time the switch-action should be triggered. Probably this is the case also for the RC-300 (I don't have one).

As opposed to the RC-300, on the RC-505 each single pedal-action can be mapped, even RECORDING  => fully automated looping without any interaction is possible on the RC-505! (A dream has come true :-)



=> See demo video



Instructions:




After Starting, the MIDI devices selection dialog comes up. If your USB-MIDI interface is not plugged in, click "Cancel" to use the program anyway. The selection can be done later on in the MIDI-Menu



When using an RC-505 with MIDI over USB, just select "RC-505" for Input and Output



Main Screen:


In the Messages Group, all messages can be edited. The green background shows the most relevant data for editing. MIDI can only send data from zero to 127, so don't enter any numbers bigger then 127.



In the Ramp group, you can send value-ramps of defined duration, for example to fade out a specific track. Within the duration, Midi-messages are continously sent, starting with the startvalue and ending with the endvalue. All running ramps are shown next to "RunningRamps", until the duration is passed. For an RC-300 or RC-505, a 50 ms ramp starting with 64 and ending with 63 can be used to trigger a single switch-action.



In the RC-300 / RC-505 group, you can define the CC# number and MIDI-channel to trigger an action assigned in the Assign-switches of the looper.  On these loopers, this is similar to trigger an action with a MIDI-pedal - you have to push the pedal (a value >= 64 is sent), and release the pedal (a value <= 63 is sent) before you can push the pedal again. So the MIDI Assistant uses a Ramp where first a value of 64 is sent (switch ON), and after a duration of 50 ms, a value of 63 is sent (switch OFF) - this is like pushing and releasing a pedal.



Below the Ramp-group, there is a list with all files contained in the subfolder "Songs", which is created automatically in the path of the MidiAssistant.exe. When selecting a file, it is loaded automatically - so you can step through all the songs you need for your gig by just using the down-key. Doubleclicking the currently selected file reloads it.



With the "Send Now" buttons you can directly send the message to the looper for testing, or for using the MIDI-Assistent as an additional Pedal: select the wanted "Send Now" button with the TAB key, and press SPACE to send the message. Putting the keyboard on the floor, you can push SPACE with your feet and have an external Pedal.



When you start the performance on the looper, it sends out a START MIDI-message, and the MIDI Assistant starts counting the Clock-Messages coming from the looper. At each Quarter-Beat 24 Clock-messages (Clock-Ticks) are sent. The current number of Quarter-Beats received since performance start can be seen in the "Quarter Beats" field. A green indicator flashes with each Quarter beat.

When your performance includes multiple parts, and you want the Assistant to start counting when you start a later part (patch), you can check the "Ignore next startmessage" checkbox to ignore the inital startmessage.

REMARK: When the Guide is set to 6/8, the Quarter-Beats are defined on eight-beats 1, 3, and 5.



Even when you stop all phrases, the looper keeps sending Clock-Ticks. So you can place a break for a fill with Stop, while the Quarter-Beat number keeps increasing. To Stop counting Clock-Ticks, click the "Stop" button. To start a new performance or restart the current one, click the "Reset" button - the MIDI-Assistant waits for a new START message coming from the looper.



With the buttons within "Live Recording", you can insert a MIDI-message at the current timing into the sending-table. When the message should be also sent to the looper when inserting, check the "Send when inserting" Checkbox. When you want to place the message exactly at a Quarter-beat, check "Insert at nearest Quarterbeat" - but beware of Quarterbeats not being heavy beats in 6/8 or other measures using 1/8 notes.



You can also add messages to the sending-table without starting a performance. Click the "Add New Message" button or select "Add New Message" in the menu appearing after right-clicking the table. Edit your message here, you can also put some comment:




Each message in the send-table can be edited by double-clicking it, or by right-clicking it and select "Edit message" in the appearing menu. In this menu "Delete message" is also possible.



Increasing/Decreasing the beatcount-number of one or multiple messages can be done by selecting the message(s),  do a right-click and select the corresponding menu entries.



After finishing, save the send-table with File / Save or File / Save As...



After starting performance, the messages in the table are sent automatically exactly at the programmed Clock-Ticks after starting. Each message which was sent gets a green background.



REMARKS:

- if you want to send multiple messages at the same time, just place them one after the other with the distance of one Clock-Tick. So the MIDI-Assistant starts sending the first message, and continues with the next message without waiting for the next Clock-Tick to happen. So all consecutive messages with the distance of only one Clock-Tick to the previous message will be sent one after the other without delay (one message takes about three milliseconds). Be sure to use version 1.0.0.5 or higher for stable operation

- If you send multiple ramps for switch-actions on the RC-300/RC-505 at the same time, be sure to use at least 100 ms ramp duration for each ramp. Use different ramp durations for each ramp, so the ramps do not have to send the ramp-end messages all at the same time. When using multiple 50 ms ramps at the same time there is a risk that one of the switch actions is just skipped...

- Program Change messages might be ignored if you are currently adjusting some parameters in a submenu of the looper.

- RC-50: CC#80 messages might be ignored if sent within 500-1000 ms after pushing a pedal. The message triggers an action each time it is sent

- Start/Stop messages are only available on the RC-50. To use them, MIDI Sync has to be set to REMOTE (both in System and in Patch Settings)

- The MIDI Assistant surely can be used also for other MIDI devices

- You can also switch sounds of a MIDI guitar-effects-board with the MIDI-Assistant during performance. Use separate MIDI-channels for the looper and the effects board (System / MIDI Omni must be set to OFF). You will need a MIDI splitter cable to split the MIDI OUT of the USB MIDI interface for connecting it to the MIDI IN of the looper and also to the MIDI IN of the effects board.

- ATTENTION: there is some bug with sending a message at BeatCount one, ClockCount zero - if necessary to send a message at the very beginning, place the first message at BeatCount one, ClockCount one



Release Notes:

V1.0.0.0: Initial Version
V1.0.0.1: Fixed glitches during Single Mode Simulation
V1.0.0.2:
* ATTENTION - COMPATIBILITY ISSUE: Midi-Channel stored with previous versions is increased by one!
* Made display of Midi-Channel starting from 1
* Made Program Change Data1 display starting from 1
* Made QuarterBeat display starting from 1
* Added Ramp feature
* Added Songlist
* Added Xchange buttons
* Added checkbox to ignore next Start message
* changed extions of Midi-Assistant files to *.txt; *.mas files can still be used
V1.0.0.3:
* Added RC300/RC505 group box
* Changed display-format of Ramp in table
* Changed Default ramp values in "Add Message" for usage with RC300/RC505 switches
* Changed some labels
* Changed TAB order
* Added default songs
V1.0.0.4:
* Fixed display of Beatcount going out of sync
* Value Ramp sends first message before starting ramp-thread
* Remember Scrollposition after editing/adding messages
* Added context menu entries "Increase Beatcount" and "Decrease Beatcount" for all selected messages

V1.0.0.5:
* Changed duration for RC-300/RC-505 switching ramps to 100ms
* Fixed wrong colouring of sent messages
* Fixed index out-of-range exception
* Fixed Enumeration modified exception
* Enable sending message at ClockCount zero -ATTENTION: still some strange behaviour, don't send anything at ClockCount zero




"Hands-free Live Looping"
I made a little demonstration video on how my MIDI-Assistant software can be used for fully automated looping with a BOSS RC-505 looper. No interaction at all necessary during performance, so one can concentrate on playing.

RC-505 setup-info and script for MIDI-Assistant software can be found in the description of the video.

MIDI-Assistant description and free download available here:
https://rc50looper.jimdofree.com/midi-assistant/

See my original posting here:
https://www.vguitarforums.com/smf/index.php?topic=29120.msg212218#msg212218

https://rolandcorp.com.au/blog/how-to-get-hands-on-with-your-looper


Loopmaster B.

Hi, in the video here I covered "Unsquare Dance" from Dave Brubeck as a Guitar-Live-Looping-version with my BOSS RC-505. The looper is fully automatic-controlled with MIDI-Assistant.

Additionally, as the sound-switching in my arrangement is a bit time-critical, I use MIDI-Assistant to also switch the sound automatically in time.
The video shows how this works (I use a BOSS ME-80 effects board).

The script for the MIDI-Assistant can be copied from the video-description of the Youtube-video.

Have fun!



Loopmaster B.

Now I want to show you the latest feature I included, which I think is very useful: MIDI-Assistant can play MIDI-files in sync to the looper (the MIDI-Clock-messages of the looper drive the playback of the MIDI-file)

So you can download MIDI-drumloops and use them as drumpatterns for the looper, played in a loop without losing a Track for them. The Start/Stop-button triggers playing/stopping the MIDI-file, the tempo follows exactly the tempo of the looper. The looper-internal drums can be put to volume 0.

Or you can use a complete pre-arranged drums-Midi-file for the whole song, and play it in sync to your performance - like in the video.

The sound can be created by the Windows-internal "Microsoft GS Wavetable Synth", or by any drums/sound software, or by an external drumcomputer. Via the USB-port the sound can be led from the PC into the looper, and routed directly to the looper-output without being recorded (except you want to - adjust the routing accordingly)

::) ???
A detailed description can be found here:
https://rc50looper.jimdofree.com/drum-solutions/

Here is the video - looper setup and script for MIDI-Assistant can be found in the video description on Youtube: