reflexion 0.3.8.1 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 426bd478562126bba0a70a156d12aa361518d78be46a92bc98ab8bcc537df788
4
- data.tar.gz: 42c84def0974236fd1c7998087775e18142736b891828ef0a2529638249904f4
3
+ metadata.gz: acfb751a36e79b634057dfb05f148c4f079ebef32b4e3bacdedb90ce1eed3ae2
4
+ data.tar.gz: 523645a844af1565fdc07e9858188cb97400ae6886c2c948b10a6946838f3e3b
5
5
  SHA512:
6
- metadata.gz: 164313bfe16c3407ebe1649006337092ff6496742b50bef5e130396558a9ea72fbd30347922e4a60d2828d2d41a1ff2a2a2b1f5679001715d24e7acf4c73ace8
7
- data.tar.gz: 9e034593dd3d2e034ea3b0ba199b1febc96a8fae774a24107743f69332b8e747c45644d218c99689f0e334be342fce438a6c35e5037aa8e7f34d402ddc0679b3
6
+ metadata.gz: 10fb64e33a6332c6c083e8f1e2a9b902e475e86574cc7371b45b9a768c58a05c58c9caba69256c11be9d453e5b0811409c01484f9bc54f8834a0d1a5ba88b131
7
+ data.tar.gz: 8d2bed2ea3d72b67132e828687b139012739295192ec1b23d318d12bf7ee0b5a7e803a55c2b95fa2dcd105781c7a6ddfeabe59d4d701fb0b32edf3f725e6869d
@@ -0,0 +1,101 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "defs.h"
5
+
6
+
7
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ControlChangeEvent)
8
+
9
+ #define THIS to<Reflex::ControlChangeEvent*>(self)
10
+
11
+ #define CHECK RUCY_CHECK_OBJ(Reflex::ControlChangeEvent, self)
12
+
13
+
14
+ static
15
+ VALUE alloc(VALUE klass)
16
+ {
17
+ return new_type<Reflex::ControlChangeEvent>(klass);
18
+ }
19
+
20
+ static
21
+ VALUE initialize(VALUE self, VALUE channel, VALUE controller, VALUE value, VALUE time)
22
+ {
23
+ CHECK;
24
+
25
+ *THIS = Reflex::ControlChangeEvent(
26
+ to<int>(channel),
27
+ to<int>(controller),
28
+ to<float>(value),
29
+ to<double>(time));
30
+
31
+ return rb_call_super(0, NULL);
32
+ }
33
+
34
+ static
35
+ VALUE initialize_copy(VALUE self, VALUE obj)
36
+ {
37
+ CHECK;
38
+ *THIS = to<Reflex::ControlChangeEvent&>(obj).dup();
39
+ return self;
40
+ }
41
+
42
+ static
43
+ VALUE get_channel(VALUE self)
44
+ {
45
+ CHECK;
46
+ return value(THIS->channel());
47
+ }
48
+
49
+ static
50
+ VALUE get_controller(VALUE self)
51
+ {
52
+ CHECK;
53
+ return value(THIS->controller());
54
+ }
55
+
56
+ static
57
+ VALUE get_value(VALUE self)
58
+ {
59
+ CHECK;
60
+ return value(THIS->value());
61
+ }
62
+
63
+ static
64
+ VALUE is_captured(VALUE self)
65
+ {
66
+ CHECK;
67
+ return value(THIS->is_captured());
68
+ }
69
+
70
+
71
+ static Class cControlChangeEvent;
72
+
73
+ void
74
+ Init_reflex_control_change_event ()
75
+ {
76
+ Module mReflex = rb_define_module("Reflex");
77
+
78
+ cControlChangeEvent =
79
+ mReflex.define_class("ControlChangeEvent", Reflex::event_class());
80
+ rb_define_alloc_func(cControlChangeEvent, alloc);
81
+ rb_define_private_method(cControlChangeEvent, "initialize", RUBY_METHOD_FUNC(initialize), 4);
82
+ rb_define_private_method(cControlChangeEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
83
+ rb_define_method(cControlChangeEvent, "channel", RUBY_METHOD_FUNC(get_channel), 0);
84
+ rb_define_method(cControlChangeEvent, "controller", RUBY_METHOD_FUNC(get_controller), 0);
85
+ rb_define_method(cControlChangeEvent, "value", RUBY_METHOD_FUNC(get_value), 0);
86
+ cControlChangeEvent.define_method("captured?", is_captured);
87
+ }
88
+
89
+
90
+ namespace Reflex
91
+ {
92
+
93
+
94
+ Class
95
+ control_change_event_class ()
96
+ {
97
+ return cControlChangeEvent;
98
+ }
99
+
100
+
101
+ }// Reflex
@@ -21,6 +21,13 @@ VALUE alloc(VALUE klass)
21
21
  Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate MIDI class.");
22
22
  }
