Akai Force Forum: Everything relating to the Akai Force, the new 64 pad, clip-based standalone sampler/groovebox from Akai. While not an MPC, it shares many similar software features to the MPC X/MPC Live including the same underlying code-base.
By HouseWithoutMouse Sun Aug 14, 2022 8:49 pm
I wanted to find out how stable the Force's MIDI clock really is, compared to other devices. I set the contestants to output MIDI clock, set the tempo to 60 BPM and recorded the MIDI output signals as audio, and wrote a Python script to calculate an instantaneous BPM figure from the distance between clicks in the audio. For Ableton and Arturia Keystep 37, I used a 5-pin-to-TRS adapter cable, and for the Force I simply used a TRS cable to get the signal. I don't want to comment on the results, everyone can decide what's good enough for something and what isn't. :)

Akai Force
Here's Force playing MIDI clock at 60 bpm. Empty project with the default 2 tracks, but no clips, nothing going on, just playing to get MIDI clock out. The big peak at the end was caused by stopping playback on the Force, which sends other MIDI events in addition to just MIDI clock.

Image

Zoomed in:

Image


Ableton Live Mac
Ableton Live 9.2.3 on an old Macbook Pro, Focusrite 18i20 USB audio/MIDI interface. I also recorded the audio back to Ableton itself, and it was set to 64 samples audio buffer length and 44100 Hz sampling rate. (I might try again with other buffer lengths)

Image

Zoomed in:
Image


Arturia Keystep 37

Finally, Arturia Keystep 37 set to use its internal clock as master, powered from USB. The peaks at the beginning and the end are caused by there being some other MIDI events besides just MIDI clock pulse, like start/stop. I didn't investigate what messages they were exactly.

Image

And zoomed:

Image


Python code for creating the images, if you want to test your own devices:

Code: Select all# Calculate and plot MIDI clock stability from MIDI signal recorded as audio
def plot_stability(wav_file_path, accept_between, plot_between):
    import soundfile as sf
    signal_n_channel, fs = sf.read(wav_file_path)
    if len(signal_n_channel.shape) > 1:
        signal = signal_n_channel.T[0] # take first channel if there are more
    else:
        signal = signal_n_channel

    import matplotlib.pyplot as plt
    import numpy as np
    tick_bpms = []
    times = []
    prev_tick = 0
    in_tick = False
    for x in range(len(signal)):
        if (not in_tick) and (signal[x] < -.5):
            in_tick = True
            time_between_ticks = x - prev_tick
            if time_between_ticks > 0:               
                tempo_bpm = 60 / ((time_between_ticks / fs)  * 24)
                if (tempo_bpm >= accept_between[0]) and (tempo_bpm <= accept_between[1]):
                    tick_bpms.append(tempo_bpm)
                    times.append(x / fs)
            prev_tick = x
        else:
            if (in_tick) and (signal[x] > -.2):
                in_tick = False

    fig, ax = plt.subplots()
    ax.plot(times, tick_bpms, linewidth=2.0)
    import os
    (dummy, filename) = os.path.split(wav_file_path)   
    ax.set(title=filename, ylim=plot_between, xlabel='time (sec)', ylabel='tempo (bpm)')
    plt.show()

plot_stability('data/MIDI_clock_Ableton_Mac_Focusrite_18i20_60bpm.wav', accept_between=(20,100), plot_between=(55,65))
plot_stability('data/MIDI_clock_Akai_Force_60bpm.wav', accept_between=(20,100), plot_between=(55,65))
plot_stability('data/MIDI_clock_Arturia_Keystep_37_60bpm.wav', accept_between=(20,100), plot_between=(55,65))
By allreddv Sun Aug 14, 2022 9:12 pm
Interesting. You obviously know more about this than I do and I would not even know where to start for writing a Python code to test.

My first layman hunch would be that maybe it is more related to sound latency than midi clock since you are using audio signal? I only say this because from what I am seeing by your graph there is as much as a 5 BPM swing which is a ton. I am able to keep all my devices in sync using the Force as the midi clock.

This is going to 2 keystep pros, multiple hardware synths, effects pedals, sometimes Ableton and sometimes an iPad also.

If it was swinging that much how could I keep everything in time? I do notice a slight jitter in Ableton with it registering 0.1BPM up or down from set BPM in the Force.

Even if something was .25BPM off in my setup I would notice. Or maybe there are just enough signals over time that it averages out so things are in time?

What PPQ settings are you using? Were they the same on each device. I would imaging that would have some effect.

