Feb 11, 2012

The Chocolate Grinder

The Chocolate Grinder is a software emulation of a skipping/glitchy CD player.

It sounds like this:

And looks like this:

It’s my first app for the Monome Arc.

Full description of the app:

The Chocolate Grinder is a software emulation of a skipping/glitchy CD player.
You can record (or drop a waveform) into a buffer and then define a playback/glitch window.

It uses authentic skip/glitch samples at every jump point along with weighted randomness of sample choice to emulate several makes/eras of CD players.

The seek/fastforward is also faithfully recreated.

It’s also shown up on the web in a couple of places, which is nice. Here it is:






And now for a bit of background on the app/sounds.

I’ve been doing lots of programming in the last few months. It’s all building towards The Party Van, an all-in-one Max/MSP performance patch. Along the way I also made the Monolase, an 8-bit modulated delay/sampler based on the ciat-lonbarde Cocolase. The Chocolate Grinder is the latest step in that ongoing process.

I’ve been fascinated by the sounds of skipping CDs for years, having first heard the music of Yasunao Tone, and later the amazing Nic Collins. Even before hearing Nic Collins pieces which are similar in approach I had done some piano improvisation + skipping CD of piano music on my first CD, The Beatles White Album. On that CD I have two versions of a Bach Prelude, which I set about to learn in the ‘traditional way’ so that I would be able to follow the skipping CD wherever it went.

It sounds like this:

At the time I had not yet learned to how to modify a CD player via Nic Collin’s ‘unmuting the pause’ technique, so I did it by burning several CDs full of the Bach piece (Glenn Gould‘s inspiring performance) then scratching/modifying/preparing the playing surface of the CD. I also used a couple of different CD players, one desktop/component style player, and one portable CD player. The behaviour of this setup was temperamental at best so I had to do hours worth of takes before I got something usable (the CD player would often just stop/reset when it would start skipping). Because of the erratic nature of this kind of skipping you get some very nice shifts and movement with the skipping material (as opposed to the more controlled kind of skipping you get with the ‘unmuting’ approach).

For my app I tried to have it be controllable in terms of interface/playability but for the sounds/behaviour to be a bit unpredictable. As mentioned above it uses actual samples of CD skips, along with some synthetic attack modification, so you get an endless variety of sounds when it hiccups. I also used some randomization in the level of the skip, and more importantly a couple of ‘behind the scenes’ things that happen every time you load the app. Each ‘CD module’ takes on a character when loaded. This is done by using a weighted randomization of what samples to play (the weighting is generated by another weighted random procedure at startup). I found that different CD players and CDs tended to lean towards certain types of sounds, so I wanted my app to be able to recreate that. In addition the rate/sound of the fastforwarding is also slightly variable on each startup. Those two things aren’t controllable by the user (unless they edit the patch’s guts). The final element of this ‘behaviour modelling’ is the ‘jitter’ control. This is user controllable and can add a subtle (or not so subtle) variation in when the glitches come back. It is visually clear what’s happening in the GUI, whereas on the Arc that kind of movement was confusing looking, so you see a fixed window on the Arc regardless of the jitter setting.

In the end I’m very satisfied with the sound and playability of this app, and it’s nice to see other people enjoying it.

Below is the patch if you want to download and use it. It requires Max6 (or the free runtime version) and the Alex Harker externals which can be downloaded from his webpage. Alex Harker was also very helpful in the creation of the patch (creating the gen playback module).

Click here to download the patch.



  • Thank you very much for your work. Trying to figure out how it all works at the moment, but so far Im quite impressed by the instrument. please carry on:)

    • Thanks! If you have any questions on it, feel free to ask. I tried to make the GUI pretty self explanatory, and only really explain the arc mapping and general instructions of use.

  • Hi there,

    Do I absolutely need the Monome Arc to make it works? For now, got nothing to work. ;(

    • You don’t need an arc at all for it. You can control it using the GUI or use the MIDI-learn functionality and control it with whatever MIDI gear you like.

      You do need Max6 and a couple of externals (mentioned and linked in the ‘info’ button at the top of the app).

  • Thanks for your reply. I’ll get a closer look at it. Cheers!

  • Me again …

    This is indeed a real fine instrument, thank you for sharing ! I had a great time playing with and I’m planning to have some more very soon !

    I have another question tho, I can’t assigned more than one knob, that means I have to click with the mouse on “Position” to make it active and click on “Window” to activated it as well but can’t used both at the same time. I know it’s possible, we clearly see it on your video. I use Max 6 Runtime, maybe that’s why ? but I might say MIDI is not the strongest quality I got … If you have some cues, I’d be happy, well… to be honest, I’d be very happy!

    Do you use Ableton Live? Could it be a possible M4L Patch in the futur?

    I also have to say that I love the feature ON and OFF of the Glitch cd sound Fx. It’s great to have both choices.

    Thanks again,



    • In the video I’m controlling both from one knob since the Arc has a ‘press’ toggle. I’ve coded the patch such that when I’m ‘pressing’ the knob, I’m controlling window by turning, and when I’m not pressing, I’m controlling position.

      You won’t be able to do that unless your MIDI controller has a press/hold (some do) and you code a gate for it (basically a thing that passes the info to position when not pressed, and passes it to window when pressed).

      You can just control it with two knobs.

      I don’t have/use Ableton so I don’t know what turning this into a M4L patch would entail. Perhaps in the future, but it’s unlikely as I’d be unable to test anything on my own.

      Glad you’re enjoying it!

  • “You won’t be able to do that unless your MIDI controller has a press/hold”

    I’m sad … ! I was expecting to use it during my next performance but, in the context of live music, it’s a pain to have to click with the mouse all the time. There is no way to code for changing from Position to Window with the “TAB” key of the keyboard or from a pad of a GUI?

    • You can just map different knobs to it, so you can control both independently, that way you don’t need to involve the computer keyboard at all (I have my laptop with the screen half closed and off to the side).

  • “You can just map different knobs to it, so you can control both independently”.

    I tried and it didn’t work. I was only able to use one knob. One knob for position and then click with the mouse on Window and use the same knob. I’d love to map different knobs to it and control independently. I don’t get how to do it.

    Thanks for your patience …

    • Just hover over the other control when you’re doing the MIDI learn. You can map every number box and button to a different MIDI control with that MIDI learn thing.

  • Aaaaaaaah! WOW! That was so easy! I told you MIDI is not my best skill …
    Thank you so much for your generosity, patience and again, for sharing this great app!

    I love what is getting out of it!


  • Hi Rodrigo,

    I just came across this pretty cool collection of patches, really huge work !

    Quick question, apparently the chocolate grinder relies on a randomvals object that is not supported anymore in 64 bits Alex Harker’s library. I’m not exactly sure what it’s supposed to do, do you have an equivalent that would work today by any chance?

    Thanks !


    • Hi Julien,

      Alex has made some 64bit versions, but they aren’t publicly available yet. It’d be worth dropping him a line. I’ve also made some updated versions of similar ideas (although not fully packaged up like a standalone app like Chocolate Grinder). You can find them towards the bottom of this blog post:

      Hope that helps.


Leave a comment


Rodrigo Constanzo
-makes music and art
-lives in Porto/Manchester
-is a crazy person

Learn from me (for free!)

I am offering free lessons / conversations / consultations / mentoring / time / support to creative people, locally or remotely.
Want in on this?!

Read my PhD Thesis!

Composition, Performance,
and Making Things,
sitting in a tree :


Upcoming Performances

No upcoming performances