| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -70,8 +70,6 @@ MidiInterface::MidiInterface() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				inputs.resize(NUM_INPUTS); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				outputs.resize(NUM_OUTPUTS); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				midiInit(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				printf("<<<%d>>>\n", getPortCount()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			MidiInterface::~MidiInterface() { | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -96,13 +94,13 @@ void MidiInterface::step() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						gate = false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						retriggered = false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					*outputs[GATE_OUTPUT] = gate ? 5.0 : 0.0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					*outputs[GATE_OUTPUT] = gate ? 10.0 : 0.0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if (outputs[MOD_OUTPUT]) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					*outputs[MOD_OUTPUT] = mod; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					*outputs[MOD_OUTPUT] = mod / 127.0 * 10.0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if (outputs[PITCHWHEEL_OUTPUT]) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					*outputs[PITCHWHEEL_OUTPUT] = (pitchWheel - 64) / 64.0 / 12.0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					*outputs[PITCHWHEEL_OUTPUT] = (pitchWheel - 64) / 64.0 * 10.0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -128,6 +126,7 @@ void MidiInterface::openPort(int portId) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					stream = NULL; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				this->portId = -1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				// Open new port | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if (portId >= 0) { | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -174,10 +173,11 @@ void MidiInterface::processMidi(long msg) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				int status = (msg >> 4) & 0xf; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				int data1 = (msg >> 8) & 0xff; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				int data2 = (msg >> 16) & 0xff; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				printf("channel %d status %d data1 %d data2 %d\n", channel, status, data1, data2); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if (channel != 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				// Filter channels | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if (this->channel >= 0 && this->channel != channel) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					return; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				printf("channel %d status %d data1 %d data2 %d\n", channel, status, data1, data2); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				switch (status) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					// note off | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -195,7 +195,10 @@ void MidiInterface::processMidi(long msg) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					case 0xb: // cc | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						switch (data1) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							case 0x40: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							case 0x01: // mod | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								this->mod = data2; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							case 0x40: // sustain | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								pedal = (data2 >= 64); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								releaseNote(-1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								break; | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |