MiniCommand Resurrection // MCLive


#1

Hello All,

It’s been a long time.

For those I have not met, I used to play live sets using the Elektron Machinedrum circa 2010. More recently I made some 808/909 inspired drum packs for the Machinedrum and RYTM.

In 2012 and 2013 I worked on a large firmware for the R&W Minicommand (midi controller), called Minicommand Live. MCL was designed to allow you to Mix and Match MachineDrum patterns on the fly. Think of Ableton Live, but using MD tracks instead of clips.

After a long absence I blew the dust from my Machinedrum and Minicommand and started to code Minicommand Live again.

I’ve discovered a reliable/repeatable exploit that allows the Machinedrum to send Midi Note messages when a trigger is pressed, but not trigger the internal sounds/sequencer. In addition the activated notes have a different channel to the notes transmitted by the running sequence. This might not seem amazing on the surface, but it means that finger presses of the 16 trigger buttons on the MD can be detected and used as control input for Minicommand Live.

Curious if there are still Minicommand users out there?

It’s been a while since Ive touched mine, and I’m inspired to make music with the MD again. I have a large back catalog of unreleased sound design and music that is hidden away in snapshots and kits. The goal is to flesh some of it out with the help of the new firmware.

Cheers,

  • Justin

OS wishlist
#2

I’m a MiniCommand owner, and very much looking forward to hearing more about what you have come up with.


#3

Would you also make it possible to buy or build a MidiCommand ?
There were a lot of MD sold recently due to Elektron smart marketing :tongue:
I guess quite a bunch of people (me included) would be interested to get crazy with a MidiCommand + MD combo.

So far, I have fun with Guga’s SMD but I wouldn’t mind expanding the set of tools for more MD fun !


#4

indeed it has. good to see you back, and looking forward to loading up your new code.

haven’t checked your old forum, you getting active over there as well?


#5

/waves

Same here, been too tied up to dig into mine recently, but am factoring them in as core part of new studio/live rig… one day when I have some spare time…


#6

It shouldn’t be that difficult to build a new Minicommand. It’s based on the Arduino platform.

It would be interesting to see if we could could create an open source build guide based on Wesen specs for the Midiuno API. And then piece it together using Arduino components and simple support circuitry.

First things first, I need to work on the firmware.


#7

Hey Dub,

I was curious if you were still around, this is a pleasant surprise!
You were extremely helpful back when I was coding this. I could use those testing skills again.
Ready to seamlessly pick up from where we left off 3 years ago?

I’ll keep the discussion here for the time being. No need to partition the community further.

Cheers,

  • Justin

#8

Hi Rusty,

Glad to see you’re still at it. What were your plans for the MD+MC ?

With all these familiar faces, feels like i’m getting the band back together again.

  • J

#9

I’ve got 2 1/2 MiniCommands, so I was looking at creating some mega firmware with three linked together, along with a gugabox SMD to control bunny rabbits and generate moonbeams… tie all that into an Octatrack, Rytm, Virus and Carbon… should be fun…

Vaugely interested in chipping in for a custom thingamajig… I’m a bit time poor right now for the obvious reasons… :slight_smile:


#10

http://web.archive.org/web/20100807002705/http://redmine.ruinwesen.com/projects/midi-ctrl/wiki/Hardware-related_Questions

Need to get hold of the schematics above ^ (For investigating putting a MiniCommand Kit together)

It’s not standard arduino hardware as it uses the ATmega64 microprocessor (for the 64K ROM flash) + SRAM

This kit might work with some tweaking, need to check pin outs etc…

Edit:

Looks like all the info we need is here:

https://drive.google.com/folderview?id=0B0urCULhoczcdXZVaFRoQzRwcEU&usp=sharing

Confirmed circuit diagram, pcb layout etc.
Looks like Wesen produced a custom board for the MC. Electrical engineers feel free to jump in here :D.

Might be easier trying to bootstrap the MidiCtrl framework on top of one of the higher spec arduino dev boards (with larger built in sram).


#11

Just a quick update:

I’ve successfully coded the exploit in to MinicommandLive (MCL). This required more time than expected, as I had to fix a nasty bug/feature in Wesen’s Midi stack that caused midi callbacks to behave strangely.

We can now reliably use the MachineDrum (MD) triggers as GUI input for MCL when the sequencer is running (without triggering internal sounds).