23
23
 
24
+ static
25
+ VALUE on_midi(VALUE self, VALUE event)
26
+ {
27
+ CHECK;
28
+ CALL(on_midi(to<Reflex::MIDIEvent*>(event)));
29
+ }
30
+
24
31
  static
25
32
  VALUE on_note(VALUE self, VALUE event)
26
33
  {
@@ -42,6 +49,13 @@ VALUE on_note_off(VALUE self, VALUE event)
42
49
  CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
43
50
  }
44
51
 
52
+ static
53
+ VALUE on_control_change(VALUE self, VALUE event)
54
+ {
55
+ CHECK;
56
+ CALL(on_control_change(to<Reflex::ControlChangeEvent*>(event)));
57
+ }
58
+
45
59
  static
46
60
  VALUE s_get_all(VALUE self)
47
61
  {
@@ -60,9 +74,11 @@ Init_reflex_midi ()
60
74
 
61
75
  cMIDI = mReflex.define_class("MIDI", Reflex::device_class());
62
76
  rb_define_alloc_func(cMIDI, alloc);
77
+ rb_define_method(cMIDI, "on_midi", RUBY_METHOD_FUNC(on_midi), 1);
63
78
  rb_define_method(cMIDI, "on_note", RUBY_METHOD_FUNC(on_note), 1);
64
79
  rb_define_method(cMIDI, "on_note_on", RUBY_METHOD_FUNC(on_note_on), 1);
65
80
  rb_define_method(cMIDI, "on_note_off", RUBY_METHOD_FUNC(on_note_off), 1);
81
+ rb_define_method(cMIDI, "on_control_change", RUBY_METHOD_FUNC(on_control_change), 1);
66
82
 
67
83
  rb_define_singleton_method(cMIDI, "all", RUBY_METHOD_FUNC(s_get_all), 0);
68
84
  }
