@@ -12,30 +12,41 @@ namespace audio_tools {
12
12
* @author Phil Schatzmann
13
13
*/
14
14
class RCAudioPlayerOSCSender {
15
- RCAudioPlayerOSCSender (Print &out) { p_out = &out; }
15
+ RCAudioPlayerOSCSender () = default ;
16
+ RCAudioPlayerOSCSender (Print &out) { setOutput (out); }
17
+
18
+ void setOutput (Print &out) { p_out = &out; }
19
+
20
+ bool setActive (bool active) { return active ? play () : stop (); }
21
+
22
+ bool play () {
23
+ if (p_out == nullptr ) return false ;
16
24
17
- void play () {
18
25
uint8_t data[20 ];
19
26
OSCData msg{data, sizeof (data)};
20
27
21
28
msg.setAddress (" /play" );
22
29
msg.setFormat (" " );
23
30
p_out->write (msg.data (), msg.size ());
31
+ return true ;
24
32
}
25
33
26
34
// / halts the playing: same as setActive(false)
27
- void stop () {
35
+ bool stop () {
36
+ if (p_out == nullptr ) return false ;
28
37
uint8_t data[20 ];
29
38
OSCData msg{data, sizeof (data)};
30
39
31
40
msg.setAddress (" /stop" );
32
41
msg.setFormat (" " );
33
42
p_out->write (msg.data (), msg.size ());
43
+ return true ;
34
44
}
35
45
36
46
// / moves to next file or nth next file when indicating an offset. Negative
37
47
// / values are supported to move back.
38
48
bool next (int offset = 1 ) {
49
+ if (p_out == nullptr ) return false ;
39
50
uint8_t data[80 ];
40
51
OSCData msg{data, sizeof (data)};
41
52
@@ -47,6 +58,7 @@ class RCAudioPlayerOSCSender {
47
58
}
48
59
49
60
bool previous (int offset = 1 ) {
61
+ if (p_out == nullptr ) return false ;
50
62
uint8_t data[80 ];
51
63
OSCData msg{data, sizeof (data)};
52
64
@@ -59,6 +71,7 @@ class RCAudioPlayerOSCSender {
59
71
60
72
// / moves to the selected file position
61
73
bool setIndex (int idx) {
74
+ if (p_out == nullptr ) return false ;
62
75
uint8_t data[80 ];
63
76
OSCData msg{data, sizeof (data)};
64
77
@@ -71,6 +84,7 @@ class RCAudioPlayerOSCSender {
71
84
72
85
// / Moves to the selected file w/o updating the actual file position
73
86
bool setPath (const char *path) {
87
+ if (p_out == nullptr ) return false ;
74
88
uint8_t data[strlen (path) + 20 ];
75
89
OSCData msg{data, sizeof (data)};
76
90
@@ -82,6 +96,7 @@ class RCAudioPlayerOSCSender {
82
96
}
83
97
84
98
bool setVolume (float volume) {
99
+ if (p_out == nullptr ) return false ;
85
100
uint8_t data[80 ];
86
101
OSCData msg{data, sizeof (data)};
87
102
@@ -104,11 +119,14 @@ class RCAudioPlayerOSCSender {
104
119
* @author Phil Schatzmann
105
120
*/
106
121
class RCAudioPlayerOSCReceiver {
107
- RCAudioPlayerOSCReceiver (AudioPlayer &player) {
108
- p_player = &player;
109
- registerCallbacks ();
122
+ RCAudioPlayerOSCReceiver () { registerCallbacks (); }
123
+
124
+ RCAudioPlayerOSCReceiver (AudioPlayer &player) : RCAudioPlayerOSCReceiver() {
125
+ setAudioPlayer (player);
110
126
}
111
127
128
+ void setAudioPlayer (AudioPlayer &player) { p_player = &player; }
129
+
112
130
// / Process the incoming OSC messages
113
131
bool processInputMessage (Stream &in) {
114
132
if (!is_active) return false ;
0 commit comments