Storing tracks in the MC works as followed: Press the read button, then select the tracks to be stored by holding down the corresponding track triggers on the MD. Releasing all triggers stores the tracks.

Writing tracks to the MC works as followed: Press the write button, then hold down the tracks to be written by pressing the corresponding track triggers on the MD. Releasing all tracks writes the tracks to the MD.

I’ve started refactoring the code, debugging, removing excess, and hopefully freeing up more space.
Still a lot of work to be done.

Planned improvements:

  • Store master fx settings for each row (this would make MCL functionally equivalent to the +drive). If full pattern read, then store globals. If full pattern write then write global.

  • Add version information in project files.

  • Display overhaul (considering). Display row as a single 16 character line. One character/symbol representing each track type.
    Second line of display will show full kit name.

  • Synchronous muting during pattern write operations. Mute tracks and only unmute when at bar divisions of the sequencer.


#12

Sounds great :slight_smile:


#13

Another quick victory: Turbo Midi stable at 2x Speed.

The midi ctrl framework attempts to create a turbo midi link at 4x speed. I’ve discovered that this is just too much for the gutsy 16Mhz processor to handle, particularly when you have a lot of midi call backs going on. I’ve modified the TurboMidi classes such that the link connects at 2x and the link is stable.

TurboMidi is really essential as it makes the Kit and Pattern transfers between the minicommand and md much smoother.

It should be possible now to have a turbo midi link between the MC and MD, but have an external clock signal coming in at a regular midi speed on the MC 2nd input. Pretty cool!


#15

I’ve got one for sale. Let me know if you’re interested.


#16

Daily Update:

Discovered that my Trigger Exploit breaks external sync.
Coming up with work-arounds…


#17

External sync work arounds works!

So we have turbo midi between MC and MCL at 2x (stable) with external clock coming in via regular midi signal.

The fix involves pausing and unpausing the sequencer in quick succession when executing the trigger exploit.
Clock seems pretty tight and I haven’t noticed any drift. Can probably code in a clock reset every 64 measures to keep it locked if we end up drifting apart.

Just noticed the occasional sysex error when running turbo 2x. bummer.

For the Machinedrum there are 4 possible error codes:

-1 length error
-2 checksum error
-3 memory full/position out of range
-4 version error

Seeing both 1 and 2 with turbo engaged, occasionally.

Going to be difficult to track this one down.


#18

Hey Justin, Rusty, Dub and co…

Been a long time for me also, great to see some Minicommand interest still out there. I still have mine although all my gear has been in storage for a while now :disappointed:, i’ve had to swap drum machines/synths for power tools (major house renovations)

I think the last thing I tried writing on the MC was a copy/port of the drum pattern generator similar to this, I got it working to a point and was quite fun but need to finish it off, i’ll holler back if/when I do get the time to complete it.

If anyone out there is up for the challenge of a DIY minicommand (and possibly re-design/enhance it?) then for extra credit - one game changing feature to add would be the ability to store/load multiple firmwares on the SD card… :wink:


#19

Hi Tyrone,

Good to see you back!

I am actively researching the easiest way to resurrect the Minicommand hardware.

The biggest issue thus far appears to be that no dev-boards have large amounts of SRAM.
Wesen expanded the microprocessor ram by adding in 128KB of external SRAM. .

Regarding improving the original design: I would like a larger LCD, more encoders, more buttons, another MIDI OUT. But it ends up being a new product.

Adding functionality to load firmwares off the SD Card would be cool. The bootloader would need to hold the SD Card libraries and they’re quite large. In short, I doubt there’s enough flash to accomplish this with the current microprocessor, perhaps one with larger flash storage could though!


#20

Here’s an SRAM expansion board for the arduino. This should do the job of Wesen’s external SRAM.


#21

Daily Update:

Turbo Midi Fixed. Now connecting at 4x.

Tech Details:

Spent a romantic evening understanding the lower levels of the Midi Stack.

Fixing Read:
There are read and write ring buffers that are used to collect and send Midi data. The incoming buffer size was too small resulting in overflow and causing large sysesx data to become truncated at high Turbo Speeds.

Fixing Write:
The write commands of sysex were too fast. No delay between sends, and were relying on the speed of the midi link to throttle the data transfer. I’ve added in a delay that throttles the midi output such that the MD can handle the
sysex data no matter what the Turbo Speed.

More testing to follow here, but the logic is sound and Midi stack is no longer a mystery.