// MONOLIT start //
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
// GUItool: begin automatically generated code
AudioSynthWaveformSine sine1; //xy=158,137
AudioSynthWaveformSine sine2; //xy=160,186
AudioSynthWaveformSine sine4; //xy=164,304
AudioSynthWaveformSine sine3; //xy=165,234
AudioEffectFade fade1; //xy=324,147
AudioEffectFade fade3; //xy=344,237
AudioEffectFade fade2; //xy=347,195
AudioMixer4 mixer1; //xy=506,209
AudioOutputAnalog dac1; //xy=629,212
AudioConnection patchCord1(sine1, fade1);
AudioConnection patchCord2(sine2, fade2);
AudioConnection patchCord3(sine4, 0, mixer1, 3);
AudioConnection patchCord4(sine3, fade3);
AudioConnection patchCord5(fade1, 0, mixer1, 0);
AudioConnection patchCord6(fade3, 0, mixer1, 2);
AudioConnection patchCord7(fade2, 0, mixer1, 1);
AudioConnection patchCord8(mixer1, dac1);
// GUItool: end automatically generated code
float globalVol = 0.3;
int maxmem = 0;
int maxcpu = 0;
// stupnice array ---- all musical stuff...
float harmofreq[14] = {130.81, 146.83, 155.56, 174.61, 195.99, 207.65, 246.94, 261.63, 293.66, 311.13, 349.23, 391.99, 415.31, 439.88 } ; // na Hz osc -float bude fungovat???
uint16_t pitch = 440; // přičítání - transpozice
float midi[127];
int a = 440; // a is 440 hz...
int x = 0; // na for vypocet MIDI not
int y = 0; // na for prirazeni frekvecni
// input def
int tlac1_pin = 2;
int tlac2_pin = 3;
int tlac3_pin = 4;
int tlac4_pin = 5;
int tlac5_pin = 6;
int tlac6_pin = 7;
int tlac7_pin = 8;
int tlac8_pin = 9;
int tlac9_pin = 10;
int tlac10_pin = 11;
int tlac11_pin = 12;
int tlac12_pin = 22;
int tlac13_pin = 23;
// array var
unsigned long tlac[12];
void sendMessage (char letter, int number)
{
Serial1.print(letter);
Serial1.println (number, DEC);
}
//-----------------S E T U P -----------
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
AudioMemory(16);
pinMode(tlac1_pin, INPUT);
pinMode(tlac2_pin, INPUT);
pinMode(tlac3_pin, INPUT);
pinMode(tlac4_pin, INPUT);
pinMode(tlac5_pin, INPUT);
pinMode(tlac6_pin, INPUT);
pinMode(tlac7_pin, INPUT);
pinMode(tlac8_pin, INPUT);
pinMode(tlac9_pin, INPUT);
pinMode(tlac10_pin, INPUT);
pinMode(tlac11_pin, INPUT);
pinMode(tlac12_pin, INPUT);
pinMode(tlac13_pin, INPUT);
}
// ---------------- M A I N l O O P -------------
void loop() {
//tlac[0] = digitalRead(tlac0_pin);
tlac[1] = digitalRead(tlac1_pin);
tlac[2] = digitalRead(tlac2_pin);
tlac[3] = digitalRead(tlac3_pin);
tlac[4] = digitalRead(tlac4_pin);
tlac[5] = digitalRead(tlac5_pin);
tlac[6] = digitalRead(tlac6_pin);
tlac[7] = digitalRead(tlac7_pin);
tlac[8] = digitalRead(tlac8_pin);
tlac[9] = digitalRead(tlac9_pin);
tlac[10] = digitalRead(tlac10_pin);
tlac[11] = digitalRead(tlac11_pin);
tlac[12] = digitalRead(tlac12_pin);
tlac[13] = digitalRead(tlac13_pin);
// serial communication to another teensy
int hodsum = 0;
{
int i;
for (i=1;i<=13;i++) {
if (tlac[i] == HIGH) hodsum+=(1 << (i-1));
}
}
sendMessage ('X', hodsum);
if (hodsum==0) delay(10); // when nothing pressed it makes 10ms "hole" in the stream to protect buffer issues...
//--------------------------------- A U D I O ----------------------------------------------------------
mixer1.gain (0, globalVol);
mixer1.gain (1, globalVol);
mixer1.gain (2, globalVol);
mixer1.gain (3, globalVol);
if ( tlac[1] == HIGH){
AudioNoInterrupts();
fade1.fadeIn(2);
sine1.amplitude(1);
sine1.frequency(harmofreq[8]);
AudioInterrupts();
}
else { AudioNoInterrupts();
fade1.fadeOut(20);
AudioInterrupts();
}
if ( tlac[2] == HIGH){ AudioNoInterrupts();
fade2.fadeIn(2);
sine2.amplitude(1);
sine2.frequency(harmofreq[9]);
AudioInterrupts();
}
else { AudioNoInterrupts();
fade2.fadeOut(20);
AudioInterrupts();
}
if ( tlac[3] == HIGH){ AudioNoInterrupts();
fade3.fadeIn(2);
sine3.amplitude(1);
sine3.frequency(harmofreq[10]);
AudioInterrupts();
}
else { AudioNoInterrupts();
fade3.fadeOut(20);
AudioInterrupts();
}
if ( tlac[4] == HIGH){ AudioNoInterrupts();
sine4.amplitude(1);
sine4.frequency(harmofreq[11]);
AudioInterrupts();
}
else { AudioNoInterrupts();
sine4.amplitude(0);
AudioInterrupts();
}
}