@@ -0,0 +1,124 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "reflex/ruby/midi.h"
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDIEvent)
9
+
10
+ #define THIS to<Reflex::MIDIEvent*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_OBJ(Reflex::MIDIEvent, self)
13
+
14
+
15
+ static
16
+ VALUE alloc(VALUE klass)
17
+ {
18
+ return new_type<Reflex::MIDIEvent>(klass);
19
+ }
20
+
21
+ static
22
+ VALUE initialize(VALUE self, VALUE midi, VALUE byte0, VALUE byte1, VALUE byte2, VALUE time)
23
+ {
24
+ CHECK;
25
+
26
+ uchar bytes[3] =
27
+ {
28
+ to<uchar>(byte0),
29
+ to<uchar>(byte1),
30
+ to<uchar>(byte2)
31
+ };
32
+ *THIS = Reflex::MIDIEvent(
33
+ midi ? to<Reflex::MIDI*>(midi) : NULL,
34
+ bytes,
35
+ to<double>(time));
36
+
37
+ return rb_call_super(0, NULL);
38
+ }
39
+
40
+ static
41
+ VALUE initialize_copy(VALUE self, VALUE obj)
42
+ {
43
+ CHECK;
44
+ *THIS = to<Reflex::MIDIEvent&>(obj).dup();
45
+ return self;
46
+ }
47
+
48
+ static
49
+ VALUE get_action(VALUE self)
50
+ {
51
+ CHECK;
52
+ return value(THIS->action());
53
+ }
54
+
55
+ static
56
+ VALUE get_channel(VALUE self)
57
+ {
58
+ CHECK;
59
+ return value(THIS->channel());
60
+ }
61
+
62
+ static
63
+ VALUE get_data1(VALUE self)
64
+ {
65
+ CHECK;
66
+ return value(THIS->data1());
67
+ }
68
+
69
+ static
70
+ VALUE get_data2(VALUE self)
71
+ {
72
+ CHECK;
73
+ return value(THIS->data2());
74
+ }
75
+
76
+ static
77
+ VALUE is_captured(VALUE self)
78
+ {
79
+ CHECK;
80
+ return value(THIS->is_captured());
81
+ }
82
+
83
+
84
+ static Class cMIDIEvent;
85
+
86
+ void
87
+ Init_reflex_midi_event ()
88
+ {
89
+ Module mReflex = rb_define_module("Reflex");
90
+
91
+ cMIDIEvent = mReflex.define_class("MIDIEvent", Reflex::event_class());
92
+ rb_define_alloc_func(cMIDIEvent, alloc);
93
+ rb_define_private_method(cMIDIEvent, "initialize", RUBY_METHOD_FUNC(initialize), 5);
94
+ rb_define_private_method(cMIDIEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
95
+ rb_define_method(cMIDIEvent, "action", RUBY_METHOD_FUNC(get_action), 0);
96
+ rb_define_method(cMIDIEvent, "channel", RUBY_METHOD_FUNC(get_channel), 0);
97
+ rb_define_method(cMIDIEvent, "data1", RUBY_METHOD_FUNC(get_data1), 0);
98
+ rb_define_method(cMIDIEvent, "data2", RUBY_METHOD_FUNC(get_data2), 0);
99
+ cMIDIEvent.define_method("captured?", is_captured);
100
+
101
+ cMIDIEvent.define_const("ACTION_NONE", Reflex::MIDIEvent::ACTION_NONE);
102
+ cMIDIEvent.define_const("NOTE_ON", Reflex::MIDIEvent::NOTE_ON);
103
+ cMIDIEvent.define_const("NOTE_OFF", Reflex::MIDIEvent::NOTE_OFF);
104
+ cMIDIEvent.define_const("CONTROL_CHANGE", Reflex::MIDIEvent::CONTROL_CHANGE);
105
+ cMIDIEvent.define_const("PROGRAM_CHANGE", Reflex::MIDIEvent::PROGRAM_CHANGE);
106
+ cMIDIEvent.define_const("CHANNEL_PRESSURE", Reflex::MIDIEvent::CHANNEL_PRESSURE);
107
+ cMIDIEvent.define_const("KEY_PRESSURE", Reflex::MIDIEvent::KEY_PRESSURE);
108
+ cMIDIEvent.define_const("PITCH_BEND_CHANGE", Reflex::MIDIEvent::PITCH_BEND_CHANGE);
109
+ cMIDIEvent.define_const("SYSTEM", Reflex::MIDIEvent::SYSTEM);
110
+ }
111
+
112
+
113
+ namespace Reflex
114
+ {
115
+
116
+
117
+ Class
118
+ midi_event_class ()
119
+ {
120
+ return cMIDIEvent;
121
+ }
122
+
123
+
124
+ }// Reflex
@@ -21,7 +21,9 @@ void Init_reflex_focus_event ();
21
21
  void Init_reflex_key_event ();
22
22
  void Init_reflex_pointer_event ();
23
23
  void Init_reflex_wheel_event ();
24
+ void Init_reflex_midi_event ();
24
25
  void Init_reflex_note_event ();
26
+ void Init_reflex_control_change_event ();
25
27
  void Init_reflex_capture_event ();
26
28
  void Init_reflex_timer_event ();
27
29
  void Init_reflex_contact_event ();
@@ -75,7 +77,9 @@ extern "C" void
75
77
  Init_reflex_key_event();
76
78
  Init_reflex_pointer_event();
77
79
  Init_reflex_wheel_event();
80
+ Init_reflex_midi_event();
78
81
  Init_reflex_note_event();
82
+ Init_reflex_control_change_event();
79
83
  Init_reflex_capture_event();
80
84
  Init_reflex_timer_event();
81
85
  Init_reflex_contact_event();
@@ -1040,6 +1040,41 @@ VALUE on_wheel(VALUE self, VALUE event)
1040
1040
  CALL(on_wheel(to<Reflex::WheelEvent*>(event)));
1041
1041
  }
