@@ -161,6 +161,8 @@ class VS1053BaseStream : public AudioStreamX {
161
161
int16_t _reset_pin=-1 ;
162
162
};
163
163
164
+ enum VS1053Mode {ENCODED_MODE, PCM_MODE, MIDI_MODE };
165
+
164
166
/* *
165
167
* @brief Configuration for VS1053Stream
166
168
* @author Phil Schatzmann
@@ -174,13 +176,14 @@ class VS1053Config : public AudioBaseInfo {
174
176
bits_per_sample = 16 ;
175
177
}
176
178
// / set to false if it is a pcm stream
177
- bool is_encoded_data = false ;
178
179
uint8_t cs_pin = VS1053_CS;
179
180
uint8_t dcs_pin = VS1053_DCS;
180
181
uint8_t dreq_pin = VS1053_DREQ;
181
182
int16_t reset_pin = VS1053_RESET; // -1 is undefined
182
183
uint8_t cs_sd_pin = VS1053_CS_SD;
183
184
RxTxMode mode;
185
+ bool is_encoded_data = false ;
186
+ bool is_midi_mode = false ;
184
187
};
185
188
186
189
/* *
@@ -209,6 +212,10 @@ class VS1053Stream : public AudioStreamX {
209
212
// / Starts with the indicated configuration
210
213
bool begin (VS1053Config cfg) {
211
214
LOGI (LOG_METHOD);
215
+ // enfornce encoded data for midi mode
216
+ if (cfg.is_midi_mode ){
217
+ cfg.is_encoded_data = true ;
218
+ }
212
219
this ->cfg = cfg;
213
220
setAudioInfo (cfg);
214
221
LOGI (" is_encoded_data: %s" , cfg.is_encoded_data ?" true" :" false" );
@@ -226,7 +233,18 @@ class VS1053Stream : public AudioStreamX {
226
233
p_out = new EncodedAudioStream (p_driver, p_enc);
227
234
}
228
235
236
+ // hack to treat midi as separate mode
237
+ const int MIDI_MODE = 100 ;
238
+ int mode = cfg.mode ;
239
+ if (cfg.is_midi_mode ){
240
+ mode = MIDI_MODE;
241
+ }
242
+
229
243
switch (cfg.mode ){
244
+ case MIDI_MODE:
245
+ getVS1053 ().beginMIDI ();
246
+ return true ;
247
+
230
248
case TX_MODE:
231
249
p_out->begin (cfg);
232
250
p_driver->begin ();
0 commit comments