Forums > Max For Live

Help with M4L Javascript and get_selected_notes

July 21, 2012 | 4:04 pm

I’m trying to retrieve all the midi information from a specific clip on a specific track. I’ve managed to get data returned but what I am assuming is the pitch info doesn’t match what’s being played in the clip. The code is below:

function myfunction(trk, slot){
var api = new LiveAPI(function(result){
this.call(‘select_all_notes’);
var notes = this.call(‘get_selected_notes’,'pitch’); //adding the pitch argument seems to make no difference
/*
SHOULD RETURN:
count [int] is the number of note lines to follow.
pitch [int] is the MIDI note number, 0…127, 60 is C3.
time [double] is the note start time in beats of absolute clip time.
duration [double] is the note length in beats.
velocity [int] is the note velocity, 1 … 127.
muted [bool] is 1 if the note is deactivated.
*/
post(notes);

}, "live_set tracks "+trk+" clip_slots "+slot+" clip");
}

The output I get looks like this: "notes, 312, note, 46,13.12,0.12,76,0,note,48,13,0.12,73,0,note,48…etc"

Based on the docs the first two values tell me the "count" or total number of notes in the clip. and then there is a "note" followed by 5 values. I am assuming that as per the docs, the values should be pitch, time, duration,velocity,muted in that order. However as I stated before, the pitches listed do not match what is being played and in this set I put together there is only one midi clip. Am I reading this wrong? or is there something wrong with how I’m calling the function?

Furthermore, according to the docs, arguments can be added to "get_selected_notes" so if I wanted only the pitch values I could add the "pitch" argument to "get_selected_notes". When I tried to add the pitch argument in javascript it still returns everything though. What am I doing wrong?


July 21, 2012 | 6:58 pm

I also posted this question in the Ableton forums and figured it out. I filtered the data in js and took a second look. It turns out that "get_selected_notes" returns all the notes in ascending pitch order. So it would list all the E3s and then the E4s and so on. So that makes sense now. If I want to list the notes by order of appearance then I have to sort it myself.


August 6, 2012 | 11:17 pm

Oh, sorry I missed this at the time!

I have a tool to help you here.

Here’s something that gets all the notes from a track, puts them into a neat JS dictionary, and then sorts them according to time.


Viewing 3 posts - 1 through 3 (of 3 total)