1042
1042
 
1043
+ static
1044
+ VALUE on_midi(VALUE self, VALUE event)
1045
+ {
1046
+ CHECK;
1047
+ CALL(on_midi(to<Reflex::MIDIEvent*>(event)));
1048
+ }
1049
+
1050
+ static
1051
+ VALUE on_note(VALUE self, VALUE event)
1052
+ {
1053
+ CHECK;
1054
+ CALL(on_note(to<Reflex::NoteEvent*>(event)));
1055
+ }
1056
+
1057
+ static
1058
+ VALUE on_note_on(VALUE self, VALUE event)
1059
+ {
1060
+ CHECK;
1061
+ CALL(on_note_on(to<Reflex::NoteEvent*>(event)));
1062
+ }
1063
+
1064
+ static
1065
+ VALUE on_note_off(VALUE self, VALUE event)
1066
+ {
1067
+ CHECK;
1068
+ CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
1069
+ }
1070
+
1071
+ static
1072
+ VALUE on_control_change(VALUE self, VALUE event)
1073
+ {
1074
+ CHECK;
1075
+ CALL(on_control_change(to<Reflex::ControlChangeEvent*>(event)));
1076
+ }
1077
+
1043
1078
  static
1044
1079
  VALUE on_capture(VALUE self, VALUE event)
1045
1080
  {
@@ -1215,6 +1250,11 @@ Init_reflex_view ()
1215
1250
  rb_define_method(cView, "on_pointer_move", RUBY_METHOD_FUNC(on_pointer_move), 1);
1216
1251
  rb_define_method(cView, "on_pointer_cancel", RUBY_METHOD_FUNC(on_pointer_cancel), 1);
1217
1252
  rb_define_method(cView, "on_wheel", RUBY_METHOD_FUNC(on_wheel), 1);
1253
+ rb_define_method(cView, "on_midi", RUBY_METHOD_FUNC(on_midi), 1);
1254
+ rb_define_method(cView, "on_note", RUBY_METHOD_FUNC(on_note), 1);
1255
+ rb_define_method(cView, "on_note_on", RUBY_METHOD_FUNC(on_note_on), 1);
1256
+ rb_define_method(cView, "on_note_off", RUBY_METHOD_FUNC(on_note_off), 1);
1257
+ rb_define_method(cView, "on_control_change", RUBY_METHOD_FUNC(on_control_change), 1);
1218
1258
  rb_define_method(cView, "on_capture", RUBY_METHOD_FUNC(on_capture), 1);
1219
1259
  rb_define_method(cView, "on_timer", RUBY_METHOD_FUNC(on_timer), 1);
1220
1260
  cView.define_method( "will_contact?", will_contact);
@@ -1225,7 +1265,7 @@ Init_reflex_view ()
1225
1265
  cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
1226
1266
  cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);
1227
1267
  cView.define_const("CAPTURE_POINTER", Reflex::View::CAPTURE_POINTER);
1228
- cView.define_const("CAPTURE_NOTE", Reflex::View::CAPTURE_NOTE);
1268
+ cView.define_const("CAPTURE_MIDI", Reflex::View::CAPTURE_MIDI);
1229
1269
  cView.define_const("CAPTURE_ALL", Reflex::View::CAPTURE_ALL);
1230
1270
 
1231
1271
  define_selector_methods<Reflex::View>(cView);
@@ -369,6 +369,13 @@ VALUE on_wheel(VALUE self, VALUE event)
369
369
  CALL(on_wheel(to<Reflex::WheelEvent*>(event)));
370
370
  }
371
371
 
372
+ static
373
+ VALUE on_midi(VALUE self, VALUE event)
374
+ {
375
+ CHECK;
376
+ CALL(on_midi(to<Reflex::MIDIEvent*>(event)));
377
+ }
378
+
372
379
  static
