added midi channel filtering
utilized mozzi native mtof instead of array
This commit is contained in:
		
							
								
								
									
										13
									
								
								FM/FM.ino
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								FM/FM.ino
									
									
									
									
									
								
							@ -1,4 +1,5 @@
 | 
				
			|||||||
#include <MozziGuts.h>
 | 
					#include <MozziGuts.h>
 | 
				
			||||||
 | 
					#include <mozzi_midi.h>
 | 
				
			||||||
#include <Oscil.h> // oscillator 
 | 
					#include <Oscil.h> // oscillator 
 | 
				
			||||||
#include <tables/cos2048_int8.h> // table for Oscils to play
 | 
					#include <tables/cos2048_int8.h> // table for Oscils to play
 | 
				
			||||||
#include <Smooth.h>
 | 
					#include <Smooth.h>
 | 
				
			||||||
@ -9,6 +10,7 @@
 | 
				
			|||||||
MIDI_CREATE_DEFAULT_INSTANCE();
 | 
					MIDI_CREATE_DEFAULT_INSTANCE();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CONTROL_RATE 64
 | 
					#define CONTROL_RATE 64
 | 
				
			||||||
 | 
					#define MIDI_CHANNEL 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool gate = 0;
 | 
					bool gate = 0;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@ -53,16 +55,19 @@ long fm_intensity; // carries control info from updateControl to updateAudio
 | 
				
			|||||||
float smoothness = 0.95f;
 | 
					float smoothness = 0.95f;
 | 
				
			||||||
Smooth <long> aSmoothIntensity(smoothness);
 | 
					Smooth <long> aSmoothIntensity(smoothness);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const float notefreqs[128] = {8.176, 8.662, 9.177, 9.723, 10.301, 10.913, 11.562, 12.25, 12.978, 13.75, 14.568, 15.434, 16.352, 17.324, 18.354, 19.445, 20.602, 21.827, 23.125, 24.5, 25.957, 27.5, 29.135, 30.868, 32.703, 34.648, 36.708, 38.891, 41.203, 43.654, 46.249, 48.999, 51.913, 55, 58.27, 61.735, 65.406, 69.296, 73.416, 77.782, 82.407, 87.307, 92.499, 97.999, 103.826, 110, 116.541, 123.471, 130.813, 138.591, 146.832, 155.563, 164.814, 174.614, 184.997, 195.998, 207.652, 220, 233.082, 246.942, 261.626, 277.183, 293.665, 311.127, 329.628, 349.228, 369.994, 391.995, 415.305, 440, 466.164, 493.883, 523.251, 554.365, 587.33, 622.254, 659.255, 698.456, 739.989, 783.991, 830.609, 880, 932.328, 987.767, 1046.502, 1108.731, 1174.659, 1244.508, 1318.51, 1396.913, 1479.978, 1567.982, 1661.219, 1760, 1864.655, 1975.533, 2093.005, 2217.461, 2349.318, 2489.016, 2637.02, 2793.826, 2959.955, 3135.963, 3322.438, 3520, 3729.31, 3951.066, 4186.009, 4434.922, 4698.636, 4978.032, 5274.041, 5587.652, 5919.911, 6271.927, 6644.875, 7040, 7458.62, 7902.133, 8372.018, 8869.844, 9397.273, 9956.063, 10548.08, 11175.3, 11839.82, 12543.85};
 | 
					 | 
				
			||||||
int carrier_freq = 440;
 | 
					int carrier_freq = 440;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void noteOn(byte channel, byte note, byte velocity) {
 | 
					void noteOn(byte channel, byte note, byte velocity) {
 | 
				
			||||||
  carrier_freq = notefreqs[(int) note];
 | 
					  if (channel == MIDI_CHANNEL + 143) { //I have no ide why it's 143 here and 127 on noteoff
 | 
				
			||||||
  gate = 1;
 | 
					    carrier_freq = mtof((int) note);
 | 
				
			||||||
 | 
					    gate = 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void noteOff(byte channel, byte note, byte velocity) {
 | 
					void noteOff(byte channel, byte note, byte velocity) {
 | 
				
			||||||
  gate = 0;
 | 
					  if (channel == MIDI_CHANNEL + 127) {
 | 
				
			||||||
 | 
					    gate = 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup(){
 | 
					void setup(){
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,6 @@
 | 
				
			|||||||
DIY Arduino-based synth built with [Mozzi library](https://sensorium.github.io/Mozzi/)
 | 
					DIY Arduino-based synth built with [Mozzi library](https://sensorium.github.io/Mozzi/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## ToDo:
 | 
					## ToDo:
 | 
				
			||||||
- Add MIDI channel filtering
 | 
					 | 
				
			||||||
- Add note buffer
 | 
					- Add note buffer
 | 
				
			||||||
- Tidy up the code (e.g. remove LDR references)
 | 
					- Tidy up the code (e.g. remove LDR references)
 | 
				
			||||||
- Tune the values and remap the knobs
 | 
					- Tune the values and remap the knobs
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user