Before posting, please read: When to use this forum, when to submit a help ticket

Getting MIDI files to work

Started by go2ldook, June 03, 2019, 09:47:12 PM

Previous topic - Next topic


Trying to create .mid files in FLStudio for use with Bandhelper, and wondering what I could be doing wrong. I have searched Bandhelper forums, read FLStudio tutorials, searched their forums...
Here is what I have tried:
1) Create .mid file in FLStudio:
-I use their MIDI OUT plugin to enter the CC changes I want
-Set the Plugin for correct channel (in this case my looper, channel 12)
-Configure the MIDI OUT plugin to send a RECORD CC by entering the correct CC of 24. Make sure that is active, and turn the dial to 1 so it sends a 1 value which turns on Record
-I have the Port set to 0...this is where I am uncertain. In Bandhelper the port I select for devices is "iConnectMIDI", but in FLStudio, only options are port numbers. Have looked on their website and they don't seem to indicate anything about a port number setting for the iConnectMIDI1 device I am using
-I assume the way this works is, in the sequencer I create a Pattern, and put in places within the sequence where I want the Looper triggered to RECORD, and in my Channel Rack I have just clicked the first beat of the measure on the MIDIOUT plugin channel. I assume when that is activated it send all active MIDI data in that channel, in this case the only active data being the RECORD CC
-Next I export the .mid file

2) Import the .mid file into Bandhelper
-I click on the Recordings tab, click EDIT and add Standard MIDI File, selecting the one I just created. That has not worked
-I have also tried adding the .mid file as a 2nd recording under the Song tab, and set Bandhelper to play the first 2 songs simultaneously. That has not worked

I am using MIDIOX to monitor for the MIDI output. It shows the transmission of my MIDI Presets (as it should, I have had no issues with other MIDI functions), but when I play the recording, no additional MIDI data comes through.

Any thoughts on what I am doing wrong? Is it the port settings for the iConnectMIDI1?

My goal here is to automate Preset changes on my guitar Pedalboard (using a PBC Mastermind) and especially automate RECORD,PLAY and STOP command in songs for my looper to take human error out of loop triggering. I would also prefer the MIDI beat clock data come from the MIDI file, though it could also I suppose come from Bandhelper's MIDI beat clock


Assuming you're using an audio recording as a backing track and you want everything synced to that, then the correct setup is to attach to the SMF file to the recording (not attach it to the song as a second recording).

I don't know what FLStudio would mean by a port number. Does it have a way to not set a port, or to set to all ports? You might have to ask them for clarification on this.

You can click the MIDI icon in the top toolbar to see BandHelper's own MIDI activity log, and the data from your MIDI file should appear there as it plays, even if it's not routed correctly to the receiving devices. So getting that working would be the first step.


I am trying the FLStudio forums. The only options are Ports 0-255, and I have tried Ports 0-3 to see if any would work, and nothing.

FLStudio exports a .mid file, which I assume is SMF. My understanding is that SMF is the MIDI standard, and .mid is the file extension.

I look at the activity log and the only MIDI activity is the MIDI PResets. Nothing from thsi MIDI file, so I think MIDI file creation is the issue.

Very frustrated.


Yes, .mid should be an SMF file. Can you either attach one of your files here, or submit a help ticket if you don't want to post it publicly?


So my problem was a quirk in FLStudio. They have a whole section under options for Midi Setting, but there is also just a separate selection under options that you have to make sure is checked for "enable MIDI out".

THAT SAID, my advice for anyone who is wanting to create MIDI files to control they gear is to NOT use your Sequencing program. Maybe some others do it better, but FLStudio is a little work and I found some challenges:
-No way I could find to put in PC messages to changes Presets during a song, and I read somewhere that PC changes are only available at the beginning of the MIDI file. While this may be true for MIDI files created in FLStudio, it is NOT the case in general. But I was having to work around this by controlling the individual loops on my loop switcher using CC's instead of the Presets I had created with PC's, and this was cumbersome. It also led to the realization that...
-You cannot fine tune the placement of CC's within FLStudio. You can turn the "Snap to" settings to NONE, but even at highest magnification of the measure, it will snap to a small increment that can leave you with gaps between CC's that are noticeable during play (Like if you are needing to turn off your mod effects while at the same time turning on overdrive for a chorus). Why not just put those CC's at the same point in time and trigger at once? Because....
-CC's are SERIAL commands. If you overlap them in time on your sequencers, things will not trigger. Even the most miniscule spacing in time and they work great. I spent a whole day learning this (synth guys chortle in the background). With the sequencer I tried setting it up with a running automation bar through the song that would alternate between the values for ON and OFF of a command. Quickly learned that you need a small slope when changing values or screwy things happened. Later learned it was best to create separate ON and OFF automations and put only a single DOT of data in the automation, and place it where needed. Still, I could not get the commands close enough to make changes of multiple pedals simultaneously work well, because the smallest space between commands was just too much. Soooooo....

***************************DOWNLOAD MIDIEDITOR FOR FREE!!!!!!!!!********************************************
Again, synth guys roll their eyes in the backgraound and say "well DUH!!!"

So I switched to MidiEditor. I just thought there had to be some program for editing .Mid files, searched and there it was. I find it mildly clunky to use, but you can figure it out easily enough. With this you can either edit .Mid files you have made, or just create new ones. which is what I am doing for each song. Here are some highlights and tips:

