Vuo  2.0.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
27 
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 
96 bool 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 }