A project log for DrumKid: aleatoric drum machine

A lo-fi digital drum machine which uses randomness to create unpredictable beats. Runs on Arduino, with audio provided by the Mozzi library.

Matt BradshawMatt Bradshaw 09/28/2019 at 17:230 Comments

Designing for other people is a lot harder than designing for yourself, which makes this project harder than almost all of my previous ones - the aim is to get DrumKid into the hands of as many musicians as possible, which means I actually have to listen to constructive criticism. I've tried to elicit feedback throughout the project, but this has ramped up recently as I approach my self-imposed deadline of making the first batch of finished DrumKids by November.

I've now received comments from all three musicians who are currently using the latest prototype of DrumKid, so I thought this was a good point to share the feedback I've had throughout the project and how I've adapted the design based on it (or plan to in the near future).

My main sources of feedback/criticism have been:

Overall, spread over these various mediums, I've had a lot of helpful comments throughout the project! I thought it would be helpful to document them here, roughly in chronological order.

Early feedback from friendsToo much high-frequency noiseImproved the filter circuit
Early feedback from friendsOutput is too quiet (this was with the volume on max in a noisy pub - the filter was reducing the output too much)Added an amplifier chip to boost the signal
Early feedback from friendsThe early single-knob design was too confusing and difficult to playI agreed with this comment and redesigned DrumKid to feature four knobs instead of one
Email and YouTube commentsDrumKid should be compatible with Eurorack synthesizers, and the different parameters should be controllable via external control voltagesCreating a DrumKid Eurorack module would be a separate, complex project, but there seems to be a lot of demand for it, so I've started making notes about a potential future design, maybe using a Teensy
Email and YouTube commentsDrumKid should be able to synchronise its tempo with other instrumentsThis has come up quite a lot, often enough that I'm considering adding this feature to the final design, although it might delay the release by a couple of weeks
YouTube commentIt would be good to be able to load custom sample sets (different kicks, snares, etc)Although it would be hard to make this part of the core, supported features of DrumKid, switching the samples is such an obvious customisation that I'd like to document a way for people to do it. This has made me realise that I should write a secondary "hackers' manual" for DrumKid to help people who want to customise their instrument
TesterThere should be more different styles of basic drumbeat, such as drum 'n' bass, reggae, waltz, etcI agree with this, and will spend some time adding more beats for the next version
The volume knob seems to be mounted backwardsThis is true - either the KiCad footprint is wrong or I did something stupid, but I will fix this in the next version of the PCB
TesterThere should be more than six slots to save beats inThis is probably fair. There is plenty of space in the EEPROM to save more beats, but I wanted to keep the user interface nice and simple (six buttons, six save slots) - I'm considering increasing this to six banks of six (36 slots)
TesterThe loading process is unreliable and confusingI hadn't noticed this before, but I think there is a bug in the code, so I will investigate
TesterThe LEDs are too brightI noticed this, too, and had already planned to reduce the brightness for the next version, which should also have the benefit of increasing battery life
TesterBeats in non-standard time signatures have strange emphasesMy previous, slightly lazy approach to non-4/4 time signatures was to simply truncate or repeat a 4/4 pattern, but this is musically bad. I should either have various versions of each beat for different time signatures or perhaps just have a greater range of preset patterns, including "good" 3/4, 5/4, and 7/4 patterns
TesterFor some parameters, the left position is a neutral, unchanged sound and the right position is a "crazier" sound, but sometimes it's the other way round, which is unintuitiveThis is a fair point. I never had a good, uniform justification for why some parameters go left-to-right and others right-to-left, so I will standardise this behaviour
TesterReplacing the batteries would be difficultThis is perhaps a weakness of the current design - to replace the batteries you need to undo six screws. It only takes about a minute if you have a screwdriver, but not everyone does! I'm going to see if it's possible to source some knurled thumbscrews so that the batteries can be replaced without a screwdriver
TesterIt's hard to start messing around with DrumKid without consulting the manual - it would be good to have the parameters written underneath the knobsThis was mentioned by two different testers, so I should probably add explanatory text on the next PCB. I rather like the minimalism of the current design, but even I kept forgetting which knob controlled which parameters, so I'll try and find an aesthetically pleasing way to include this text
TesterThe pitch control for the drone is difficult to useI agree with this, but it's also hard to think of a better way to do it. I'll take this on board and try to come up with a better implementation
TesterAn LCD to display the BPM (tempo) would be really usefulI agree that it would be good to see the exact current tempo. I could perhaps try and display it using the LEDs somehow, or even consider replacing the row of LEDs with a seven-segment display, but that would be quite a radical change
TesterIt would be good to have either stereo or multiple outputs, so that different drums could be recorded separatelyI think this is beyond the scope of a low-cost drum machine, but I'm considering this feature for the Eurorack version
TesterIt would be great if the "zoom" parameter (which controls whether the random extra hits are quarter-notes, eighth-notes, sixteenth-notes, etc) could do tripletsI also found myself wanting this feature while playing DrumKid, but could never figure out a good, unambiguous way to implement it. Now that I know it's a more universally-wanted feature, I'll keep trying!

It's important to note that I have only included the negative comments in the table above! I've also had lots of positive comments, but there wouldn't be a lot of point listing them all here, besides feeding my ego. I'm likely to get a few more comments from my prototype testers over the next few days, but for now I've got plenty of food for thought.

It's a big relief that no-one pointed out any obvious, fundamental weaknesses in the design. I think I can address pretty much all of the above comments by updating the code and PCB layout (and maybe changing the type of screw that secures the back panel, which isn't a big deal).

Overall, I'm really happy with how DrumKid has been received so far, both online and in real life, and I'm excited to get started on what I hope will be the final revision of the design.