Vuo  2.4.0
VuoMidiNote.c
Go to the documentation of this file.
1
10#include "type.h"
11#include "VuoMidiNote.h"
12
14#ifdef VUO_COMPILER
16 "title" : "MIDI Note",
17 "description" : "A music note event sent via MIDI.",
18 "keywords" : [ ],
19 "version" : "1.0.0",
20 "dependencies" : [
21 "VuoBoolean",
22 "VuoInteger",
23 "VuoText"
24 ]
25 });
26#endif
28
43{
44 return (VuoMidiNote){
45 VuoJson_getObjectValue(VuoInteger, js, "channel", 1),
46 VuoJson_getObjectValue(VuoBoolean, js, "isNoteOn", true),
47 VuoJson_getObjectValue(VuoInteger, js, "velocity", 127),
48 VuoJson_getObjectValue(VuoInteger, js, "noteNumber", 60),
49 };
50}
51
57{
58 json_object *js = json_object_new_object();
59
60 json_object *channelObject = VuoInteger_getJson(mn.channel);
61 json_object_object_add(js, "channel", channelObject);
62
63 json_object *isNoteOnObject = VuoBoolean_getJson(mn.isNoteOn);
64 json_object_object_add(js, "isNoteOn", isNoteOnObject);
65
66 json_object *velocityObject = VuoInteger_getJson(mn.velocity);
67 json_object_object_add(js, "velocity", velocityObject);
68
69 json_object *noteNumberObject = VuoInteger_getJson(mn.noteNumber);
70 json_object_object_add(js, "noteNumber", noteNumberObject);
71
72 return js;
73}
74
83{
84 const char *noteNames[] = { "C", "C♯", "D", "D♯", "E", "F", "F♯", "G", "G♯", "A", "A♯", "B" };
85 const char *noteName = noteNames[mn.noteNumber % 12];
86 char noteOctave = (char)mn.noteNumber / 12 - 1;
87 const char *onOff = mn.isNoteOn ? "on" : "off";
88
89 return VuoText_format("Channel %d: note %s%d (#%d) %s, velocity %d",
90 mn.channel, noteName, noteOctave, mn.noteNumber, onOff, mn.velocity);
91}
92
96bool VuoMidiNote_areEqual(const VuoMidiNote value1, const VuoMidiNote value2)
97{
98 return (value1.channel == value2.channel
99 && value1.isNoteOn == value2.isNoteOn
100 && value1.velocity == value2.velocity
101 && value1.noteNumber == value2.noteNumber);
102}
103
109{
114 return false;
115}