how to create a tap tempo in max

    May 17 2012 | 5:52 pm
    I would like some help modifying a tap tempo patch I am using. At present, the tap tempo works from around 70 bpm upwards, but due to an [if] statement it does not register taps with increments below 70ish bpm - this is in place to stop a user form tapping the device by a mistake and values suddenly changing. Could someone help me? I have included the patch I am working on. Could someone offer advice, or suggest methods of achieving tap tempo?

    • May 17 2012 | 7:22 pm
      I haven't looked at your patch, but I had a tap tempo laying around, maybe it is helpful for you:
    • May 17 2012 | 10:48 pm
      I don't really like the way the tap tempo feature of Ableton Live works because it leaps too abruptly to what it thinks the new tempo should be. So I wrote a patch that implements tap tempo in a super simple way that corresponds to how I think tap tempo should work. The patch alters the transport tempo based on the rate at which you tap the t key. My method simply takes the average of the most recent three time intervals between the most recent four taps. So once you tap four times, it will set the transport tempo to your tempo, and if you keep tapping it responds to your changes but takes a couple beats to move gradually to your new tempo.
      I then translated it into a Max for Live device (attached below) that controls the Live transport (using the mouse instead of the t key). So, if you use Max for Live you might want to try using that instead of the actual "Tap" button in Live, and see if you like the results any better.
      I'm also including a Max patch that shows the Live device version, just so you can see that without having to load it into Live.
      I hope it's of some use to you.
      taptempo max patch:
      ===== Max contents of the TapTempo M4L device:
    • May 19 2012 | 4:23 pm
      Nice work, Christopher. I am eager to experiment with your objects. It seems to be a more "human" approach to the issue. I'm not a fan of abletons tap tempo either, and it is such a crucial function!
    • May 19 2012 | 10:11 pm
      It would be SO easy to implement this as a Java (or other language) custom object. You could make the object use simple statistical techniques and only start the tempo when its statistical confidence that it has the correct tempo is sufficiently high. This would prevent problems with accidentally hitting any buttons.
    • May 22 2012 | 2:32 pm
      I have taken all of these examples into acount and devised a phasor~ based tap tempo. One thing I would like to do is create something whereby, if two bangs are a specified duration apart it gates one bang and lets the other through. How could I do this? For example, when I tap sometimes, my taps overlap with the tempo being generated. Is there a way to say, implement a method whereby if both tap are 100 ms apart a messages is outputted? I could then try and use a delay/gate abstraction with this.
    • Dec 03 2012 | 10:19 pm
      Yes thanks so much Christopher for this wonderful device, Does anyone know how to set it up to trigger via an external midi device, I am using a Korg Nanopad2 I have managed to get the effect to work on max and trigger the bang button, but when I import it into live It no longer will listen to the command.
      Can anybody please help?
    • Dec 08 2012 | 12:58 am
      Implementing MIDI reception for Max for Live is a little different from implementing it for straight ol' Max. Instead of using, for example, the ctlin object, use midiin, and then use midiselect to look for exactly what you want. Also, make sure your plug-in is in a Live MIDI track, and that the MIDI monitoring is set to IN.
    • Dec 15 2012 | 9:22 am
      Thanks so much for your reply Christopher,
      I have tried as you have suggested, and I still cant mange to get it to work,
      I have attached the copy of the max for live device I have set up, As well as a screen shot of my screen when in Ableton Live, just in case the problem is there.
      Thanks again, I hope you can help
    • Dec 15 2012 | 11:23 am
      Replace the [button] with a [live.button] then ctrl-m to midi map...