373
380
  VALUE on_note(VALUE self, VALUE event)
374
381
  {
@@ -390,6 +397,13 @@ VALUE on_note_off(VALUE self, VALUE event)
390
397
  CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
391
398
  }
392
399
 
400
+ static
401
+ VALUE on_control_change(VALUE self, VALUE event)
402
+ {
403
+ CHECK;
404
+ CALL(on_control_change(to<Reflex::ControlChangeEvent*>(event)));
405
+ }
406
+
393
407
 
394
408
  static Class cWindow;
395
409
 
@@ -443,9 +457,11 @@ Init_reflex_window ()
443
457
  rb_define_method(cWindow, "on_pointer_move", RUBY_METHOD_FUNC(on_pointer_move), 1);
444
458
  rb_define_method(cWindow, "on_pointer_cancel", RUBY_METHOD_FUNC(on_pointer_cancel), 1);
445
459
  rb_define_method(cWindow, "on_wheel", RUBY_METHOD_FUNC(on_wheel), 1);
460
+ rb_define_method(cWindow, "on_midi", RUBY_METHOD_FUNC(on_midi), 1);
446
461
  rb_define_method(cWindow, "on_note", RUBY_METHOD_FUNC(on_note), 1);
447
462
  rb_define_method(cWindow, "on_note_on", RUBY_METHOD_FUNC(on_note_on), 1);
448
463
  rb_define_method(cWindow, "on_note_off", RUBY_METHOD_FUNC(on_note_off), 1);
464
+ rb_define_method(cWindow, "on_control_change", RUBY_METHOD_FUNC(on_control_change), 1);
449
465
 
450
466
  cWindow.define_const("ORIENTATION_PORTRAIT", Reflex::Window::FLAG_PORTRAIT);
451
467
  cWindow.define_const("ORIENTATION_LANDSCAPE", Reflex::Window::FLAG_LANDSCAPE);
data/ChangeLog.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # reflex ChangeLog
2
2
 
3
3
 
4
+ ## [v0.3.9] - 2025-05-22
5
+
6
+ - Add MIDIEvent class and on_midi() event handler
7
+ - Add ControlChangeEvent and on_control_change() event handler
8
+ - Replace capture type from CAPTURE_NOTE to CAPTURE_MIDI
9
+
10
+
4
11
  ## [v0.3.8.1] - 2025-05-13
5
12
 
