• entry
  • comments
  • views

continuing my midibox/liveapi project

Sign in to follow this  
Followers 0


i'm finally continuing my work on using liveapi to integrate mios32 and ableton live. this works by giving programmers a large set of functions they can call to manipulate damn near anything in live. another set of functions are automatically called by live, allowing you to track whatever is going on. this will let users play a live set without ever looking at a computer screen. the possibilities can be a lot more than that.

to do this, i've made a protocol that works over midi and allows a midibox to seamlessly communicate with a liveapi script. on the programmer's side of it, you just have a simple set of functions to play with. look at it as a midibox API for LiveAPI, extending mios into live, and vice versa.

currently this is being developed for live 7.0.14. i'm fairly confident that most of the code will work for live 8, and i'll try to get a new version going once this is complete.

for a teaser, here are some of the functions at your disposal. keep in mind i haven't gotten to the clips, tracks, or track devices yet, but eventually you'll be able to go as far as bring clip or plugin parameter names into the midibox, and of course monitor what is going on with all of it. this list is growing by the day.

functions you can call from mios:

void MBLIVE_SONG_SetTransport(u8 state);

void MBLIVE_SONG_GetTransport();

void MBLIVE_SONG_SetRecord(u8 state);

void MBLIVE_SONG_GetRecord();

void MBLIVE_SONG_SetOverdub(u8 state);

void MBLIVE_SONG_GetOverdub();

void MBLIVE_SONG_SetFollow(u8 state);

void MBLIVE_SONG_GetFollow();

void MBLIVE_SONG_SetBackToArrangement(u8 state);

void MBLIVE_SONG_GetBackToArrangement();

void MBLIVE_SONG_SetDrawMode(u8 state);

void MBLIVE_SONG_GetDrawMode();

void MBLIVE_SONG_SetArrangementPosition(u8 mode, u16 val);

void MBLIVE_SONG_GetArrangementPosition();

void MBLIVE_SONG_SetTriggerQuantization(u8 state);

void MBLIVE_SONG_GetTriggerQuantization();

void MBLIVE_SONG_SetTempo(u8 mode, u16 value);

void MBLIVE_SONG_GetTempo();

void MBLIVE_SONG_SetTempoNudgeDown();

void MBLIVE_SONG_SetTempoNudgeUp();

void MBLIVE_SONG_SetTimeSignatureNumerator(u8 mode);

void MBLIVE_SONG_SetTimeSignatureDenominator(u8 mode);

void MBLIVE_SONG_GetTimeSignature();

void MBLIVE_SONG_SetGrooveAmount(u8 mode);

void MBLIVE_SONG_GetGrooveAmount();

void MBLIVE_SONG_SetMetronome(u8 state);

void MBLIVE_SONG_GetMetronome();

void MBLIVE_SONG_SetLoopStart(u8 mode, u16 val);

void MBLIVE_SONG_GetLoopStart();

void MBLIVE_SONG_SetLoopLength(u8 mode, u16 val);

void MBLIVE_SONG_GetLoopLength();

void MBLIVE_SONG_SetPunchIn(u8 state);

void MBLIVE_SONG_GetPunchIn();

void MBLIVE_SONG_SetPunchOut(u8 state);

void MBLIVE_SONG_GetPunchOut();

void MBLIVE_SONG_SetSessionArrangementView(u8 state);

void MBLIVE_SONG_GetSessionArrangementView();

void MBLIVE_SONG_SetClipDeviceView(u8 state);

void MBLIVE_SONG_GetClipDeviceView();

void MBLIVE_SONG_SetBrowserView(u8 state);

void MBLIVE_SONG_GetBrowserView();

void MBLIVE_SONG_SetDetailView(u8 state);

void MBLIVE_SONG_GetDetailView();

void MBLIVE_SONG_GetTrackCount();

void MBLIVE_SONG_SetSelectedTrack(u8 track);

void MBLIVE_SONG_GetSelectedTrack();

void MBLIVE_SONG_GetSceneCount();

void MBLIVE_SONG_SetSelectedScene(u8 scene);

void MBLIVE_SONG_GetSelectedScene();

functions called by live:

void MBLIVE_SONG_NotifyTransportChanged(u8 state);

void MBLIVE_SONG_NotifyRecordChanged(u8 state);

void MBLIVE_SONG_NotifyOverdubChanged(u8 state);

void MBLIVE_SONG_NotifyFollowChanged(u8 state);

void MBLIVE_SONG_NotifyBackToArrangementChanged(u8 state);

void MBLIVE_SONG_NotifyDrawModeChanged(u8 state);

void MBLIVE_SONG_NotifyArrangementPositionChanged(u32 val0, u8 val1, u8 val2);

void MBLIVE_SONG_NotifyTriggerQuantizationChanged(u8 state);

void MBLIVE_SONG_NotifyTempoChanged(u16 value);

void MBLIVE_SONG_NotifyTimeSignatureChanged(u8 val0, u8 val1);

void MBLIVE_SONG_NotifyGrooveAmountChanged(u8 value);

void MBLIVE_SONG_NotifyMetronomeChanged(u8 state);

void MBLIVE_SONG_NotifyLoopStartChanged(u32 val0, u8 val1, u8 val2);

void MBLIVE_SONG_NotifyLoopLengthChanged(u32 val0, u8 val1, u8 val2);

void MBLIVE_SONG_NotifyPunchInChanged(u8 state);

void MBLIVE_SONG_NotifyPunchOutChanged(u8 state);

void MBLIVE_SONG_NotifySessionArrangementViewChanged(u8 state);

void MBLIVE_SONG_NotifyClipDeviceViewChanged(u8 state);

void MBLIVE_SONG_NotifyBrowserViewChanged(u8 state);

void MBLIVE_SONG_NotifyDetailViewChanged(u8 state);

void MBLIVE_SONG_NotifyTrackCountChanged(u8 trackCount, u8 returnTrackCount);

void MBLIVE_SONG_NotifySelectedTrackChanged(u8 track);

void MBLIVE_SONG_NotifySceneCountChanged(u8 count);

void MBLIVE_SONG_NotifySelectedSceneChanged(u8 scene);

Sign in to follow this  
Followers 0


Looks very cool, which other LiveAPI projects exist already which can communicate with Live via Midi, without OSC. Is this project the only one?

Share this comment

Link to comment
Share on other sites

this is still in the works, and it's going great!

Share this comment

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now