1) This program allows you to place CC's and PC's on your timeline easily, just have to select parameters. For PC's you just select the program # and your MIDI channel (they number 0-15, not 1-16, so make the adjustment). For CC's you select the CC, the value you want, and the MIDI channel. Keep in mind that these commands CANNOT OVERLAP in time. You MUST have some space between commands, whether PC, CC, or Combos of the two. The overlap can be miniscule, and in the settings window for the command, they show you what "tick" in time you have placed the commands. If you have 2 commands you want performed simultaneously, just manually change the "tick" by a value of 1, and you are set. You could also nudge the little bar for the command, but you can get it closer by manually changing the value. Note the BARS on the timeline that represent your commands may overlap visually, as long as the "tick" in time where they start does not overlap.
2) Of course, you can also trigger notes in a synth with this program. I was mostly interested in commands.
3) You must also click on the TEMPO bar at the start of the timeline and enter the song tempo that you are trying to line up with.
4) For some reason that I cannot figure, the .Mid file does not line up as well with the songs when created in MidiEditor as they did when created in FLStudio. My work-around, which is easy enough, is to SELECT ALL when done and tweak the commands by sliding them a little to the right on the timeline. As I type this, I am thinking that maybe the issue is that the FLStudio files had a START command attached, and the ones I have created in MIDIEditor do not, and rely on the START Command that Bandhelper initiates, which may come briefly before the song autoplays in Bandhelper. I will investigate this theory further today.
5) OH....if you are creating a NEW file, you will be frustrated because MidiEditor only gives you 10 measures to work with. You have to go into TOOLS dropdown and there is a section SET FILE DURATION. I set it for 300000 which is more than enough for most songs, but you can input any value.

So I am not using this to change presets on my loop switcher and also record, play and stop loops during a song. The looper management was my main goal and it works well. I do have my looper (Pigtronic Infinity) set for MIDISYNC function and Bandhelper provides the Midiclock.

A quirk I found between using FLStudio and MidiEditor as far as running the looper: in FLStudio I could just place the Looper Rec/Play and Stop commands right at the start of the measure and it works fine. With the MidiEditor, I was having issues where the Stop and Play commands were not working right. The Play would trigger and show the loop queued up to play, and play at the next measure. When you have MidiSync enabled on the Infinity Looper, they suggest you trigger the loop JUST AHEAD of when you want it to ensure the loop plays or stops at the right time, because it quantizes the loop. Why this was not an issue in FLStudio files, I am unsure...maybe due to the START command theory I suggested. On my Infinity Looper I have it set to AUTO ZERO RECORD, which basically, as I understand it, retimes the Midiclock to your first loop record (the midiclock signal from Bandhelper obviously remains the same, but Infinity Looper recalibrates to respond consistently 3 milliseconds off the Midiclock beat, for example. Anyway, so the simple solution was to bump all looper commands AFTER the first record command back a little in time, and now they trigger fine.



@go2ldook thanks for describing your MIDI issues and solutions in such detail!

FYI I also had 'learning curve' issues when exporting SMF files from my DAW (Reason), primarily for guitar patch changes and for synchronized lights.  Eventually I figured out that:
(a) The MIDI port number within Reason was 'don't care' when played back from BH through an iConnect to downstream equipment. (It's used within the DAW routing, but ignored in the outside world).
(b) The DAW would export the SMF with all tracks set to MIDI channel 1 regardless of what I set it to within the DAW (!).
(c) By observation I determined that the lighting MIDI events needed to be delayed by 100 msecs relative to the audio backing track when both are played by BH, so that tightly synchronized lights appear 'in the pocket' with the music.  (This delay nets out a small fixed delay from MIDI to backing track audio playback from BH (perhaps due to iPad libraries used by BH), as well an opposing delay from my lights playback chain: lighting MIDI events from BH (iPad) -> iConnect -> lighting sw (Luminair) on another iPad -> WiFi -> DMX -> physical lights.)

Fortunately I didn't have to go completely outside the DAW like you did with FLStudio, but now my workflow includes:
1. Enter MIDI events within the DAW for lights quantized to sync with the music.
2. Add a delay of 100msecs to all light event MIDI events except the first event.
3. Export the MIDI file from the DAW.
4. Use a free MIDI program (Anvil Studio) to edit this MIDI file and perform the one simple edit of changing the MIDI channel from default 1 to the right channel for my lights sw.

Thanks for the tip about MidiEditor... will check it out too!


So FLStudio has a thing with MIDI files where, prior to export from a standard new project file, you have to go to TOOLS>MACROS>Prepare for MIDI export, otherwise the MIDI file does not work. Not sure if that is maybe the issue with your DAW, and they have some initial prep thing you should be doing.

In FLStudio, the weird thing is that all my channels I have created with custom CC's then disappear, and I had to re-enter all the channel info. I then saved a Template from this with all my channels, so I would not have to do this each time. I later read in FLStudio, that after you click "Prepare for MIDI export", you should export the MIDI file but not save the Project, a reference to this behavior. So I guess the original MIDI channel data is there for export in the background even though the channels look cleared.

At any rate, MIDIEditor eliminated a lot of headaches.