comparison core/Midi.cpp @ 199:b128e3ea84ff

Fixed midi docs, implentation and example
author Giulio Moro <giuliomoro@yahoo.it>
date Fri, 05 Feb 2016 06:49:33 +0000
parents 265a527f8be8
children 97faaf985164
comparison
equal deleted inserted replaced
198:62f6269f4b3e 199:b128e3ea84ff
132 if(inputBytesWritePointer == inputBytes.size()){ //wrap pointer around 132 if(inputBytesWritePointer == inputBytes.size()){ //wrap pointer around
133 inputBytesWritePointer = 0; 133 inputBytesWritePointer = 0;
134 } 134 }
135 if(parserEnabled == true && ret > 0){ // if the parser is enabled and there is new data, send the data to it 135 if(parserEnabled == true && ret > 0){ // if the parser is enabled and there is new data, send the data to it
136 int input; 136 int input;
137 while((input=getInput()) >= 0){ 137 while((input=_getInput()) >= 0){
138 midi_byte_t inputByte = (midi_byte_t)(input); 138 midi_byte_t inputByte = (midi_byte_t)(input);
139 // printf("__0x%x\n", input);
140 inputParser->parse(&inputByte, 1); 139 inputParser->parse(&inputByte, 1);
141 } 140 }
142 // if(inputBytesReadPointer == inputBytesWritePointer){
143 // this should never be the case, it should only happen when ret == 0
144 // } else {
145
146 // unsigned int length = (inputBytesWritePointer - inputBytesReadPointer + inputBytes.size())
147 // % inputBytes.size();
148 // rt_printf("inputBytes: 0x%x 0x%x 0x%x", inputBytes[inputBytesReadPointer],
149 // inputBytes[inputBytesReadPointer+1], inputBytes[inputBytesReadPointer+2]);
150 // length = inputParser->parse(&inputBytes[inputBytesReadPointer], length);
151 // inputBytesReadPointer += length; //if parserEnabled, the readPointer is incremented here,
152 // //so calls to getInput() should be avoided
153 // if(inputBytesReadPointer == inputBytes.size()){
154 // inputBytesReadPointer = 0;
155 // }
156 // }
157 } 141 }
158 if(ret < maxBytesToRead){ //no more data to retrieve at the moment 142 if(ret < maxBytesToRead){ //no more data to retrieve at the moment
159 usleep(1000); 143 usleep(1000);
160 } // otherwise there might be more data ready to be read (we were at the end of the buffer), so don't sleep 144 } // otherwise there might be more data ready to be read (we were at the end of the buffer), so don't sleep
161 } 145 }
204 BeagleRT_scheduleAuxiliaryTask(midiOutputTask); 188 BeagleRT_scheduleAuxiliaryTask(midiOutputTask);
205 return 1; 189 return 1;
206 } 190 }
207 } 191 }
208 192
209 int Midi::getInput(){ 193 int Midi::_getInput(){
210 // if(parserEnabled == true) {
211 // return -3;
212 // }
213 if(inputPort < 0) 194 if(inputPort < 0)
214 return -2; 195 return -2;
215 if(inputBytesReadPointer == inputBytesWritePointer){ 196 if(inputBytesReadPointer == inputBytesWritePointer){
216 return -1; // no bytes to read 197 return -1; // no bytes to read
217 } 198 }
218 midi_byte_t inputMessage = inputBytes[inputBytesReadPointer++]; 199 midi_byte_t inputMessage = inputBytes[inputBytesReadPointer++];
219 if(inputBytesReadPointer == inputBytes.size()){ // wrap pointer 200 if(inputBytesReadPointer == inputBytes.size()){ // wrap pointer
220 inputBytesReadPointer = 0; 201 inputBytesReadPointer = 0;
221 } 202 }
222 return inputMessage; 203 return inputMessage;
204 }
205
206 int Midi::getInput(){
207 if(parserEnabled == true) {
208 return -3;
209 }
210 return _getInput();
223 } 211 }
224 212
225 MidiParser* Midi::getParser(){ 213 MidiParser* Midi::getParser(){
226 if(parserEnabled == false){ 214 if(parserEnabled == false){
227 return 0; 215 return 0;