6
13
  - Fix a crash that occasionally occurred at startup when a MIDI device was connected
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.8.1
1
+ 0.3.9
@@ -0,0 +1,108 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "defs.h"
5
+
6
+
7
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ControlChangeEvent)
8
+
9
+ #define THIS to<Reflex::ControlChangeEvent*>(self)
10
+
11
+ #define CHECK RUCY_CHECK_OBJ(Reflex::ControlChangeEvent, self)
12
+
13
+
14
+ static
15
+ RUCY_DEF_ALLOC(alloc, klass)
16
+ {
17
+ return new_type<Reflex::ControlChangeEvent>(klass);
18
+ }
19
+ RUCY_END
20
+
21
+ static
22
+ RUCY_DEF4(initialize, channel, controller, value, time)
23
+ {
24
+ CHECK;
25
+
26
+ *THIS = Reflex::ControlChangeEvent(
27
+ to<int>(channel),
28
+ to<int>(controller),
29
+ to<float>(value),
30
+ to<double>(time));
31
+
32
+ return rb_call_super(0, NULL);
33
+ }
34
+ RUCY_END
35
+
36
+ static
37
+ RUCY_DEF1(initialize_copy, obj)
38
+ {
39
+ CHECK;
40
+ *THIS = to<Reflex::ControlChangeEvent&>(obj).dup();
41
+ return self;
42
+ }
43
+ RUCY_END
44
+
45
+ static
46
+ RUCY_DEF0(get_channel)
47
+ {
48
+ CHECK;
49
+ return value(THIS->channel());
50
+ }
51
+ RUCY_END
52
+
53
+ static
54
+ RUCY_DEF0(get_controller)
55
+ {
56
+ CHECK;
57
+ return value(THIS->controller());
58
+ }
59
+ RUCY_END
60
+
61
+ static
62
+ RUCY_DEF0(get_value)
63
+ {
64
+ CHECK;
65
+ return value(THIS->value());
66
+ }
67
+ RUCY_END
68
+
69
+ static
70
+ RUCY_DEF0(is_captured)
71
+ {
72
+ CHECK;
73
+ return value(THIS->is_captured());
74
+ }
75
+ RUCY_END
76
+
77
+
78
+ static Class cControlChangeEvent;
79
+
80
+ void
81
+ Init_reflex_control_change_event ()
82
+ {
83
+ Module mReflex = define_module("Reflex");
84
+
85
+ cControlChangeEvent =
86
+ mReflex.define_class("ControlChangeEvent", Reflex::event_class());
87
+ cControlChangeEvent.define_alloc_func(alloc);
88
+ cControlChangeEvent.define_private_method("initialize", initialize);
89
+ cControlChangeEvent.define_private_method("initialize_copy", initialize_copy);
90
+ cControlChangeEvent.define_method("channel", get_channel);
91
+ cControlChangeEvent.define_method("controller", get_controller);
92
+ cControlChangeEvent.define_method("value", get_value);
93
+ cControlChangeEvent.define_method("captured?", is_captured);
94
+ }
95
+
96
+
97
+ namespace Reflex
98
+ {
99
+
100
+
101
+ Class
102
+ control_change_event_class ()
103
+ {
104
+ return cControlChangeEvent;
105
+ }
106
+
107
+
108
+ }// Reflex
data/ext/reflex/midi.cpp CHANGED
@@ -22,6 +22,14 @@ RUCY_DEF_ALLOC(alloc, klass)
22
22
  }
23
23
  RUCY_END
24
24
 
25
+ static
26
+ RUCY_DEF1(on_midi, event)
27
+ {
28
+ CHECK;
29
+ CALL(on_midi(to<Reflex::MIDIEvent*>(event)));
30
+ }
31
+ RUCY_END
32
+
25
33
  static
26
34
  RUCY_DEF1(on_note, event)
27
35
  {
@@ -46,6 +54,14 @@ RUCY_DEF1(on_note_off, event)
46
54
  }
47
55
  RUCY_END
48
56
 
57
+ static
58
+ RUCY_DEF1(on_control_change, event)
59
+ {
60
+ CHECK;
61
+ CALL(on_control_change(to<Reflex::ControlChangeEvent*>(event)));
62
+ }
63
+ RUCY_END
64
+
49
65
  static
50
66
  RUCY_DEF0(s_get_all)
51
67
  {
@@ -65,9 +81,11 @@ Init_reflex_midi ()
65
81
 
66
82
  cMIDI = mReflex.define_class("MIDI", Reflex::device_class());
67
83
  cMIDI.define_alloc_func(alloc);
68
- cMIDI.define_method("on_note", on_note);
69
- cMIDI.define_method("on_note_on", on_note_on);
70
- cMIDI.define_method("on_note_off", on_note_off);
84
+ cMIDI.define_method("on_midi", on_midi);
85
+ cMIDI.define_method("on_note", on_note);
86
+ cMIDI.define_method("on_note_on", on_note_on);
87
+ cMIDI.define_method("on_note_off", on_note_off);
88
+ cMIDI.define_method("on_control_change", on_control_change);
71
89
 
72
90
  cMIDI.define_singleton_method("all", s_get_all);
73
91
  }
