fix syntax
This commit is contained in:
82
midi.c
82
midi.c
@@ -230,58 +230,59 @@ JSC_CCALL(midi_parse,
|
||||
tml_get_info(midi, NULL, NULL, &total_notes, NULL, &time_length);
|
||||
|
||||
// Create result object
|
||||
JSValue result = JS_NewObject(js);
|
||||
JS_SetPropertyStr(js, result, "duration_ms", JS_NewInt32(js, time_length));
|
||||
JS_SetPropertyStr(js, result, "note_count", JS_NewInt32(js, total_notes));
|
||||
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(result, JS_NewObject(js));
|
||||
JS_SetPropertyStr(js, result.val, "duration_ms", JS_NewInt32(js, time_length));
|
||||
JS_SetPropertyStr(js, result.val, "note_count", JS_NewInt32(js, total_notes));
|
||||
|
||||
// Build events array
|
||||
JSValue events = JS_NewArray(js);
|
||||
JS_ROOT(events, JS_NewArray(js));
|
||||
int idx = 0;
|
||||
|
||||
|
||||
for (tml_message *msg = midi; msg; msg = msg->next) {
|
||||
JSValue evt = JS_NewObject(js);
|
||||
JS_SetPropertyStr(js, evt, "time", JS_NewInt32(js, msg->time));
|
||||
JS_SetPropertyStr(js, evt, "channel", JS_NewInt32(js, msg->channel));
|
||||
|
||||
JS_ROOT(evt, JS_NewObject(js));
|
||||
JS_SetPropertyStr(js, evt.val, "time", JS_NewInt32(js, msg->time));
|
||||
JS_SetPropertyStr(js, evt.val, "channel", JS_NewInt32(js, msg->channel));
|
||||
|
||||
switch (msg->type) {
|
||||
case TML_NOTE_ON:
|
||||
JS_SetPropertyStr(js, evt, "type", JS_NewString(js, "note_on"));
|
||||
JS_SetPropertyStr(js, evt, "key", JS_NewInt32(js, msg->key));
|
||||
JS_SetPropertyStr(js, evt, "velocity", JS_NewInt32(js, msg->velocity));
|
||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "note_on"));
|
||||
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
|
||||
JS_SetPropertyStr(js, evt.val, "velocity", JS_NewInt32(js, msg->velocity));
|
||||
break;
|
||||
case TML_NOTE_OFF:
|
||||
JS_SetPropertyStr(js, evt, "type", JS_NewString(js, "note_off"));
|
||||
JS_SetPropertyStr(js, evt, "key", JS_NewInt32(js, msg->key));
|
||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "note_off"));
|
||||
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
|
||||
break;
|
||||
case TML_CONTROL_CHANGE:
|
||||
JS_SetPropertyStr(js, evt, "type", JS_NewString(js, "control"));
|
||||
JS_SetPropertyStr(js, evt, "control", JS_NewInt32(js, msg->control));
|
||||
JS_SetPropertyStr(js, evt, "value", JS_NewInt32(js, msg->control_value));
|
||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "control"));
|
||||
JS_SetPropertyStr(js, evt.val, "control", JS_NewInt32(js, msg->control));
|
||||
JS_SetPropertyStr(js, evt.val, "value", JS_NewInt32(js, msg->control_value));
|
||||
break;
|
||||
case TML_PROGRAM_CHANGE:
|
||||
JS_SetPropertyStr(js, evt, "type", JS_NewString(js, "program"));
|
||||
JS_SetPropertyStr(js, evt, "program", JS_NewInt32(js, msg->program));
|
||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "program"));
|
||||
JS_SetPropertyStr(js, evt.val, "program", JS_NewInt32(js, msg->program));
|
||||
break;
|
||||
case TML_PITCH_BEND:
|
||||
JS_SetPropertyStr(js, evt, "type", JS_NewString(js, "pitch_bend"));
|
||||
JS_SetPropertyStr(js, evt, "pitch_bend", JS_NewInt32(js, msg->pitch_bend));
|
||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "pitch_bend"));
|
||||
JS_SetPropertyStr(js, evt.val, "pitch_bend", JS_NewInt32(js, msg->pitch_bend));
|
||||
break;
|
||||
case TML_SET_TEMPO:
|
||||
JS_SetPropertyStr(js, evt, "type", JS_NewString(js, "tempo"));
|
||||
JS_SetPropertyStr(js, evt, "tempo", JS_NewInt32(js, tml_get_tempo_value(msg)));
|
||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "tempo"));
|
||||
JS_SetPropertyStr(js, evt.val, "tempo", JS_NewInt32(js, tml_get_tempo_value(msg)));
|
||||
break;
|
||||
default:
|
||||
JS_FreeValue(js, evt);
|
||||
continue;
|
||||
}
|
||||
|
||||
JS_SetPropertyNumber(js, events, idx++, evt);
|
||||
|
||||
JS_SetPropertyNumber(js, events.val, idx++, evt.val);
|
||||
}
|
||||
|
||||
JS_SetPropertyStr(js, result, "events", events);
|
||||
|
||||
|
||||
JS_SetPropertyStr(js, result.val, "events", events.val);
|
||||
|
||||
tml_free(midi);
|
||||
return result;
|
||||
JS_RestoreFrame(_js_ctx, _js_gc_frame, _js_local_frame);
|
||||
ret = result.val;
|
||||
)
|
||||
|
||||
// ============================================================================
|
||||
@@ -310,13 +311,14 @@ static const JSCFunctionListEntry js_midi_funcs[] = {
|
||||
};
|
||||
|
||||
CELL_USE_INIT(
|
||||
JSValue midi = JS_NewObject(js);
|
||||
JS_SetPropertyFunctionList(js, midi, js_midi_funcs, sizeof(js_midi_funcs)/sizeof(js_midi_funcs[0]));
|
||||
|
||||
JSValue soundfont = JS_NewObject(js);
|
||||
JS_SetPropertyFunctionList(js, soundfont, js_soundfont_funcs, sizeof(js_soundfont_funcs)/sizeof(js_soundfont_funcs[0]));
|
||||
|
||||
JS_SetPropertyStr(js, midi, "soundfont", soundfont);
|
||||
|
||||
return midi;
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(midi, JS_NewObject(js));
|
||||
JS_SetPropertyFunctionList(js, midi.val, js_midi_funcs, sizeof(js_midi_funcs)/sizeof(js_midi_funcs[0]));
|
||||
|
||||
JS_ROOT(soundfont, JS_NewObject(js));
|
||||
JS_SetPropertyFunctionList(js, soundfont.val, js_soundfont_funcs, sizeof(js_soundfont_funcs)/sizeof(js_soundfont_funcs[0]));
|
||||
|
||||
JS_SetPropertyStr(js, midi.val, "soundfont", soundfont.val);
|
||||
|
||||
JS_RETURN(midi.val);
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user