I am curious to learn more.
By HouseWithoutMouse Mon Aug 15, 2022 12:22 am
These pictures don't mean you have a problem, just that Force's MIDI clock timing fluctuates a lot. I suppose that many, perhaps most, systems which receive MIDI clock, perform averaging to smooth out inevitable instability. The devices you're syncing to the Force, take the incoming clock messages with a grain of salt and use for example a 4-beat average as the tempo, so you don't have a problem. I don't know how long averaging periods different systems use. If you look at the tempo curve close-ups, you can see that every time there is a large positive or negative deviation from the set 60 bpm, the very next pulse compensates for the error by a roughly similar error in the opposite direction. On average it's good.

In my tests, the clock pulse was the only thing happening over MIDI. If there are notes, CCs etc. sharing the same bottleneck, the situation probably looks different. But my simple Python script can't actually parse out MIDI data from the audio, to distinguish clock events from notes etc. There would need to be something more advanced, to actually parse the data and show the tempo fluctuation, something like a dedicated microcontroller.

Btw, it's also possible to use oldschool analog sync pulse instead of MIDI clock.

Another factor in it is, what kind of external instruments you're using and what you're doing in the Force internally. For drums and other percussive timbres, timing is more important. If you use the Force for all drums, then the drums should have sample-accurate timing "inside the box", unaffected by external MIDI timing. Or if you use external step-sequencers, they might do a good job in smoothing the pulses.

I'm learning more about this as I go. Two weeks ago I didn't even know about the Arturia Keystep things, but I've got one now. It seems like a very versatile little device that adds a lot of power to any electronic music system.
By HouseWithoutMouse Mon Aug 15, 2022 5:44 pm
Round two, double the tempo to 120 bpm. This is closer to what people will be actually using in Force projects.

Maybe I didn't explain clearly enough what was tested, I recorded MIDI output as audio, into Ableton Live. Each MIDI event makes a very short loud click, a fraction of a millisecond long. This is what the audio waveform looks like in Aleton:

Image

The graphs show the instantaneous tempo between each pair of ticks. The time duration between should be fairly even, because the tempo stays the same on the Force. But there is a lot of timing jitter, and it gets proportionally worse the higher the tempo is.

Akai Force, 120 bpm

Image

Zoom in:
Image


Arturia Keystep 37, 120 bpm

Image

Zoomed:

Image
By HouseWithoutMouse Tue Aug 16, 2022 7:42 pm
I tried syncing a Boss RC-5 looper to the Force with MIDI clock, because the Force's own looper is not suitable for that kind of things. But it isn't usable, because Akai's fluctuating clock makes the RC-5 make gargling noise, when it's trying to follow the constant tempo changes, speeding up and slowing down all the time.

When the Arturia Keystep 37 is the clock master, the RC-5 can work without gargling. It takes quite a long settling time for it to get used to the tempo, like 10 seconds, but then it's smooth. Multiple Boss loopers can cleanly MIDI sync with each other as well. But with the Force as the master, the gargling never stops.

So then I thought, I'll use the Keystep 37 as a clock cleaner and distributor... With MIDI clock this doesn't work: the Keystep 37 just relays Akai's jittery clock as-is. I used the Keystep via USB MIDI, and then out as 5-pin, and it was just as bad as the Force itself. Maybe there's a setting in the Arturia that would make it clean incoming clocks, but I couldn't find it.

