Hardware Overview: BopPad from Keith McMillen Instruments
Early this year I was working with David Stout on a NoiseFold performance centered around triggering particle systems to make real-time animations. While neither of us are really drummers, the piece was very percussive in nature and we started looking for a light weight pad controller that was affordable and portable, but also flexible and expressive. After looking at a lot of different options that were either too limited, bulky or expensive, we found the Kickstarter page for one of the latest devices from Keith McMillen Instruments, the BopPad Smart Fabric Drum Pad. Though it was not set to be released for nearly a year, I put it on my wishlist and have been waiting eagerly for it to go into production. Thanks to the folks at KMI, I finally got my hands on one a couple of weeks ago and have been digging into it.
Overview
The Hardware
The BopPad is an incredibly feature rich MIDI drum pad controller.
While it is markedly devoid of any buttons, knobs or displays and features only one micro USB port, the BopPad is not lacking for complexity. Made using KMI’s smart fabric sensor technology, the 10” pad provides highly accurate data on hit location, strike velocity, and pressure. It features four quadrants, each of which can be programmed to send up to 6 MIDI note values and up to 5 streams of CC data with a latency of only 3ms. Designed to accommodate everything from bare hands to sticks and mallets and can be tuned to work with a wide range of dynamics and playing styles. Weighing in at just about 20 ounces and less than ½” thick, the BopPad packs a lot of power into a tiny package.
You can also get the BopPad Mount, which allows for easy attachment to any 8mm threaded stand, and KMI’s MIDI Expander, which enables interfacing directly to any MIDI compliant hardware.
The Software
KMI provides an editor for both Mac and Windows as well as a web based editor that will work with any web MIDI compatible browser. The editor allows you to change everything from the note values and controller streams on each quadrant to the overall sensitivity and strike density of the drumpad as a whole.
Each of the data streams can be scaled, offset and and even run through algorithmic, exponential, or even user defined tables to get different curves.
One limitation is that the device can only hold up to 4 distinct presets at any time, switchable using MIDI Program Change messages. However, you can quickly upload new presets from the editor at any time.
In addition to the editors, KMI has made several templates for plug and play testing with Bitwig, Logic, Garage Band and Ableton Live. These utilize the factory presets and do a good job of helping new users make some noise and use the data right out of the box.
BopPad for Max’ers
The BopPad uses standard MIDI data for all of its controls, making connecting to Max simple. Whether you are designing your own drum machines or synths, or just looking for an expressive and streamlined controller to integrate with existing ones, this thing has a lot to offer. The four quadrants of the BopPad each give you up to 6 notes and 5 streams of low-latency velocity, pressure, radius (both on hit and deviation after the hit), and polyphonic aftertouch, so there’s no shortage of control data to use in your patches.
The editor provides a lot of flexibility, but when you dump that data into Max you can take it anywhere you want. The limitation of 4 banks of preset data feels much less restrictive once you can start manipulating the data outside of the device.
My Impressions
The BopPad
Right from the unboxing, I was impressed by the BopPad. It is solid, but not heavy, feeling well made and robust. I am confident that I won’t break it if I get too excited while playing or while transporting it (according to their Facebook page, they even ran one over with a car in the stress tests). The inclusion of the cable guard is also an important detail. Without one, it wouldn’t be long before I accidentally whacked my micro USB and damaged the port. The pad dumps out more data than I have yet figured out what do with, which is always exciting. I love being able to grow into a device and have it challenge me to pull more out of it. Maybe most important is that the sensitivity is tunable enough that I can make it behave in a way that fits any play style instead of feeling like I have to adapt to it.
The BopPad mount is, for me, a must-have. It only adds another five ounces and provides a lot of flexibility in physical setup. Having said that, I did find that just putting the pad on a flat surface works great.
I haven’t tested out the MIDI expander yet, but I think that the small form factor is worth the tradeoff of having built in MIDI ports. I am also primarily using it through Max, so I can always send MIDI out to hardware from the computer as needed.
In the end, I don’t find that I have much to criticize about the hardware, but there a couple of small things. The biggest complaint is probably the lack of any kind of control of or feedback about presets on the device itself. I appreciate the streamlined look and especially the lack of breakable parts, but would like the ability to change a preset without having to send a program change message. The second is that I would like to have more fine-tuned access to location data then the radius from the center. Though I admit that I do not know how easy it would be to expose the angle data, this feels like an artificial limitation.
The Editor
I found the editor interface to be well laid out, simple to use and understand, and similar enough in each implementation (Mac, Win, web) to make modifying it easy on any platform. A feature that I particularly like is the ability to query the pad to find out what is currently loaded on each preset bank. This is something I know will come in handy if I want to make changes while away from my main computer.
One area where I feel like there is room for improvement is not so much in the editor itself, but in the ability to control the device externally. Especially on Windows, where only one program can access the device at a time, it would be much more convenient to control the device with an embedded editor. The ability to change presets and manipulate the device settings programmatically would make this already powerful device feel even much more flexible. There is a developer tools section to the editor that exposes the html, so this definitely seems possible, but a developer spec would go a long way to making it accessible.
Final Thoughts
Overall, I am quite impressed by the BopPad and know that I will be using it in many projects for a long time to come. The device provides a dynamic percussion surface and a huge amount of data in a compact and easily portable package. It seems like it’s made to last and and comes at an impressively approachable price tag of only $199. They are slated for imminent public release and are currently available for pre-order from keithmcmillen.com and a variety of resellers.
Very promising/exciting. I've had my eye on this since the kickstarter came out.
In terms of latency/detection, how "drummerly" do you find it? From the original demo vids it seems like it tracks well, but doesn't handle fast flams or buzz rolls very well (although better than 'normal' drum triggers). Granted this was a while back, so I'm wondering if they improved the software (and/or hardware) side of that.
@Rodrigo - For me it felt surprisingly "drummerly", though I'm admittedly not a very proficient drummer, so I'm not the best authority here. The editor does give you a lot of range to adjust the sensitivity to hone in your hit detection, so depending on what kind of playing you'll be doing you have a lot of range to find the balance between detected hits and false positives.
I'm in the same boat as Cory here, I am no drummer, but the BopPad does feel quite responsive to me. Flams and buzz rolls are incredibly hard to accurately track, and are at the extreme end of gestures, but I think they translate well on the BopPad.
Got my Boppad finally a few days ago and initial thoughts are very promising.
Some of the stuff is a bit confusing, for example, I have no idea what "Strike Density" does, especially with this is the whole of the explanation in the manual:
"Use the Strike Density to optimize the response for different play styles. Fast and light stick playing will benefit from higher settings. More expressive playing will benefit from lower settings."
So does 'more expressive' mean a wider dynamic range? So strike density has an inverse relationship with dynamic sensitivity?
But the biggest surprise came from the fact that each quadrant is 'monophonic'. From the icon and text, I thought that each quadrant could send up to 6 different MIDI notes...based on the current radius. Setting each quadrant to more than one note results in that quadrant sending a chord...
Looking at the editor UI, and the layout of things, it really feels like I'm overlooking something here.
Granted this should be a trivial workaround in Max, but I completely misread what the product was supposed to do based on the graphics, pictures, videos, and description!
All of that being said, the sensitivity and latency seem fantastic. Wish I knew what 'strike density' was, so I can further try to optimize, but liking what I'm feeling so far.
Hey Rodrigo - I'll try to clear a few things up for you.
We had a pretty hard time deciding on what to call the Strike Density parameter. It affects a few different things in the hardware that are all related, but basically is a compromise between the response time of the device, and crosstalk cancellation. Higher strike density will allow for more hits per second, but will result in more crosstalk. If you're trying to play really fast, set it to high, if not, set it to low. Or set it to whatever feels best to you intuitively. It has no effect on dynamic range.
As for the multiple notes per quadrant, that is by far the most common request from users so far. I agree, the image may be a little misleading, but in our documentation, we don't say that you can send notes corresponding to where you strike a quadrant.
As you say, its a trivial workaround in Max (here's a project that does it, if you want a starting point), and in Ableton Live using MIDI effects and instrument racks.
Thanks for clearing up Strike Density. Man, I didn't get that from it at all! I guess when there's macro things like that going on, it's hard to explain what the one parameter does.
With that in mind I'll have a further poke and play to see what feels best.
Thanks for sending that project along, I'll have a proper poke at it tomorrow when I set to tackling the idea again. What I'm going to try to make is a 4x4-esque mapping (so four discrete playable rings per quadrant), that way I can use all my existing MPC-adapted kontakt libraries with it. I had a little play with it today, trying to find the right breakpoints for the radius to set up 4 similarly sized quadrants, and it felt like it would work out nicely
The patch I sent over should be able to do the 4x4 thing pretty well, though there are some limits as to what specific notes it will translate to, and what the 'rings' inside the quadrant will spit out. It's all chromatic (put 36 in and if you want 4 rings, it will be notes 36-39), and the divisions are jsut equal divisions of the 127 so radius of 0-31 = ring 1, 32-64 ring 2, etc. Feel free to hack it apart and rework some things, still a few bugs I haven't quite sorted with it yet.
I was initially going to divide it evenly but from my (brief) testing today, I came up with the following values per 'ring' to get each to feel about the same size. r1: 0-30 r2: 31-80 r3: 81-126 r4: 127
Since there's so much of a "127 area" at the end, I found that anything less than 120 would make the inner rings tiny (and the outer ring huge).
Got one for a research project on musical tempo perception at work. Very happy with it so far, especially at high global sensitivity settings. I wish it supported OSC natively though, but perhaps it's just me :)
Hi Evan, I think we have exchanged a few emails about this (thanks for your support btw). Yes, I absolutely see your point. Perhaps an OSC bridge is something that could be developed by community, although I guess that would require an SDK, which again would mean some development time on your end... I guess I'm going to have to stick to MIDI for the moment :)
Or even just native 14-bit MIDI, as that doesn't require a whole other data structure and connection.
But yeah, an OSC bridge would be handy, but for me one of the biggest benefits of OSC would be having better-than-native-MIDI resolution. So a bridge built from the same MIDI messages wouldn't help there.
Hi Rodrigo, indeed, I meant an OSC bridge that does not go through MIDI and thus has higher resolution, that is what I am after. Actually, 14-bit MIDI would be a pretty decent compromise, and as you said it would not require as much effort as native OSC support. Any chance of seeing that implemented Evan?
Hey Rodrigo and Frederico! Very interested to hear you guys talking about 14 bit MIDI. Do you guys know if there is a drum pad out there that can do it?
Very little chance of seeing 14 bit MIDI implemented as a standard feature, as I understand it. Again, it mostly comes down to the lack of interest in that.
What I think would be more of a possibility is getting a sysex command to put the device into a mode that gives access to higher resolution data, but you'd need to cook all the data yourself.
Hey Evan, as i understand it, sysex is a relatively old form of communication between hardware and is rarely used nowadays. At least with MIDI, everyone is already fully on board with the concept, 14 bit just becomes the new standard. I have played many electronic drum pads and have always thought that 127 steps of velocity is too small to accurately recreate a playable surface. Obviously it all depends on how responsive the surface is and whether it can pick up these differences in velocity, but Boppad seems to be leading the way with this. I think the lack of demand is due to the fact that no one has bothered to exploit the idea of a drum sampler with 16383 steps, could be the future no?
What I meant was a command that could be sent (from the Editor, max, etc.) and then the data would come through with higher resolution. You wouldn't be communicating the data via sysex or anything like that. We have nothing like that planned currently, but I can certainly pass the wishes along.
14 bit will never be the new standard, as far as I can tell.
For the record, more than one good MIDI DJ controller implements 14-bit MIDI, most of the time with a real resolution of 10bit, i.e. the resolution of the AD converters.
Thanks for replying, but I think I'm still not understanding something. This all may be over my head, I'm not experienced with MaxMSP really.
The threshold you've set for the velocities was this done in Max? Or the BopPad Editor? And maybe I'm misunderstanding, but it sounds like you're then using velocity to trigger different samples?
But Max aside, I had assumed that the 6 rows in each quadrant they have in the BopPad editor was for each radius... but whatever notes I put in those 6 rows all get triggered at once no matter where I hit within the quadrant. So I thought there was something wrong with my pad. But I guess that's not how it works? And I'm honestly just really confused by the BopPad Zones patch in max. It doesn't look like it does what I'm trying to accomplish here. Even just messing around with the settings doesn't seem to affect anything. Sorry to be wasting your time. I'd honestly be willing to pay someone to walk me through what I need to do at this point.
And again sorry for writing on this thread, I would've sent a DM but doesn't look like you can do that on here, and I wasn't sure you'd get a notification if I wrote on that other thread.
Thought I'd chime in here with a little advice/feedback.
But Max aside, I had assumed that the 6 rows in each quadrant they have in the BopPad editor was for each radius... but whatever notes I put in those 6 rows all get triggered at once no matter where I hit within the quadrant. So I thought there was something wrong with my pad. But I guess that's not how it works?
Correct - that is not how it works. That display in the Editor is a bit misleading, and there is no built in option for 6 discrete notes per quadrant, hence the workaround I programmed using the radius value to send discrete notes in a quadrant, based on location.
And I'm honestly just really confused by the BopPad Zones patch in max. It doesn't look like it does what I'm trying to accomplish here. Even just messing around with the settings doesn't seem to affect anything. Sorry to be wasting your time. I'd honestly be willing to pay someone to walk me through what I need to do at this point.
Yeah it is a bit confusing, sorry about that. I could've included better documentation, but I did do a short write up HERE- Ive also attached a max project that I just tested with. You need to use the "sticks" preset from the Editor for plug and play use. Set the "in" to BopPad, and the "OUT" to from Max 1. If things are communicating properly from the BP to the max patch, you'll see the 'Out' section in the bottom of the squares in the patch update to indicate MIDI channel and note. Choose the scale, base note (starting note) and divisions (number of notes each quadrant is divided into). Hopefully thats enough to get you up and running, but holler here if you need additional guidance.
Hey everyone, thanks for all the interest in BopPad, and thanks to Evan for stepping in to help. We are overdue for an update to the BopPad firmware/editor, so any feedback would be timely.
Wow, I somehow missed this when it came out, looks super cool for the price. Take this as another vote some way (anyway really!) to get more than 7bit resolution out. If this has happened and I'm misunderstanding, I'm all ears! :-)