Addresses issue 66: wav file location when processing Drumsets
Fixes in Midi Export:
Midi Export in the original BBManager was not working for many beats, resulting in invalid midi files, note overlaps, no BPM info, etc. Here the code is re-written, and seems to work fine. For patterns with Pickup Notes, the Midi file created completes a full bar, and adds the string “(Pickup)” at the end of the file name.
New Bulk Export feature:
Under tools, you’ll find the “Bulk Midi Export (Alt+F9)” option. This option exports all the midi files in the current song folder. The process creates a folder inside user_lib/midi_sources (within BBWorkspace) named “Bulk Midi Export”. It creates a subfolder names as the Beat Buddy song folder (in the lefthand tree of the BB Manager application), and the a subfolder for each song. It adds the BPM and Drum Kit Name to the folder name of each song (e.g. “Blues 1 (BPM 100) (DrumSet Standard)”). Within each song subfolder, the process exports all the midi files of the song, adding the part name (a.Intro, Part 1, Part 2, z.Otro), the the loop type (a.Main Loop, b.Fill, c.Transition), and then the actual file name that appears on BB Manager.
Using it:
You can compile the fork yourself, or you can use a pre-compiled version for Windows I made. You should first install the original BeatBuddy Manager, and set up your project and the BB Workspace. Then download this zip file file from releases and extract into any folder in Windows, from where you can run the included BBManager-MidiExport.exe file.
so did you do anything to make it work with an external midi editor ?
when i right click and edit i want the file to open in an external midi editor of my choice.
i dont want to export midi file. i want to edit the file where it is. maybe with renamed original or undos available. i installed it. it closed BBMlean during bulk export a menu opened and closed. i must need the QT components. the link downloads QT unified windows 4.6.1 a lower number that instructions. downloading
Hi! Of course!
This is a new version of the Beat Buddy Manager (the software created by Singular Sound to manage Beats), which changes 2 things vs the original software:
Midi Export works correctly (it’s mostly broken in the original software)
It lets you export all the beats (intro, main loop, fills and transitions for each part, outro) of all the songs within a folder with only one click
To use it, you have to download this zip file , unzip the whole folder to your PC, and tun the exe file within that folder… Hope this helps!
Hi! Unfortunately not, and I don’t think that having BB manager edit beats in an external midi file would be an easy task. The BB manager translates midi files into its own internal format. When you edit a beat in BB manager, the system is not using midi data at all (nor the original file where that data comes from), but what it has in it’s memory, that is stored in this own format. (BB song files are also stored in this format)
As far as I know, in order to edit a beat in an external midi editor, BB Manager should first export the beat from it’s internal format to midi (which the original BB Manager does incorrectly), save the midi file in a temp folder, have the external midi editor open that midi file, have it save the modified file somewhere, automatically load modified midi file, and translate it again to its internal format.
With this version of BB manager, you can at least export all beats with one click, edit the ones you want to modify in an external program, and re import them. A very unproductive way, but at least you can do it.
Regarding the fork not working - did you extract all the files in the zip? It was working ok for me, should have all the required QT dlls. In any case, I’m traveling until early next week, when I’m back at my home PC I’ll do some more tests and get back,
Alternatively of course, you can run the program from QT creator. You’ll need to download version 5.12.4 of QT, Microsoft Visual C++ Compiler 14.0 (amd64) and QT creator - instructions in the read me file.
Thanks!
I’m not going to defend the BBManager many limitations and bugs, far from it, but I’d like to set the record straight-as per my understanding and experience- regarding the BB MIDI files being wrong when exported.
I don’t usually export the BB MIDI files to use-modify in my DAWs because I make 99.9 % of the BB songs I use (in the hundreds). But I haven’t had any issues using the BB exported MIDI files in my DAWs. The one thing that perhaps makes them look “wrong” is the superposition of MIDI notes in some cases, which I believe comes from the different note lengths created during the live recording of the beats -as opposed to a Step Sequencer approach, which I use in my DAWs (but I also vary note lengths as needed)
It’s my understanding that the different note lengths are associated to the Legato of the notes during the live recording and MIDI translation. The Legato creates different nuances in the way a particular instrument sounds -like in the duration of a cymbal splash, etc. Still, I normally select all the notes in my DAWs and change their duration to a fixed one, say 1/16th. That takes care of the overlapping.
However, I must also point out some strange behaviour I’ve found using the open hi-hat followed by a closed or foot hi-hat. If the open hi-hat note length ends at the very start of a closed/foot hi-hat note, the open hi-hat sound is chopped abruptly, barely heard. So, I always shorten the open hi-hat note length just a tiny amount to avoid this.
Anyway, if I’ve said something wrong I’ll be happy to learn where and what
Cheers!
Hi lugoluis! Thanks for this. I’ll share technical info that I found by analyzing the BBManager code (it’s in src/model/filegraph/midiparser.cpp, within the function MIDIPARSER_MidiTrack::write_file.)
Overlapping notes. BBManager stores beats internally in 2 ways: one is by only storing the note-on messages. Another, by storing both note-on and note-off messages. I have no idea why this is, maybe a legacy thing. Also no idea how many beats of the default library are stored as note-on only. The code has an explicit section to detect if a given beat is stored as only note-on, or as note-on and note-off.
For those beats that are stored as only note-on, when BB exports the file, it adds 50 midi ticks and creates the note-off midi message. The overlapping note problem occurs when you have 2 notes (with the same note number) that are less than 50 midi ticks apart (e.g. in a snare flam). Say you have a snare note-on at 300 ticks, and another snare note-on at 320 ticks. BB Managers adds a note-off at 350 ticks and another at 370, creating an overlap. Some midi programs have a problem interpreting this.
Invalid files. Out of ~2670 beats from the default library, some 460 end up as invalid when exported - a midi editor cannot open them. Also, if you look at the valid files, many have plenty of “loose note-offs”, - i.e. note-off messages without a note-on. I tried to find the error in the code, but I could not understand it, so I ended up rewriting that part from scratch.
No BPM info: When BB Manager exports the file, it does not save the BPM info - all files end up with 120 BPM, which is the MIDI default for when there is no BPM info.
Pickup notes. For beats that have pickup notes (275 files in the default library), the exported midi file begins at the pickup note, instead of at the beginning of a bar.
Missing notes: BB Manager does not export the notes that come immediately after the end of the last full bar, such as the cymbal crash when a fill ends, so you loose them in the exported MIDI file.
So in summary, many files work fine out of the box (I guess that’s why you did not have any problem), but not all. So if you ever find one beat that does not export correctly, you can use this version!
@retango Thanks a lot for your in-depth explanation! It is very clear to me now that you know the beast (not “beats”! :P) from the inside while I’ve been only looking at its face XD
I guess I haven’t come across any damaged MIDI file due to my limited experience in using the SS beats (not beast! :P). I will certainly try out your software, for which I offer my sincere thanks!
I have learnt to bypass most of the quirks and bugs I’ve found in the BB Manager throughout the years -like the infamous “red line” appearing out of nowhere at the end of the last measure in a beat -usually signifying there’s a collapsed measure with information in it but not always the case. This causes unexpected problems in the same part or/and at the beginning of the next part (like first notes being chopped off). BTW, adding and then subtracting one measure eliminates it; or deleting only the very first note(s) and reducing the number of measures by one, if that whole measure is not wanted.
Anyway, thank you for your kind and comprehensive reply!
Cheers!
Being not particularly techy (though I’ve been coding for a good forty years) I’ve had no problems (to my ears) in saving out and changing stuff in my DAW. Not that I do it that very often. I tend to keep my beats to short (repetitive) loops rather than long MIDI files. And I’m one of those strange beasts who like BBM as it stands.
Hi rotylee,
Thanks for the heads up, indeed the version was not working. I spent many hours trying to understand why, and cannot find the culprit. The problem arises when I try to compile as “release”, instead of “debug” in QT creator. It’s my first time compiling somethin from C++ to Windows, and I cannot find why this happens. So I compiled a debug version, which is a little slower than release, but works just fine. You can download it here. Please let me know if now it works for you. I also updated the first post with the correct link. Thanks a lot!
Update: I was able to find the bug that caused the program to exit, so I fixed it and uploaded a new release. This one works with normal speed.
Thanks for forking the BBM. It’s needed!
Years ago, when they first open-sourced it, I looked through the code and proposed a fix for the “drumkit WAV extraction nightmare”. Perhaps you could include the fix in your next release?
In summary:
Line 194 src\drmmaker\DrumsetPanel.cpp mp_drmMakerModel = new DrmMakerModel(Workspace().userLibrary()->libWaveSources()->currentPath());
Should be: mp_drmMakerModel = new DrmMakerModel(Workspace().userLibrary()->libWaveSources()->defaultPath());
HI retango: wow… thanks for this major impovement to BBManager. I am running on OSX, and assume your code will simply not apply (unfortunately). But if there is any hope… it would be much appreciated. Note, as a long-time UNIX, LINUX, and now OSX (but doing much work using the xterm/console window and linux commands), the presence of spaces, parentheses, often creates problems when working with large numbers of files (e.g., the spaces cause the shell to see multiple file names, that dont exist… adding the " before and after makes shell script programming more difficult.
Your idea of a well-structured bulk export is just brilliant. On behalf of all the windows users, thank you!
Your fixes to the midi-file export would have been really useful to me given I was hoping to use StudioOne to edit longer loops, or to make much longer song sections, and your explanations of all the problems with the BBM export probably explain why I could, sometimes, pass files back and forth between StudioOne and BBM, and sometimes not.
If it would be easy to create generic midi file ‘fixer’ in a language that could be compiled/executed in windows and OSX (eg., in generic ‘C’ ), that would also be wonderful, and extend your (great) contributions to another (probably fairly large) community of BB users.
I’m presently running the BeatBuddy Manager (BBM) 1.66c (notarized version) under macOS 14.0 and am able to successfully export to MIDI and open the resulting file in Logic Pro X or Reaper. If 1.66c does t work for you, you can try the other notarized version.
Thank you persist. I just installed BBM 1.66c (under osx 11.5.2) and it seems to work fine. I cant test midi files just now, but will do so very soon. Thanks again, P