@@ -0,0 +1,132 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "reflex/ruby/midi.h"
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDIEvent)
9
+
10
+ #define THIS to<Reflex::MIDIEvent*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_OBJ(Reflex::MIDIEvent, self)
13
+
14
+
15
+ static
16
+ RUCY_DEF_ALLOC(alloc, klass)
17
+ {
18
+ return new_type<Reflex::MIDIEvent>(klass);
19
+ }
20
+ RUCY_END
21
+
22
+ static
23
+ RUCY_DEF5(initialize, midi, byte0, byte1, byte2, time)
24
+ {
25
+ CHECK;
26
+
27
+ uchar bytes[3] =
28
+ {
29
+ to<uchar>(byte0),
30
+ to<uchar>(byte1),
31
+ to<uchar>(byte2)
32
+ };
33
+ *THIS = Reflex::MIDIEvent(
34
+ midi ? to<Reflex::MIDI*>(midi) : NULL,
35
+ bytes,
36
+ to<double>(time));
37
+
38
+ return rb_call_super(0, NULL);
39
+ }
40
+ RUCY_END
41
+
42
+ static
43
+ RUCY_DEF1(initialize_copy, obj)
44
+ {
45
+ CHECK;
46
+ *THIS = to<Reflex::MIDIEvent&>(obj).dup();
47
+ return self;
48
+ }
49
+ RUCY_END
50
+
51
+ static
52
+ RUCY_DEF0(get_action)
53
+ {
54
+ CHECK;
55
+ return value(THIS->action());
56
+ }
57
+ RUCY_END
58
+
59
+ static
60
+ RUCY_DEF0(get_channel)
61
+ {
62
+ CHECK;
63
+ return value(THIS->channel());
64
+ }
65
+ RUCY_END
66
+
67
+ static
68
+ RUCY_DEF0(get_data1)
69
+ {
70
+ CHECK;
71
+ return value(THIS->data1());
72
+ }
73
+ RUCY_END
74
+
75
+ static
76
+ RUCY_DEF0(get_data2)
77
+ {
78
+ CHECK;
79
+ return value(THIS->data2());
80
+ }
81
+ RUCY_END
82
+
83
+ static
84
+ RUCY_DEF0(is_captured)
85
+ {
86
+ CHECK;
87
+ return value(THIS->is_captured());
88
+ }
89
+ RUCY_END
90
+
91
+
92
+ static Class cMIDIEvent;
93
+
94
+ void
95
+ Init_reflex_midi_event ()
96
+ {
97
+ Module mReflex = define_module("Reflex");
98
+
99
+ cMIDIEvent = mReflex.define_class("MIDIEvent", Reflex::event_class());
100
+ cMIDIEvent.define_alloc_func(alloc);
101
+ cMIDIEvent.define_private_method("initialize", initialize);
102
+ cMIDIEvent.define_private_method("initialize_copy", initialize_copy);
103
+ cMIDIEvent.define_method("action", get_action);
104
+ cMIDIEvent.define_method("channel", get_channel);
105
+ cMIDIEvent.define_method("data1", get_data1);
106
+ cMIDIEvent.define_method("data2", get_data2);
107
+ cMIDIEvent.define_method("captured?", is_captured);
108
+
109
+ cMIDIEvent.define_const("ACTION_NONE", Reflex::MIDIEvent::ACTION_NONE);
110
+ cMIDIEvent.define_const("NOTE_ON", Reflex::MIDIEvent::NOTE_ON);
111
+ cMIDIEvent.define_const("NOTE_OFF", Reflex::MIDIEvent::NOTE_OFF);
112
+ cMIDIEvent.define_const("CONTROL_CHANGE", Reflex::MIDIEvent::CONTROL_CHANGE);
113
+ cMIDIEvent.define_const("PROGRAM_CHANGE", Reflex::MIDIEvent::PROGRAM_CHANGE);
114
+ cMIDIEvent.define_const("CHANNEL_PRESSURE", Reflex::MIDIEvent::CHANNEL_PRESSURE);
115
+ cMIDIEvent.define_const("KEY_PRESSURE", Reflex::MIDIEvent::KEY_PRESSURE);
116
+ cMIDIEvent.define_const("PITCH_BEND_CHANGE", Reflex::MIDIEvent::PITCH_BEND_CHANGE);
117
+ cMIDIEvent.define_const("SYSTEM", Reflex::MIDIEvent::SYSTEM);
118
+ }
119
+
120
+
121
+ namespace Reflex
122
+ {
123
+
124
+
125
+ Class
126
+ midi_event_class ()
127
+ {
128
+ return cMIDIEvent;
129
+ }
130
+
131
+
132
+ }// Reflex