Then my next idea was, I'll take a slower analog sync pulse from the Force's cv/gate outputs, and let the Keystep 37 turn it to MIDI clock. I'll use 1/16th notes on a cv/gate track as the pulse. Made a clip with the Force's step sequencer and checked that it's all cleanly in time in the list editor. Should work? To my surprise, that didn't really work either. With the Force set to 120 bpm, the Keystep kept switching between 119 and 120 bpm. :(

I recorded the Force's 4 ppq i.e. 1/16 note gate output and calculated a tempo curve.

Akai Force gate output 120 bpm 4ppq (1/16th notes)

Image

Zoomed in:
Image


:( It didn't work cleanly enough, and even though the Keystep 37 was able to sync to it and distribute the tempo as a MIDI clock, it wasn't good enough for the Boss RC-5 not to gargle. So what doesn't work:

- USB MIDI : nope
- 5-pin MIDI : nope
- cv/gate : nope

But all is not lost! It is possible to get a non-jittery timing pulse from the Force in one way: as audio. It is a DAW inside a weird box, and unfortunately it behaves like DAWs. Audio output is the only way to get a steady pulse. Life's fine as long as you do everything inside the box, right? ;)

Akai Force audio output 120 bpm 4ppq (1/16th notes)

Image

I added a drum track with a short snap pulse as the drum sample, and copied the same clip to it that was jittery on the cv/gate track. Now the same clip has perfect timing, which was expected, DAWs these days having sample-accurate timing inside the box.

One more test: I added a MIDI track and added the same clip on that, and recorded the MIDI and audio as a stereo pair.

Akai Force MIDI and audio, 120 bpm, 4ppq (1/16th notes)

Image

Zoom in:

Image

Is that good or bad 1/16th note MIDI timing? You decide. If you don't have a problem, then you don't have a problem.

How much does the MIDI timing fluctuate? At least at this tempo, and with nothing else happening on the MIDI port, just a 1/16 beat, the duration between consecutive ticks seems to be within +- 3 milliseconds. This would seem to fit in with the Force's 128 sample audio buffer size (don't remember where it was said but AFAIK it's 128 samples). At 44100 Hz, 128 samples is about 3 ms. Does the Force only send MIDI between audio buffers?

Image

Image

For driving MIDI synths etc. I'm sure the Force's MIDI and cv/gate timing is just OK enough for a lot of people. For a lot of players of virtual instruments i.e. "VSTs", 128 sample buffers are considered "good enough", so they don't feel a bad jitter when playing. So I guess it's not that noticeable. Test it yourself: make your Force trigger fast hi-hat rolls like 1/16 or 1/32 on external MIDI drum machines. I hear Atari ST is better than this though! :wink:

Anyway, if you want to get a rock solid clock pulse from the Force, you'll have to use an audio output. Or don't take it from the Force at all, use an external master clock and make Force a slave, but that causes other problems.

The cv/gate timing being even more jittery than MIDI was a bit surprising. However, the gate jitter seems very uniform compared to MIDI, so maybe it could be improved by increasing some interrupt rate or something.
By HouseWithoutMouse Tue Aug 16, 2022 10:37 pm
I plotted the rest of the millisecond differences. The same happens for MIDI realtime clock messages and Note-Ons, and regardless of project tempo, the duration difference between ticks is between around +- 3 ms. If I'm guessing right, this is somehow tied to the audio buffer. What else could it be? I also found out earlier that it takes around 10 ms for a MIDI message to simply pass through the Force.

Image

Image

Image

Image


The gate signals behave differently, they seem to be basically always either +- 4.something milliseconds longer or shorter than the previous interval, or exactly the same. Maybe it's tied to a 240 Hz interrupt, or thereabouts? 1000 ms / 240 is about 4.17 ms, which would give the jitter in the pictures.

Image

Image

It's funny how much information you can get by plotting timings. But it's good to know how this stuff works. It's easier to decide how to use and configure things, when you know the ups and downs of each alternative. AFAIK, Akai don't print timing graphs in the manual. :) I'm not deep into modular synth stuff, but I think those folks sometimes read service manuals for details such as timings.
User avatar
By 64hz Wed Aug 17, 2022 3:41 am
I’m not doubting you it’s just I never ran in to any sync issues running multiple devices from the force midi out. Interesting read none the less.
By HouseWithoutMouse Sat Sep 17, 2022 1:42 pm
For comparison, I tested the Sync Out signal coming from a Korg Volca Nubass, at 120 bpm and 0 swing, with sync mode StP 1, "1 pulse per note", i.e. 1/16th notes or 4ppq.

When it's only playing back, the pulse is rock solid, with only a half-millisecond hickup when the sequence wraps around. Tweaking the cutoff knob causes a few more of those, but when both recording notes in the sequence at nonsensical speed (continuously sliding my finger rapidly from end to end on the note touch thingy) and tweaking the knob at the same time, then it starts to exhibit jitter about as big as what the Force's gate output does continuously. What's good about the Volca's jitter is, it's very small, and musically meaningful, not random.

Image

I have yet to test if and how the jitter propagates when the sync connections of several Volca boxes are daisy-chained.

So far my idea for getting the best possible sync between the Force (or MPC) and other external devices is to take a sync pulse from the Force as audio, and distribute that to all others with a bit of electronics, in a star-shaped network, not daisy-chained.

A nice thing about e.g. the Volcas is, when using 1 pulse per 1 note, the sync master can provide the amount of swing as well, so the whole system is locked to the same swing groove. Which cannot be done with MIDI Clock at all. To utilize this, I would use a MIDI (drum or plugin) clip in the Force which plays a swing pattern to an external audio output, connected to the sync distributor contraption. And it could even be adjusted to compensate for any possible latency/offset issues.
By HouseWithoutMouse Sat Jun 24, 2023 5:23 pm
But how does the Force perform as a MIDI Clock sync slave? Here's a picture of what it looks like when the Force is synced to an Arturia Keystep 37's MIDI clock, over USB MIDI. The Force is playing steady 1/16th notes (909 rim shot sample on a drum track clip) at tempo 119 bpm

Image


And when running on its internal clock, jitter is practically non-existent, just like it's supposed to be.

Image