/*

   I C E K I N G
   / | ⊼   ⊼ | \
   / |   ߇   | \

   POT 1: Amount of Penguins
   POT 2: Cryokinesis Strength
   POT 3: Gunter

   CHANGELOG:
   20190922 - v1 !!!

*/

#define POT1 (0)
#define POT2 (1)
#define POT3 (2)
#define SPEAKER (11)

int t;
int u;
int tone_delay;
int tone_freq;
int bitshift;

void
setup()
{
  //Serial.begin(9600); // DEBUG
  pinMode(SPEAKER, OUTPUT);
}

void
loop()
{
  // 1CE C0DE
  // POT1 controls the final amount of right shift (0-31)
  //bitshift = analogRead(POT3) // 32; meergranen v2
  bitshift = (1023 - analogRead(POT3)) / 32; // meergranen v1
  t++;
  u = (t*t/256)&(t>>((t/1024)%16))^t%64*(0x1CEC0DE>>(t>>9&30)&t%32)*t>>bitshift;

  // Use bytebeat u value as tone frequency modulated by POT2
  // Note: tone(pin, frequency) is provided by Arduino lib
  //tone_freq = u * ((analogRead(POT2) / 32) + 1); // meergranen v2
  tone_freq = u * (((1023 - analogRead(POT2)) / 32) + 1); // meergranen v1
  tone(SPEAKER, tone_freq);

  // Use POT1 to set the tone duration (63-0)
  //tone_delay = (1023 - analogRead(POT1)) / 16; // meergranen v2
  tone_delay = analogRead(POT1) / 16; // meergranen v1
  delay(tone_delay);

  // DEBUG
  //Serial.println(tone_delay);
  //Serial.println(tone_freq);
  //Serial.println(t);
}

