Open Theremin V3 isn't working properly

Hello all. I'm an electrical engineer major about to begin my graduate degree. I've been taking some graduate courses so I've gotten a start on the pursuit. I have many years of experience in musical performance and have some experience working live sound as well. My goal in my career is to combine what i've learned studying electrical engineering with my passion of music. A project I've been working on this past semester is the Open Theremin V3. It is a musical instrument operated by proximity of the players hand to two antennas attached to the instrument. The V3 is operated by Arduino and the technology is open source. I personally however have little knowledge of Arduino. I've only watched videos on Youtube and starting trying out basic programs like blinking the LED. I've soldered all the components that instructed in the kit to the shield that attaches to the Arduino Uno. However the instrument isn't working properly.

To operated the Theremin, the instrument must be calibrated. The calibration process can be monitored thought the serial monitoring function in the Arduino IDE. The first problem i notice is that the in the Pitch calibration, Frequency tuning range is from 554107 to 554107 yielding a value of zero. The calibration process completes both in pitch and in volume and when I play the instrument the volume antenna responds but the pitch only changes when I touch it and it changes sporadically.

I'm looking to fix the issue so I'm analyzing the schematic given on the Open Theremin website and also looking at the code for potential issues that could be the cause. There are no compiling errors after uploading the code. The code used for the Theremin is below. Since I'm a new user I'm gettin a message saying i can't upload attachments, but if I can find a way to share the schematic I will.

Also If anyone can give me insight on how the code works so i can better understand it and learn about Arduino that would be greatly appreciated as well. Thanks in Advance.


```cpp
/*Open_THeremin_V3.ino
 *  Open.Theremin control software for Arduino UNO
 *  Version 3.1
 *  Copyright (C) 2010-2020 by Urs Gaudenz
 *
 *  Open.Theremin control software is free software: you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License as published
 *  by the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  Open.Theremin control software is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along with
 *  the Open.Theremin control software.  If not, see <http://www.gnu.org/licenses/>.
 *
 *  With important contributions by 
 *  David Harvey
 *  Michael Margolis
 *  "Theremingenieur" Thierry Frenkel
 */
 
/**
Building the code
=================
build.h contains #defines that control the compilation of the code

ENABLE_SERIAL - if non-0, the build will include code to write the detected
           pitch to the serial connection every 100 milliseconds. Set serial
           receive baud to 115200

ENABLE_CV - if non-0, emit cv output on pin 6 (EXPERIMENTAL!)
           
Structure of the code
=====================
** Open_Theremin_UNO.ino **
This file. Creates and hooks up the application object to the arduino setup()
and loop() callbacks.

** application.h/application.cpp **
Main application object. Holds the state of the app (playing, calibrating), deals
with initialisation and the app main loop, reads pitch and volume changed flags
from the interrupt handlers and sets pitch and volume values which the timer
interrupt sends to the DAC.

** OTPinDefs.h **
Pin definitions for the DAC.

** build.h **
Preprocessor definitions for build (see above).

** hw.h **
Definitions for hardware button and LED.

** ihandlers.h/ihandlers.cpp
Interrupt handler code and volatile variables implementing the communication between
the app and its input/output.

** theremin_sinetable<N>.c **
Wavetable data for a variety of sounds. Switchable via the potentiometer.

** timer.h/timer.cpp **
Definitions and functions for setting delays in tics and in milliseconds

*/

#include "application.h"

Application app;

void setup() {
  app.setup();
}

void loop() {
  app.loop();
}



```cpp

#ifndef EEPROM_h
#define EEPROM_h

#include <inttypes.h>
#include <avr/eeprom.h>
#include <avr/io.h>

/***
    EERef class.
    
    This object references an EEPROM cell.
    Its purpose is to mimic a typical byte of RAM, however its storage is the EEPROM.
    This class has an overhead of two bytes, similar to storing a pointer to an EEPROM cell.
***/

struct EERef{

    EERef( const int index )
        : index( index )                 {}
    
    //Access/read members.
    uint8_t operator*() const            { return eeprom_read_byte( (uint8_t*) index ); }
    operator uint8_t() const       { return **this; }
    
    //Assignment/write members.
    EERef &operator=( const EERef &ref ) { return *this = *ref; }
    EERef &operator=( uint8_t in )       { return eeprom_write_byte( (uint8_t*) index, in ), *this;  }
    EERef &operator +=( uint8_t in )     { return *this = **this + in; }
    EERef &operator -=( uint8_t in )     { return *this = **this - in; }
    EERef &operator *=( uint8_t in )     { return *this = **this * in; }
    EERef &operator /=( uint8_t in )     { return *this = **this / in; }
    EERef &operator ^=( uint8_t in )     { return *this = **this ^ in; }
    EERef &operator %=( uint8_t in )     { return *this = **this % in; }
    EERef &operator &=( uint8_t in )     { return *this = **this & in; }
    EERef &operator |=( uint8_t in )     { return *this = **this | in; }
    EERef &operator <<=( uint8_t in )    { return *this = **this << in; }
    EERef &operator >>=( uint8_t in )    { return *this = **this >> in; }
    
    EERef &update( uint8_t in )          { return  in != *this ? *this = in : *this; }
    
    /** Prefix increment/decrement **/
    EERef& operator++()                  { return *this += 1; }
    EERef& operator--()                  { return *this -= 1; }
    
    /** Postfix increment/decrement **/
    uint8_t operator++ (int){ 
        uint8_t ret = **this;
        return ++(*this), ret;
    }

    uint8_t operator-- (int){ 
        uint8_t ret = **this;
        return --(*this), ret;
    }
    
    int index; //Index of current EEPROM cell.
};

/***
    EEPtr class.
    
    This object is a bidirectional pointer to EEPROM cells represented by EERef objects.
    Just like a normal pointer type, this can be dereferenced and repositioned using 
    increment/decrement operators.
***/

struct EEPtr{

    EEPtr( const int index )
        : index( index )                {}
        
    operator int() const          { return index; }
    EEPtr &operator=( int in )          { return index = in, *this; }
    
    //Iterator functionality.
    bool operator!=( const EEPtr &ptr ) { return index != ptr.index; }
    EERef operator*()                   { return index; }
    
    /** Prefix & Postfix increment/decrement **/
    EEPtr& operator++()                 { return ++index, *this; }
    EEPtr& operator--()                 { return --index, *this; }
    EEPtr operator++ (int)              { return index++; }
    EEPtr operator-- (int)              { return index--; }

    int index; //Index of current EEPROM cell.
};

/***
    EEPROMClass class.
    
    This object represents the entire EEPROM space.
    It wraps the functionality of EEPtr and EERef into a basic interface.
    This class is also 100% backwards compatible with earlier Arduino core releases.
***/

struct EEPROMClass{

    //Basic user access methods.
    EERef operator[]( const int idx )    { return idx; }
    uint8_t read( int idx )              { return EERef( idx ); }
    void write( int idx, uint8_t val )   { (EERef( idx )) = val; }
    void update( int idx, uint8_t val )  { EERef( idx ).update( val ); }
    
    //STL and C++11 iteration capability.
    EEPtr begin()                        { return 0x00; }
    EEPtr end()                          { return length(); } //Standards requires this to be the item after the last valid entry. The returned pointer is invalid.
    uint16_t length()                    { return E2END + 1; }
    
    //Functionality to 'get' and 'put' objects to and from EEPROM.
    template< typename T > T &get( int idx, T &t ){
        EEPtr e = idx;
        uint8_t *ptr = (uint8_t*) &t;
        for( int count = sizeof(T) ; count ; --count, ++e )  *ptr++ = *e;
        return t;
    }
    
    template< typename T > const T &put( int idx, const T &t ){
        EEPtr e = idx;
        const uint8_t *ptr = (const uint8_t*) &t;
        for( int count = sizeof(T) ; count ; --count, ++e )  (*e).update( *ptr++ );
        return t;
    }
};

static EEPROMClass EEPROM;
#endif


#ifndef SPImcpDac_h
#define SPImcpDac_h

#include <Arduino.h>

// Data direction & Port register & Bit number for DAC Latch:
#define MCP_DAC_LDAC_DDR DDRD
#define MCP_DAC_LDAC_PORT PORTD
#define MCP_DAC_LDAC_BIT 7
// Data direction & Port register & Bit number for DAC CS
#define MCP_DAC_CS_DDR DDRB
#define MCP_DAC_CS_PORT PORTB
#define MCP_DAC_CS_BIT 2
// Data direction & Port register & Bit number for DAC2 CS
#define MCP_DAC2_CS_DDR DDRB
#define MCP_DAC2_CS_PORT PORTB
#define MCP_DAC2_CS_BIT 1
// Data direction & Port registers & Bit numbers for Hardware SPI
#define HW_SPI_DDR DDRB
#define HW_SPI_SCK_BIT 5
#define HW_SPI_MISO_BIT 4 // unused in this configuration
#define HW_SPI_MOSI_BIT 3

static inline void SPImcpDACinit()
{
	// initialize the latch pin:
	MCP_DAC_LDAC_DDR |= _BV(MCP_DAC_LDAC_BIT);
	MCP_DAC_LDAC_PORT |= _BV(MCP_DAC_LDAC_BIT);
	// initialize the CS pins:
	MCP_DAC_CS_DDR   |= _BV(MCP_DAC_CS_BIT);
	MCP_DAC_CS_PORT  |= _BV(MCP_DAC_CS_BIT);
	MCP_DAC2_CS_DDR  |= _BV(MCP_DAC2_CS_BIT);
	MCP_DAC2_CS_PORT |= _BV(MCP_DAC2_CS_BIT);
	// initialize the hardware SPI pins:
	HW_SPI_DDR |= _BV(HW_SPI_SCK_BIT);
	HW_SPI_DDR |= _BV(HW_SPI_MOSI_BIT);
	// initialize the hardware SPI registers
	SPCR = _BV(SPE) | _BV(MSTR);	// no interrupt, SPI enable, MSB first, SPI master, SPI mode 0, clock = f_osc/4 (maximum)
	SPSR = _BV(SPI2X);  // double the SPI clock, ideally we get 8 MHz, so that a 16bit word goes out in 3.5us (5.6us when called from an interrupt) including CS asserting/deasserting
}

static inline void SPImcpDACtransmit(uint16_t data)
{
	// Send highbyte and wait for complete
	SPDR = highByte(data);
  asm("nop");
	while (!(SPSR & _BV(SPIF)))
		;
	// Send lowbyte and wait for complete
	SPDR = lowByte(data);
  asm("nop");
	while (!(SPSR & _BV(SPIF)))
		;
}

static inline void SPImcpDAClatch()
{
	MCP_DAC_LDAC_PORT &= ~_BV(MCP_DAC_LDAC_BIT);
	MCP_DAC_LDAC_PORT |= _BV(MCP_DAC_LDAC_BIT);
}

static inline void SPImcpDACsend(uint16_t data)
{
	MCP_DAC_CS_PORT &= ~_BV(MCP_DAC_CS_BIT);
  // Sanitize input data and add DAC config MSBs
  data &= 0x0FFF;
  data |= 0x7000;
	SPImcpDACtransmit(data);
	MCP_DAC_CS_PORT |= _BV(MCP_DAC_CS_BIT);
	// Do not latch immpediately, let's do it at the very beginning of the next interrupt to get consistent timing
}

static inline void SPImcpDAC2Asend(uint16_t data)
{
	MCP_DAC2_CS_PORT &= ~_BV(MCP_DAC2_CS_BIT);
	// Sanitize input data and add DAC config MSBs
	data &= 0x0FFF;
	data |= 0x7000;
	SPImcpDACtransmit(data);
	MCP_DAC2_CS_PORT |= _BV(MCP_DAC2_CS_BIT);
	SPImcpDAClatch();
}

static inline void SPImcpDAC2Bsend(uint16_t data)
{
	MCP_DAC2_CS_PORT &= ~_BV(MCP_DAC2_CS_BIT);
	// Sanitize input data and add DAC config MSBs
	data &= 0x0FFF;
	data |= 0xF000;
	SPImcpDACtransmit(data);
	MCP_DAC2_CS_PORT |= _BV(MCP_DAC2_CS_BIT);
	SPImcpDAClatch();
}

#endif

#include "Arduino.h"

#include "application.h"

#include "hw.h"
#include "SPImcpDAC.h"
#include "ihandlers.h"
#include "timer.h"
#include "EEPROM.h"

const AppMode AppModeValues[] = {MUTE,NORMAL};
const int16_t CalibrationTolerance = 15;
const int16_t PitchFreqOffset = 700;
const int16_t VolumeFreqOffset = 700;
const int8_t HYST_VAL = 40;

static int32_t pitchCalibrationBase = 0;
static int32_t pitchCalibrationBaseFreq = 0;
static int32_t pitchCalibrationConstant = 0;
static int32_t pitchSensitivityConstant = 70000;
static int16_t pitchDAC = 0;
static int16_t volumeDAC = 0;
static float qMeasurement = 0;

static int32_t volCalibrationBase   = 0;

Application::Application()
  : _state(PLAYING),
    _mode(NORMAL) {
};

void Application::setup() {
#if SERIAL_ENABLED
  Serial.begin(Application::BAUD);
#endif

  HW_LED1_ON;HW_LED2_OFF;

  pinMode(Application::BUTTON_PIN, INPUT_PULLUP);
  pinMode(Application::LED_PIN_1,    OUTPUT);
  pinMode(Application::LED_PIN_2,    OUTPUT);

  digitalWrite(Application::LED_PIN_1, HIGH);    // turn the LED off by making the voltage LOW

   SPImcpDACinit();

EEPROM.get(0,pitchDAC);
EEPROM.get(2,volumeDAC);

SPImcpDAC2Asend(pitchDAC);
SPImcpDAC2Bsend(volumeDAC);

  
initialiseTimer();
initialiseInterrupts();


  EEPROM.get(4,pitchCalibrationBase);
  EEPROM.get(8,volCalibrationBase);
 


}

void Application::initialiseTimer() {
  ihInitialiseTimer();
}

void Application::initialiseInterrupts() {
  ihInitialiseInterrupts();
}

void Application::InitialisePitchMeasurement() {
   ihInitialisePitchMeasurement();
}

void Application::InitialiseVolumeMeasurement() {
   ihInitialiseVolumeMeasurement();
}

unsigned long Application::GetQMeasurement()
{
  int qn=0;
  
  TCCR1B = (1<<CS10);	

while(!(PIND & (1<<PORTD3)));
while((PIND & (1<<PORTD3)));

TCNT1 = 0;
  timer_overflow_counter = 0;
while(qn<31250){
while(!(PIND & (1<<PORTD3)));
qn++;
while((PIND & (1<<PORTD3)));
};

 
  
  TCCR1B = 0;	

 unsigned long frequency = TCNT1;
 unsigned long temp = 65536*(unsigned long)timer_overflow_counter;
  frequency += temp;

return frequency;

}


unsigned long Application::GetPitchMeasurement()
{
  TCNT1 = 0;
  timer_overflow_counter = 0;
  TCCR1B = (1<<CS12) | (1<<CS11) | (1<<CS10);	

  delay(1000);  
  
  TCCR1B = 0;	

 unsigned long frequency = TCNT1;
 unsigned long temp = 65536*(unsigned long)timer_overflow_counter;
  frequency += temp;

return frequency;

}

unsigned long Application::GetVolumeMeasurement()
{timer_overflow_counter = 0;

  TCNT0=0;
  TCNT1=49911;
  TCCR0B = (1<<CS02) | (1<<CS01) | (1<<CS00);	 // //External clock source on T0 pin. Clock on rising edge.
  TIFR1  = (1<<TOV1);        //Timer1 INT Flag Reg: Clear Timer Overflow Flag

while(!(TIFR1&((1<<TOV1)))); // on Timer 1 overflow (1s)
  TCCR0B = 0;	 // Stop TimerCounter 0
 unsigned long frequency = TCNT0; // get counter 0 value
 unsigned long temp = (unsigned long)timer_overflow_counter; // and overflow counter

 frequency += temp*256;

return frequency;
}



#if CV_ENABLED                                 // Initialise PWM Generator for CV output
void initialiseCVOut() {

}
#endif

AppMode Application::nextMode() {
  return _mode == NORMAL ? MUTE : AppModeValues[_mode + 1];
}

void Application::loop() {
  int32_t pitch_v = 0, pitch_l = 0;            // Last value of pitch  (for filtering)
  int32_t vol_v = 0,   vol_l = 0;              // Last value of volume (for filtering)

  uint16_t volumePotValue = 0;
  uint16_t pitchPotValue = 0;
  int registerPotValue,registerPotValueL = 0;
  int wavePotValue,wavePotValueL = 0;
  uint8_t registerValue = 2;
  uint16_t tmpVolume;

  mloop:                   // Main loop avoiding the GCC "optimization"

  pitchPotValue    = analogRead(PITCH_POT);
  volumePotValue   = analogRead(VOLUME_POT);
  registerPotValue   = analogRead(REGISTER_SELECT_POT);
  wavePotValue = analogRead(WAVE_SELECT_POT);
  
  if ((registerPotValue-registerPotValueL) >= HYST_VAL || (registerPotValueL-registerPotValue) >= HYST_VAL) registerPotValueL=registerPotValue;
  if (((wavePotValue-wavePotValueL) >= HYST_VAL) || ((wavePotValueL-wavePotValue) >= HYST_VAL)) wavePotValueL=wavePotValue;

  vWavetableSelector=wavePotValueL>>7;

  // New register pot configuration:
  // Left = -1 octave, Center = +/- 0, Right = +1 octave
  if (registerPotValue > 681)
  {
	  registerValue = 1;
  } else if(registerPotValue < 342)
  {
	  registerValue = 3;
  } else 
  {
	  registerValue = 2;
  }

  if (_state == PLAYING && HW_BUTTON_PRESSED) {
    _state = CALIBRATING;
    resetTimer();
  }

  if (_state == CALIBRATING && HW_BUTTON_RELEASED) {
    if (timerExpired(1500)) {
     
         _mode = nextMode();
 if (_mode==NORMAL) {HW_LED1_ON;HW_LED2_OFF;} else {HW_LED1_OFF;HW_LED2_ON;};
   // playModeSettingSound();
   
   
    }
    _state = PLAYING;
  };

  if (_state == CALIBRATING && timerExpired(15000)) {

      HW_LED2_ON;
      
  playStartupSound();
  
   calibrate_pitch();
   calibrate_volume();


   initialiseTimer();
   initialiseInterrupts();
   
  playCalibratingCountdownSound();
  calibrate();
  
  
      
      

      _mode=NORMAL;
      HW_LED2_OFF;
      
    while (HW_BUTTON_PRESSED)
      ; // NOP
    _state = PLAYING;
  };

#if CV_ENABLED
  OCR0A = pitch & 0xff;
#endif

#if SERIAL_ENABLED
  if (timerExpired(TICKS_100_MILLIS)) {
    resetTimer();
    Serial.write(pitch & 0xff);              // Send char on serial (if used)
    Serial.write((pitch >> 8) & 0xff);
  }
#endif

  if (pitchValueAvailable) {                        // If capture event

    pitch_v=pitch;                         // Averaging pitch values
    pitch_v=pitch_l+((pitch_v-pitch_l)>>2);
    pitch_l=pitch_v;


//HW_LED2_ON;


    // set wave frequency for each mode
    switch (_mode) {
      case MUTE : /* NOTHING! */;                                        break;
      case NORMAL      : setWavetableSampleAdvance(((pitchCalibrationBase-pitch_v)+2048-(pitchPotValue<<2))>>registerValue); break;
    };
    
  //  HW_LED2_OFF;

    pitchValueAvailable = false;
  }

  if (volumeValueAvailable) {
    vol = max(vol, 5000);

    vol_v=vol;                  // Averaging volume values
    vol_v=vol_l+((vol_v-vol_l)>>2);
    vol_l=vol_v;

    switch (_mode) {
      case MUTE:  vol_v = 0;                                                      break;
      case NORMAL:      vol_v = MAX_VOLUME-(volCalibrationBase-vol_v)/2+(volumePotValue<<2)-1024;                                     break;
    };

    // Limit and set volume value
    vol_v = min(vol_v, 4095);
    //    vol_v = vol_v - (1 + MAX_VOLUME - (volumePotValue << 2));
    vol_v = vol_v ;
    vol_v = max(vol_v, 0);
    tmpVolume = vol_v >> 4;
	
	// Give vScaledVolume a pseudo-exponential characteristic:
	vScaledVolume = tmpVolume * (tmpVolume + 2);

	volumeValueAvailable = false;
  }

  goto mloop;                           // End of main loop
}

void Application::calibrate()
{
  resetPitchFlag();
  resetTimer();
  savePitchCounter();
  while (!pitchValueAvailable && timerUnexpiredMillis(10))
    ; // NOP
  pitchCalibrationBase = pitch;
  pitchCalibrationBaseFreq = FREQ_FACTOR/pitchCalibrationBase;
  pitchCalibrationConstant = FREQ_FACTOR/pitchSensitivityConstant/2+200;

  resetVolFlag();
  resetTimer();
  saveVolCounter();
  while (!volumeValueAvailable && timerUnexpiredMillis(10))
    ; // NOP
  volCalibrationBase = vol;
  
  
  EEPROM.put(4,pitchCalibrationBase);
  EEPROM.put(8,volCalibrationBase);
  
}

void Application::calibrate_pitch()
{
  
static int16_t pitchXn0 = 0;
static int16_t pitchXn1 = 0;
static int16_t pitchXn2 = 0;
static float q0 = 0;
static long pitchfn0 = 0;
static long pitchfn1 = 0;
static long pitchfn = 0;

  Serial.begin(115200);
  Serial.println("\nPITCH CALIBRATION\n");

  HW_LED1_OFF;
  HW_LED2_ON;
  
  InitialisePitchMeasurement();
  interrupts();
  SPImcpDACinit();

  qMeasurement = GetQMeasurement();  // Measure Arudino clock frequency 
  Serial.print("Arudino Freq: ");
  Serial.println(qMeasurement);

q0 = (16000000/qMeasurement*500000);  //Calculated set frequency based on Arudino clock frequency

pitchXn0 = 0;
pitchXn1 = 4095;

pitchfn = q0-PitchFreqOffset;        // Add offset calue to set frequency

Serial.print("\nPitch Set Frequency: ");
Serial.println(pitchfn);


SPImcpDAC2Bsend(1600);

SPImcpDAC2Asend(pitchXn0);
delay(100);
pitchfn0 = GetPitchMeasurement();

SPImcpDAC2Asend(pitchXn1);
delay(100);
pitchfn1 = GetPitchMeasurement();

Serial.print ("Frequency tuning range: ");
Serial.print(pitchfn0);
Serial.print(" to ");
Serial.println(pitchfn1);
  
 
while(abs(pitchfn0-pitchfn1)>CalibrationTolerance){      // max allowed pitch frequency offset

SPImcpDAC2Asend(pitchXn0);
delay(100);
pitchfn0 = GetPitchMeasurement()-pitchfn;

SPImcpDAC2Asend(pitchXn1);
delay(100);
pitchfn1 = GetPitchMeasurement()-pitchfn;

pitchXn2=pitchXn1-((pitchXn1-pitchXn0)*pitchfn1)/(pitchfn1-pitchfn0); // new DAC value

Serial.print("\nDAC value L: ");
Serial.print(pitchXn0);
Serial.print(" Freq L: ");
Serial.println(pitchfn0);
Serial.print("DAC value H: ");
Serial.print(pitchXn1);
Serial.print(" Freq H: ");
Serial.println(pitchfn1);


pitchXn0 = pitchXn1;
pitchXn1 = pitchXn2;

HW_LED2_TOGGLE;

}
delay(100);

EEPROM.put(0,pitchXn0);
  
}

void Application::calibrate_volume()
{


static int16_t volumeXn0 = 0;
static int16_t volumeXn1 = 0;
static int16_t volumeXn2 = 0;
static float q0 = 0;
static long volumefn0 = 0;
static long volumefn1 = 0;
static long volumefn = 0;

    Serial.begin(115200);
    Serial.println("\nVOLUME CALIBRATION");
    
  InitialiseVolumeMeasurement();
  interrupts();
  SPImcpDACinit();


volumeXn0 = 0;
volumeXn1 = 4095;

q0 = (16000000/qMeasurement*460765);
volumefn = q0-VolumeFreqOffset;

Serial.print("\nVolume Set Frequency: ");
Serial.println(volumefn);


SPImcpDAC2Bsend(volumeXn0);
delay_NOP(44316);//44316=100ms

volumefn0 = GetVolumeMeasurement();

SPImcpDAC2Bsend(volumeXn1);

delay_NOP(44316);//44316=100ms
volumefn1 = GetVolumeMeasurement();


Serial.print ("Frequency tuning range: ");
Serial.print(volumefn0);
Serial.print(" to ");
Serial.println(volumefn1);


while(abs(volumefn0-volumefn1)>CalibrationTolerance){

SPImcpDAC2Bsend(volumeXn0);
delay_NOP(44316);//44316=100ms
volumefn0 = GetVolumeMeasurement()-volumefn;

SPImcpDAC2Bsend(volumeXn1);
delay_NOP(44316);//44316=100ms
volumefn1 = GetVolumeMeasurement()-volumefn;

volumeXn2=volumeXn1-((volumeXn1-volumeXn0)*volumefn1)/(volumefn1-volumefn0); // calculate new DAC value

Serial.print("\nDAC value L: ");
Serial.print(volumeXn0);
Serial.print(" Freq L: ");
Serial.println(volumefn0);
Serial.print("DAC value H: ");
Serial.print(volumeXn1);
Serial.print(" Freq H: ");
Serial.println(volumefn1);


volumeXn0 = volumeXn1;
volumeXn1 = volumeXn2;
HW_LED2_TOGGLE;

}

EEPROM.put(2,volumeXn0);

  HW_LED2_OFF;
  HW_LED1_ON;

  Serial.println("\nCALIBRATION COMPLETED\n");
}

void Application::hzToAddVal(float hz) {
  setWavetableSampleAdvance((uint16_t)(hz * HZ_ADDVAL_FACTOR));
}

void Application::playNote(float hz, uint16_t milliseconds = 500, uint8_t volume = 255) {
  vScaledVolume = volume * (volume + 2);
  hzToAddVal(hz);
  millitimer(milliseconds);
  vScaledVolume = 0;
}

void Application::playStartupSound() {
  playNote(MIDDLE_C, 150, 25);
  playNote(MIDDLE_C * 2, 150, 25);
  playNote(MIDDLE_C * 4, 150, 25);
}

void Application::playCalibratingCountdownSound() {
  playNote(MIDDLE_C * 2, 150, 25);
  playNote(MIDDLE_C * 2, 150, 25);
}

void Application::playModeSettingSound() {
  for (int i = 0; i <= _mode; i++) {
    playNote(MIDDLE_C * 2, 200, 25);
    millitimer(100);
  }
}

void Application::delay_NOP(unsigned long time) {
  volatile unsigned long i = 0;
  for (i = 0; i < time; i++) {
      __asm__ __volatile__ ("nop");
  }
}

#ifndef _APPLICATION_H
#define _APPLICATION_H

#include <avr/io.h>

#include "build.h"

enum AppState {CALIBRATING = 0, PLAYING};   
enum AppMode  {MUTE = 0, NORMAL};
/* defines states like calibrating during start up or playing (normal play mode)
Modes like mute or normal mode where the volume responds to hand   */


class Application {
  public:
    Application();
    
    void setup();
    void loop();
    /*Main inerface functions used in Open_theremin_V3.ino
    setup() initializes timeres, pins and calibrates
    loop() is the main loop that reads inputs and updates sound
    */



  private:
    static const uint16_t MAX_VOLUME = 4095;
    //maximuum 12-bit volume ((2^12)-1)...likely sent to DAC
    static const uint32_t TRIM_PITCH_FACTOR = 33554432;
    static const uint32_t FREQ_FACTOR = 1600000000;

    static const int16_t BUTTON_PIN = 6;
    static const int16_t LED_PIN_1  = 18;
    static const int16_t LED_PIN_2  = 19;
    

    static const int16_t PITCH_POT = 0;
    static const int16_t VOLUME_POT = 1;
    static const int16_t WAVE_SELECT_POT = 2;
    static const int16_t REGISTER_SELECT_POT = 3;


    
#if SERIAL_ENABLED    
    static const int BAUD = 115200;
#endif
/*^only included if serial communication is enabled
used for debugging and serial monitoring output */

    AppState _state;
    AppMode  _mode;
        /*Keep track of whether theremin is calibrating or playing and whether
         its muted or not*/
  
    void calibrate();
    void calibrate_pitch();
    void calibrate_volume();


    AppMode nextMode();
    //cycles between mute and normal when button is pushed


    void initialiseTimer();
    void initialiseInterrupts();
    //sets up hardware timers for frequency measurement and 
    //waveform generation

    void InitialisePitchMeasurement();
    void InitialiseVolumeMeasurement();
    unsigned long GetPitchMeasurement();
    unsigned long GetVolumeMeasurement();
    unsigned long GetQMeasurement();
    /*these handle reading the ra oscllator frequencies from pitch and 
    volume antennas, and possible q-factor measurement */

    const float HZ_ADDVAL_FACTOR = 2.09785;
    const float MIDDLE_C = 261.6;

    void playNote(float hz, uint16_t milliseconds, uint8_t volume);
    void hzToAddVal(float hz);
    //? converts pitch freq to a waveform add-value for the DAC
    //plays a tone for acertain duration and volume..how?
    // playNote is a function with multiple inputs

    void playStartupSound();
    void playCalibratingCountdownSound();
    void playModeSettingSound();
    //predefined sounds
    void delay_NOP(unsigned long time);
    //
};

#endif // _APPLICATION_H

#ifndef _BUILD_H
#define _BUILD_H


// Set to build with serial support
#define SERIAL_ENABLED 0

// Set to build with control voltage output (experimental)
#define CV_ENABLED 0


#endif // _BUILD_H

#ifndef _HW_H
#define _HW_H

#define HW_BUTTON_STATE    (PIND & (1<<PORTD6))
#define HW_BUTTON_PRESSED  (HW_BUTTON_STATE == LOW)
#define HW_BUTTON_RELEASED (HW_BUTTON_STATE != LOW)

#define HW_LED1_ON          (PORTC |= (1<<PORTC4))
#define HW_LED1_OFF         (PORTC &= ~(1<<PORTC4))

#define HW_LED2_ON          (PORTC |= (1<<PORTC5))
#define HW_LED2_OFF         (PORTC &= ~(1<<PORTC5))

#define HW_LED1_TOGGLE      (PORTC = PORTC ^ (1<<PORTC4))
#define HW_LED2_TOGGLE      (PORTC = PORTC ^ (1<<PORTC5))

#endif // _HW_H



#include "Arduino.h"

#include "ihandlers.h"
#include "SPImcpDAC.h"
#include "timer.h"
#include "build.h"

#include "theremin_sintable.c"
#include "theremin_sintable2.c"
#include "theremin_sintable3.c"
#include "theremin_sintable4.c"
#include "theremin_sintable5.c"
#include "theremin_sintable6.c"
#include "theremin_sintable7.c"
#include "theremin_sintable8.c"

const int16_t* const wavetables[] = { //Fixed following a suggestion by Michael Freitas, does not need to be in PROGMEM
  sine_table,
  sine_table2,
  sine_table3,
  sine_table4,
  sine_table5,
  sine_table6,
  sine_table7,
  sine_table8
};

static const uint32_t MCP_DAC_BASE = 2048;

#define INT0_STATE    (PIND & (1<<PORTD2))
#define PC_STATE      (PINB & (1<<PORTB0))

// Added by ThF 20200419
// #define TH_DEBUG 			// <-- comment this out for normal operation
// end

#ifdef TH_DEBUG
#include "hw.h"
#endif

volatile uint16_t vScaledVolume = 0;
volatile uint16_t vPointerIncrement = 0;

volatile uint16_t pitch = 0;            // Pitch value
volatile uint16_t pitch_counter = 0;    // Pitch counter
volatile uint16_t pitch_counter_l = 0;  // Last value of pitch counter

volatile bool volumeValueAvailable = 0;  // Volume read flag
volatile bool pitchValueAvailable = 0;   // Pitch read flag
volatile bool reenableInt1 = 0;   // reeanble Int1

volatile uint16_t vol;                   // Volume value
volatile uint16_t vol_counter = 0;
volatile uint16_t vol_counter_i = 0;     // Volume counter
volatile uint16_t vol_counter_l;         // Last value of volume counter

volatile uint16_t timer_overflow_counter;         // counter for frequency measurement

volatile uint8_t vWavetableSelector = 0;  // wavetable selector

static volatile uint16_t pointer       = 0;  // Table pointer
static volatile uint8_t  debounce_p, debounce_v  = 0;  // Counters for debouncing

void ihInitialiseTimer() {
  /* Setup Timer 1, 16 bit timer used to measure pitch and volume frequency */
  TCCR1A = 0;                     // Set Timer 1 to Normal port operation (Arduino does activate something here ?)
  TCCR1B = (1<<ICES1)|(1<<CS10);  // Input Capture Positive edge select, Run without prescaling (16 Mhz)
  TIMSK1 = (1<<ICIE1);            // Enable Input Capture Interrupt
  
  TCCR0A = 3; //Arduino Default: Fast PWM
  TCCR0B = 3; //Arduino Default: clk I/O /64 (From prescaler)
  TIMSK0 = 1; //Arduino Default: TOIE0: Timer/Counter0 Overflow Interrupt Enable
  
}

void ihInitialiseInterrupts() {
  /* Setup interrupts for Wave Generator and Volume read */
  EICRA = (1<<ISC00)|(1<<ISC01)|(1<<ISC11)|(1<<ISC10) ; // The rising edges of INT0 and INT1 generate an interrupt request.
  reenableInt1 = true;
  EIMSK = (1<<INT0)|(1<<INT1);                          // Enable External Interrupt INT0 and INT1
}

void ihInitialisePitchMeasurement() //Measurement of variable frequency oscillator on Timer 1
{   reenableInt1 = false;
    EIMSK =  0; // Disable External Interrupts
    TCCR1A = 0;           //Normal port operation Timer 1
    TIMSK1 = (1<<TOIE1);  //Timer/Counter1, Overflow Interrupt Enable
   
  }
  
void ihInitialiseVolumeMeasurement() //Measurement of variable frequency oscillator on Timer 0
{   reenableInt1 = false;
    EIMSK =  0; // Disable External Interrupts
    TIMSK1 = 0; //Timer/Counter1, Overflow Interrupt Disable

    TCCR0A = 0; // Normal port operation, OC0A disconnected. Timer 0
    TIMSK0 = (1<<OCIE0A);  //TOIE0: Timer/Counter0 Overflow Interrupt Enable
    OCR0A = 0xff; // set Output Compare Register0.
    
    TCCR1A = 0;  //Normal port operation Timer 1
    TCCR1B = (1<<CS10)|(1<<CS12); // clk I/O /1024 (From prescaler)
    TCCR1C=0;

    
  }

/* Externaly generated 31250 Hz Interrupt for WAVE generator (32us) */
ISR (INT1_vect) {
  // Interrupt takes up normally 14us but can take up to 22us when interrupted by another interrupt.

  // Added by ThF 20200419
  #ifdef TH_DEBUG
    HW_LED2_ON;
  #endif

  // Latch previously written DAC value:
  SPImcpDAClatch();

	disableInt1(); // Disable External Interrupt INT1 to avoid recursive interrupts
	// Enable Interrupts to allow counter 1 interrupts
	interrupts();

	int16_t waveSample;
	uint32_t scaledSample = 0;
	uint16_t offset = (uint16_t)(pointer >> 6) & 0x3ff;

#if CV_ENABLED                                 // Generator for CV output

 vPointerIncrement = min(vPointerIncrement, 4095);
 SPImcpDACsend(vPointerIncrement);        //Send result to Digital to Analogue Converter (audio out) (5.5 us)

#else   //Play sound

	// Read next wave table value
	waveSample = (int16_t)pgm_read_word_near(wavetables[vWavetableSelector] + offset);

	scaledSample = ((int32_t)waveSample * (uint32_t)vScaledVolume) >> 16; // The compiler optimizes this better than any assembly written by hand !!!

	SPImcpDACsend(scaledSample + MCP_DAC_BASE); //Send result to Digital to Analogue Converter (audio out) (5.5 us)

	pointer += vPointerIncrement; // increment table pointer

#endif                          //CV play sound
  incrementTimer();               // update 32us timer

  if (PC_STATE) debounce_p++;
  if (debounce_p == 3) {
    noInterrupts();
    pitch_counter = ICR1;                      // Get Timer-Counter 1 value
    pitch = (pitch_counter - pitch_counter_l); // Counter change since last interrupt -> pitch value
    pitch_counter_l = pitch_counter;           // Set actual value as new last value
  };

  if (debounce_p == 5) {
    pitchValueAvailable = true;
  };

  if (INT0_STATE) debounce_v++;
  if (debounce_v == 3) {
    noInterrupts();
    vol_counter = vol_counter_i;            // Get Timer-Counter 1 value
    vol = (vol_counter - vol_counter_l);    // Counter change since last interrupt
    vol_counter_l = vol_counter;            // Set actual value as new last value
  };

  if (debounce_v == 5) {
    volumeValueAvailable = true;
  };

  noInterrupts();
  enableInt1();
// Added by ThF 20200419
#ifdef TH_DEBUG
	HW_LED2_OFF;
#endif
}

/* VOLUME read - interrupt service routine for capturing volume counter value */
ISR (INT0_vect) {
  vol_counter_i = TCNT1;
  debounce_v = 0;
};


/* PITCH read - interrupt service routine for capturing pitch counter value */
ISR (TIMER1_CAPT_vect) {
  debounce_p = 0;
};


/* PITCH read absolute frequency - interrupt service routine for calibration measurement */
ISR(TIMER0_COMPA_vect)
{
  timer_overflow_counter++;
  }

/* VOLUME read absolute frequency - interrupt service routine for calibration measurement */
ISR(TIMER1_OVF_vect)
{
  timer_overflow_counter++;
}

#ifndef _IHANDLERS_H
#define _IHANDLERS_H

extern volatile uint16_t pitch;              // Pitch value
extern volatile uint16_t vol;                // Volume value
extern volatile uint16_t  vScaledVolume;      // Volume byte

extern volatile uint16_t pitch_counter;      // Pitch counter
extern volatile uint16_t pitch_counter_l;    // Last value of pitch counter

extern volatile uint16_t vol_counter;      // Pitch counter
extern volatile uint16_t vol_counter_l;    // Last value of pitch counter

extern volatile uint16_t timer_overflow_counter;         // counter for frequency measurement


extern volatile bool volumeValueAvailable;   // Volume read flag
extern volatile bool pitchValueAvailable;    // Pitch read flag
extern volatile bool reenableInt1;    // Pitch read flag

extern volatile uint8_t  vWavetableSelector;
extern volatile uint16_t vPointerIncrement; // Table pointer increment

inline void resetPitchFlag()   { pitchValueAvailable = false; }
inline void resetVolFlag()     { volumeValueAvailable = false; }

inline void savePitchCounter() { pitch_counter_l=pitch_counter; }
inline void saveVolCounter()   { vol_counter_l=vol_counter; };

inline void setWavetableSampleAdvance(uint16_t val) { vPointerIncrement = val;}

inline void disableInt1() { EIMSK &= ~ (1 << INT1); }
inline void enableInt1()  { if (reenableInt1) EIMSK |=   (1 << INT1); }

void ihInitialiseTimer();
void ihInitialiseInterrupts();
void ihInitialisePitchMeasurement();
void ihInitialiseVolumeMeasurement();
void resetPitchFlag();
void resetVolFlag();
void savePitchCounter();
void saveVolCounter();

#endif // _IHANDLERS_H

/* Theremin WAVE Table - 1024 entries full table,\ amplitude -2048..2048*/

#include <avr/pgmspace.h>

const int16_t sine_table[1024] PROGMEM = {\
273,\
288,\
302,\
317,\
330,\
345,\
358,\
373,\
387,\
401,\
416,\
429,\
444,\
457,\
472,\
485,\
500,\
513,\
527,\
540,\
555,\
568,\
581,\
596,\
609,\
623,\
636,\
650,\
663,\
676,\
690,\
703,\
716,\
730,\
743,\
756,\
770,\
783,\
796,\
808,\
821,\
835,\
848,\
860,\
873,\
885,\
898,\
911,\
923,\
936,\
948,\
960,\
973,\
985,\
998,\
1010,\
1022,\
1033,\
1046,\
1058,\
1070,\
1081,\
1093,\
1105,\
1116,\
1128,\
1140,\
1151,\
1163,\
1174,\
1185,\
1197,\
1207,\
1219,\
1230,\
1241,\
1251,\
1263,\
1273,\
1284,\
1295,\
1305,\
1316,\
1326,\
1336,\
1347,\
1357,\
1368,\
1377,\
1387,\
1397,\
1407,\
1417,\
1427,\
1436,\
1446,\
1455,\
1465,\
1474,\
1483,\
1493,\
1502,\
1511,\
1520,\
1528,\
1537,\
1546,\
1555,\
1563,\
1572,\
1581,\
1589,\
1598,\
1606,\
1614,\
1623,\
1630,\
1639,\
1646,\
1654,\
1662,\
1669,\
1677,\
1684,\
1691,\
1700,\
1707,\
1714,\
1720,\
1727,\
1735,\
1742,\
1749,\
1755,\
1762,\
1768,\
1775,\
1781,\
1787,\
1794,\
1800,\
1806,\
1812,\
1818,\
1823,\
1829,\
1835,\
1841,\
1847,\
1851,\
1857,\
1863,\
1868,\
1873,\
1878,\
1883,\
1888,\
1893,\
1898,\
1902,\
1907,\
1911,\
1916,\
1921,\
1924,\
1929,\
1933,\
1937,\
1941,\
1945,\
1949,\
1953,\
1956,\
1959,\
1963,\
1966,\
1970,\
1973,\
1977,\
1980,\
1982,\
1986,\
1989,\
1992,\
1994,\
1997,\
2000,\
2002,\
2004,\
2007,\
2009,\
2011,\
2014,\
2016,\
2018,\
2020,\
2022,\
2023,\
2026,\
2027,\
2028,\
2031,\
2032,\
2033,\
2035,\
2036,\
2036,\
2038,\
2039,\
2039,\
2041,\
2041,\
2042,\
2043,\
2043,\
2045,\
2045,\
2045,\
2046,\
2045,\
2046,\
2046,\
2047,\
2046,\
2046,\
2046,\
2046,\
2046,\
2045,\
2045,\
2045,\
2044,\
2044,\
2043,\
2042,\
2041,\
2041,\
2040,\
2039,\
2038,\
2037,\
2035,\
2034,\
2033,\
2031,\
2030,\
2029,\
2028,\
2026,\
2024,\
2023,\
2021,\
2019,\
2018,\
2016,\
2014,\
2012,\
2010,\
2008,\
2006,\
2003,\
2001,\
1999,\
1996,\
1994,\
1991,\
1988,\
1986,\
1983,\
1980,\
1977,\
1975,\
1972,\
1969,\
1967,\
1963,\
1960,\
1957,\
1953,\
1951,\
1947,\
1944,\
1941,\
1937,\
1934,\
1930,\
1926,\
1923,\
1920,\
1915,\
1912,\
1908,\
1904,\
1900,\
1897,\
1893,\
1889,\
1885,\
1880,\
1876,\
1872,\
1867,\
1863,\
1859,\
1855,\
1850,\
1845,\
1841,\
1837,\
1832,\
1828,\
1823,\
1818,\
1813,\
1809,\
1803,\
1799,\
1793,\
1789,\
1784,\
1779,\
1773,\
1768,\
1763,\
1758,\
1753,\
1747,\
1742,\
1736,\
1731,\
1726,\
1721,\
1715,\
1710,\
1704,\
1698,\
1692,\
1687,\
1681,\
1675,\
1670,\
1664,\
1658,\
1652,\
1646,\
1640,\
1634,\
1628,\
1622,\
1616,\
1610,\
1604,\
1597,\
1591,\
1585,\
1579,\
1573,\
1566,\
1559,\
1553,\
1546,\
1540,\
1533,\
1527,\
1520,\
1514,\
1507,\
1500,\
1493,\
1486,\
1480,\
1473,\
1466,\
1460,\
1452,\
1445,\
1439,\
1431,\
1425,\
1417,\
1411,\
1403,\
1396,\
1389,\
1381,\
1375,\
1367,\
1360,\
1352,\
1345,\
1337,\
1330,\
1323,\
1315,\
1308,\
1301,\
1293,\
1285,\
1277,\
1269,\
1262,\
1254,\
1246,\
1239,\
1231,\
1223,\
1215,\
1207,\
1199,\
1191,\
1183,\
1176,\
1168,\
1159,\
1151,\
1143,\
1135,\
1127,\
1118,\
1111,\
1102,\
1094,\
1086,\
1077,\
1069,\
1061,\
1052,\
1044,\
1035,\
1027,\
1018,\
1010,\
1001,\
993,\
984,\
976,\
966,\
958,\
949,\
941,\
931,\
923,\
914,\
905,\
897,\
887,\
879,\
869,\
860,\
852,\
842,\
833,\
824,\
815,\
806,\
796,\
788,\
778,\
769,\
760,\
750,\
741,\
732,\
722,\
713,\
703,\
694,\
685,\
675,\
666,\
656,\
647,\
637,\
627,\
618,\
608,\
599,\
588,\
579,\
569,\
559,\
549,\
540,\
529,\
520,\
510,\
500,\
490,\
480,\
470,\
460,\
450,\
440,\
430,\
420,\
410,\
400,\
389,\
380,\
369,\
359,\
348,\
339,\
328,\
317,\
307,\
297,\
287,\
276,\
266,\
255,\
245,\
234,\
224,\
213,\
203,\
192,\
182,\
171,\
160,\
150,\
139,\
128,\
118,\
107,\
97,\
85,\
75,\
64,\
54,\
42,\
32,\
21,\
10,\
0,\
-11,\
-22,\
-33,\
-44,\
-55,\
-66,\
-77,\
-88,\
-99,\
-109,\
-121,\
-132,\
-143,\
-154,\
-165,\
-176,\
-187,\
-198,\
-209,\
-220,\
-231,\
-242,\
-253,\
-264,\
-275,\
-287,\
-298,\
-309,\
-320,\
-331,\
-343,\
-354,\
-365,\
-376,\
-387,\
-398,\
-410,\
-421,\
-432,\
-443,\
-455,\
-465,\
-477,\
-488,\
-499,\
-511,\
-521,\
-532,\
-544,\
-555,\
-567,\
-578,\
-588,\
-599,\
-611,\
-622,\
-633,\
-644,\
-656,\
-667,\
-678,\
-689,\
-700,\
-711,\
-723,\
-733,\
-744,\
-756,\
-767,\
-778,\
-789,\
-799,\
-811,\
-822,\
-833,\
-844,\
-854,\
-866,\
-877,\
-887,\
-898,\
-909,\
-920,\
-931,\
-941,\
-952,\
-963,\
-974,\
-985,\
-996,\
-1006,\
-1017,\
-1028,\
-1038,\
-1049,\
-1060,\
-1070,\
-1081,\
-1091,\
-1101,\
-1112,\
-1122,\
-1133,\
-1144,\
-1154,\
-1163,\
-1174,\
-1184,\
-1195,\
-1205,\
-1215,\
-1225,\
-1235,\
-1245,\
-1255,\
-1265,\
-1275,\
-1285,\
-1295,\
-1304,\
-1314,\
-1324,\
-1334,\
-1343,\
-1353,\
-1363,\
-1372,\
-1382,\
-1392,\
-1400,\
-1410,\
-1419,\
-1428,\
-1438,\
-1447,\
-1456,\
-1465,\
-1474,\
-1483,\
-1492,\
-1501,\
-1509,\
-1518,\
-1528,\
-1536,\
-1545,\
-1553,\
-1562,\
-1570,\
-1578,\
-1587,\
-1595,\
-1603,\
-1611,\
-1619,\
-1628,\
-1636,\
-1643,\
-1651,\
-1660,\
-1667,\
-1674,\
-1683,\
-1690,\
-1697,\
-1704,\
-1712,\
-1719,\
-1726,\
-1734,\
-1741,\
-1748,\
-1755,\
-1762,\
-1768,\
-1776,\
-1782,\
-1788,\
-1796,\
-1802,\
-1808,\
-1815,\
-1821,\
-1826,\
-1833,\
-1839,\
-1844,\
-1850,\
-1856,\
-1862,\
-1867,\
-1873,\
-1879,\
-1884,\
-1890,\
-1895,\
-1899,\
-1904,\
-1910,\
-1915,\
-1919,\
-1924,\
-1929,\
-1933,\
-1938,\
-1942,\
-1946,\
-1951,\
-1955,\
-1959,\
-1963,\
-1966,\
-1970,\
-1975,\
-1978,\
-1982,\
-1985,\
-1988,\
-1991,\
-1994,\
-1997,\
-2000,\
-2003,\
-2006,\
-2009,\
-2012,\
-2014,\
-2017,\
-2019,\
-2020,\
-2023,\
-2025,\
-2027,\
-2029,\
-2030,\
-2032,\
-2034,\
-2035,\
-2036,\
-2038,\
-2039,\
-2040,\
-2041,\
-2042,\
-2042,\
-2043,\
-2043,\
-2044,\
-2044,\
-2045,\
-2045,\
-2046,\
-2045,\
-2045,\
-2045,\
-2044,\
-2044,\
-2044,\
-2043,\
-2042,\
-2041,\
-2041,\
-2040,\
-2038,\
-2037,\
-2036,\
-2034,\
-2033,\
-2031,\
-2029,\
-2027,\
-2026,\
-2024,\
-2022,\
-2020,\
-2016,\
-2014,\
-2012,\
-2009,\
-2006,\
-2003,\
-2001,\
-1997,\
-1994,\
-1991,\
-1988,\
-1984,\
-1981,\
-1977,\
-1973,\
-1969,\
-1966,\
-1961,\
-1957,\
-1952,\
-1949,\
-1944,\
-1939,\
-1934,\
-1929,\
-1924,\
-1919,\
-1914,\
-1909,\
-1904,\
-1898,\
-1893,\
-1888,\
-1882,\
-1876,\
-1871,\
-1864,\
-1858,\
-1852,\
-1846,\
-1839,\
-1833,\
-1826,\
-1820,\
-1814,\
-1806,\
-1800,\
-1792,\
-1785,\
-1778,\
-1770,\
-1764,\
-1756,\
-1748,\
-1740,\
-1733,\
-1725,\
-1717,\
-1709,\
-1700,\
-1692,\
-1684,\
-1675,\
-1667,\
-1658,\
-1649,\
-1641,\
-1632,\
-1623,\
-1614,\
-1605,\
-1595,\
-1586,\
-1577,\
-1568,\
-1558,\
-1548,\
-1539,\
-1529,\
-1519,\
-1509,\
-1499,\
-1490,\
-1479,\
-1468,\
-1458,\
-1447,\
-1438,\
-1427,\
-1417,\
-1405,\
-1394,\
-1383,\
-1373,\
-1362,\
-1350,\
-1340,\
-1329,\
-1317,\
-1306,\
-1294,\
-1282,\
-1272,\
-1260,\
-1248,\
-1236,\
-1224,\
-1212,\
-1200,\
-1188,\
-1176,\
-1164,\
-1152,\
-1140,\
-1127,\
-1114,\
-1102,\
-1090,\
-1077,\
-1065,\
-1052,\
-1039,\
-1026,\
-1014,\
-1001,\
-988,\
-974,\
-962,\
-949,\
-936,\
-922,\
-909,\
-896,\
-882,\
-869,\
-856,\
-843,\
-829,\
-815,\
-801,\
-788,\
-775,\
-760,\
-747,\
-733,\
-719,\
-706,\
-692,\
-678,\
-664,\
-649,\
-636,\
-622,\
-607,\
-594,\
-580,\
-565,\
-551,\
-537,\
-523,\
-509,\
-494,\
-480,\
-465,\
-451,\
-437,\
-422,\
-408,\
-394,\
-379,\
-365,\
-351,\
-336,\
-322,\
-307,\
-292,\
-278,\
-264,\
-250,\
-234,\
-220,\
-206,\
-190,\
-176,\
-162,\
-147,\
-133,\
-118,\
-103,\
-89,\
-74,\
-60,\
-44,\
-30,\
-16,\
-1,\
13,\
28,\
42,\
57,\
71,\
86,\
100,\
115,\
129,\
144,\
159,\
173,\
188,\
201,\
216,\
230,\
245,\
259,\
};



/* Theremin WAVE Table "Phoenix" - 1024 entries full table, amplitude -2048..2048*/

#include <avr/pgmspace.h>

const int16_t sine_table2[1024] PROGMEM = {\
0,
2,
3,
5,
6,
10,
11,
13,
14,
16,
19,
21,
22,
24,
26,
29,
30,
32,
33,
36,
38,
40,
41,
43,
46,
48,
49,
51,
53,
56,
58,
59,
61,
63,
67,
69,
70,
72,
74,
78,
80,
82,
84,
88,
89,
92,
94,
96,
100,
102,
104,
106,
108,
112,
114,
116,
118,
120,
124,
126,
128,
130,
132,
136,
138,
140,
142,
146,
148,
150,
152,
154,
158,
161,
163,
165,
167,
171,
174,
176,
178,
181,
185,
188,
190,
192,
197,
199,
202,
204,
207,
212,
214,
217,
219,
222,
227,
229,
232,
235,
237,
243,
246,
248,
251,
254,
260,
263,
267,
270,
276,
279,
283,
286,
290,
297,
300,
304,
308,
312,
319,
323,
327,
331,
335,
343,
348,
352,
356,
361,
369,
374,
378,
383,
392,
397,
401,
406,
410,
420,
424,
429,
433,
438,
447,
452,
457,
462,
467,
477,
482,
487,
493,
504,
509,
515,
520,
525,
538,
544,
550,
556,
562,
574,
580,
587,
594,
601,
614,
621,
627,
636,
644,
660,
669,
677,
685,
703,
713,
723,
733,
742,
762,
772,
783,
795,
806,
828,
840,
851,
862,
875,
901,
913,
926,
939,
952,
978,
992,
1005,
1019,
1047,
1060,
1074,
1088,
1102,
1130,
1144,
1158,
1172,
1186,
1213,
1226,
1240,
1253,
1267,
1294,
1307,
1319,
1332,
1358,
1371,
1383,
1396,
1408,
1432,
1443,
1455,
1467,
1479,
1501,
1512,
1523,
1533,
1544,
1565,
1576,
1586,
1595,
1605,
1624,
1634,
1643,
1653,
1670,
1679,
1688,
1696,
1705,
1722,
1730,
1738,
1746,
1754,
1770,
1778,
1786,
1792,
1799,
1813,
1820,
1827,
1834,
1841,
1853,
1859,
1865,
1871,
1884,
1890,
1895,
1900,
1906,
1916,
1921,
1927,
1932,
1936,
1945,
1950,
1954,
1959,
1964,
1972,
1976,
1979,
1983,
1990,
1994,
1998,
2001,
2004,
2010,
2013,
2016,
2020,
2023,
2027,
2029,
2031,
2033,
2035,
2039,
2040,
2041,
2042,
2042,
2044,
2044,
2045,
2045,
2044,
2043,
2043,
2043,
2042,
2041,
2039,
2038,
2037,
2036,
2034,
2032,
2030,
2028,
2025,
2021,
2019,
2016,
2014,
2010,
2003,
1999,
1995,
1992,
1984,
1979,
1974,
1969,
1964,
1954,
1949,
1944,
1937,
1931,
1918,
1912,
1906,
1899,
1893,
1877,
1869,
1861,
1853,
1838,
1830,
1820,
1811,
1802,
1783,
1774,
1764,
1755,
1744,
1723,
1712,
1701,
1691,
1680,
1657,
1645,
1633,
1621,
1609,
1584,
1572,
1559,
1545,
1519,
1505,
1492,
1478,
1465,
1437,
1422,
1408,
1394,
1380,
1352,
1337,
1322,
1307,
1292,
1261,
1246,
1231,
1215,
1184,
1168,
1152,
1136,
1120,
1088,
1071,
1055,
1038,
1022,
989,
972,
955,
938,
921,
887,
871,
854,
837,
819,
785,
767,
750,
733,
698,
680,
662,
645,
627,
592,
574,
556,
538,
520,
484,
466,
448,
430,
412,
376,
357,
339,
321,
302,
266,
248,
229,
211,
175,
156,
138,
120,
102,
66,
48,
30,
12,
-6,
-42,
-59,
-77,
-95,
-113,
-148,
-166,
-184,
-202,
-236,
-254,
-272,
-289,
-306,
-341,
-358,
-376,
-393,
-410,
-444,
-461,
-478,
-495,
-511,
-545,
-562,
-578,
-595,
-611,
-645,
-661,
-678,
-694,
-726,
-742,
-758,
-774,
-790,
-821,
-836,
-852,
-867,
-882,
-913,
-929,
-943,
-958,
-973,
-1003,
-1018,
-1032,
-1047,
-1061,
-1089,
-1103,
-1118,
-1132,
-1160,
-1173,
-1186,
-1199,
-1213,
-1239,
-1252,
-1266,
-1278,
-1290,
-1315,
-1328,
-1340,
-1352,
-1365,
-1388,
-1399,
-1411,
-1422,
-1445,
-1456,
-1467,
-1477,
-1487,
-1508,
-1518,
-1529,
-1539,
-1548,
-1567,
-1576,
-1586,
-1595,
-1605,
-1623,
-1631,
-1640,
-1648,
-1657,
-1674,
-1683,
-1691,
-1698,
-1714,
-1722,
-1729,
-1737,
-1745,
-1759,
-1767,
-1774,
-1781,
-1788,
-1802,
-1809,
-1815,
-1822,
-1828,
-1841,
-1847,
-1854,
-1859,
-1865,
-1876,
-1882,
-1887,
-1893,
-1903,
-1908,
-1913,
-1918,
-1923,
-1933,
-1938,
-1942,
-1946,
-1950,
-1959,
-1963,
-1967,
-1971,
-1975,
-1981,
-1985,
-1988,
-1991,
-1998,
-2000,
-2003,
-2005,
-2008,
-2013,
-2015,
-2018,
-2020,
-2022,
-2026,
-2028,
-2030,
-2031,
-2033,
-2036,
-2037,
-2038,
-2039,
-2040,
-2043,
-2043,
-2043,
-2044,
-2045,
-2045,
-2045,
-2046,
-2046,
-2045,
-2045,
-2045,
-2045,
-2045,
-2045,
-2044,
-2044,
-2044,
-2043,
-2042,
-2042,
-2041,
-2040,
-2039,
-2037,
-2036,
-2035,
-2034,
-2032,
-2030,
-2029,
-2027,
-2026,
-2023,
-2021,
-2019,
-2018,
-2016,
-2012,
-2011,
-2009,
-2007,
-2005,
-2000,
-1998,
-1996,
-1994,
-1989,
-1987,
-1984,
-1982,
-1979,
-1974,
-1972,
-1969,
-1967,
-1965,
-1960,
-1957,
-1955,
-1953,
-1951,
-1946,
-1944,
-1942,
-1940,
-1938,
-1934,
-1932,
-1930,
-1929,
-1925,
-1923,
-1922,
-1920,
-1919,
-1916,
-1915,
-1914,
-1912,
-1911,
-1909,
-1908,
-1907,
-1906,
-1905,
-1903,
-1902,
-1901,
-1901,
-1900,
-1898,
-1897,
-1896,
-1896,
-1894,
-1893,
-1892,
-1891,
-1890,
-1888,
-1887,
-1885,
-1884,
-1882,
-1880,
-1878,
-1876,
-1873,
-1870,
-1865,
-1863,
-1860,
-1857,
-1850,
-1846,
-1843,
-1839,
-1835,
-1828,
-1823,
-1819,
-1814,
-1810,
-1801,
-1797,
-1792,
-1787,
-1782,
-1773,
-1768,
-1763,
-1758,
-1753,
-1742,
-1737,
-1732,
-1726,
-1716,
-1711,
-1705,
-1699,
-1694,
-1683,
-1677,
-1672,
-1666,
-1661,
-1649,
-1644,
-1638,
-1633,
-1627,
-1616,
-1610,
-1605,
-1599,
-1594,
-1583,
-1577,
-1572,
-1566,
-1554,
-1549,
-1543,
-1537,
-1531,
-1518,
-1511,
-1504,
-1497,
-1490,
-1477,
-1468,
-1460,
-1452,
-1443,
-1426,
-1418,
-1410,
-1400,
-1381,
-1371,
-1361,
-1351,
-1342,
-1321,
-1311,
-1300,
-1290,
-1279,
-1258,
-1247,
-1237,
-1226,
-1215,
-1194,
-1183,
-1173,
-1162,
-1151,
-1130,
-1120,
-1109,
-1099,
-1078,
-1067,
-1057,
-1047,
-1037,
-1016,
-1006,
-996,
-987,
-977,
-958,
-948,
-939,
-929,
-919,
-902,
-893,
-884,
-876,
-867,
-849,
-841,
-833,
-825,
-809,
-801,
-793,
-784,
-777,
-762,
-755,
-747,
-740,
-732,
-718,
-711,
-704,
-697,
-690,
-676,
-669,
-663,
-656,
-643,
-637,
-630,
-624,
-617,
-606,
-600,
-594,
-588,
-582,
-570,
-565,
-559,
-554,
-549,
-538,
-533,
-528,
-522,
-517,
-507,
-502,
-497,
-492,
-482,
-477,
-472,
-467,
-462,
-452,
-447,
-442,
-437,
-433,
-423,
-418,
-414,
-409,
-405,
-396,
-392,
-387,
-383,
-379,
-371,
-367,
-363,
-359,
-351,
-347,
-344,
-340,
-336,
-329,
-326,
-322,
-319,
-315,
-309,
-305,
-302,
-299,
-296,
-289,
-286,
-283,
-280,
-273,
-270,
-267,
-264,
-261,
-254,
-251,
-248,
-245,
-242,
-236,
-233,
-230,
-226,
-223,
-217,
-214,
-211,
-208,
-206,
-200,
-197,
-194,
-191,
-184,
-181,
-178,
-175,
-172,
-166,
-163,
-160,
-157,
-154,
-148,
-145,
-142,
-139,
-137,
-131,
-129,
-126,
-124,
-119,
-116,
-114,
-111,
-109,
-104,
-102,
-99,
-97,
-95,
-90,
-87,
-85,
-83,
-80,
-76,
-74,
-71,
-69,
-67,
-63,
-61,
-59,
-57,
-52,
-50,
-48,
-46,
-44,
-40,
-38,
-37,
-35,
-33,
-29,
-27,
-25,
-23,
-21,
-18,
-16,
-14,
-13,
-11,
-8,
-6,
-5,
-3
};



/* Theremin WAVE Table "Sinus" - 1024 entries full table, amplitude -2048.,*/

#include <avr/pgmspace.h>

const int16_t sine_table3[1024] PROGMEM = {\
9,
13,
15,
15,
18,
20,
22,
26,
30,
34,
38,
42,
46,
50,
54,
58,
62,
66,
70,
74,
78,
82,
86,
90,
92,
95,
97,
101,
105,
109,
113,
120,
124,
128,
131,
135,
135,
135,
143,
150,
158,
162,
165,
173,
180,
188,
192,
196,
203,
211,
214,
218,
226,
233,
248,
252,
256,
271,
286,
290,
294,
301,
324,
331,
335,
339,
354,
361,
369,
373,
377,
384,
399,
403,
407,
414,
422,
437,
441,
444,
452,
467,
467,
471,
482,
490,
505,
505,
512,
512,
520,
527,
527,
527,
535,
535,
535,
535,
535,
535,
535,
539,
543,
543,
543,
543,
543,
550,
550,
543,
543,
543,
543,
543,
543,
543,
543,
535,
535,
535,
535,
535,
535,
535,
535,
535,
535,
535,
543,
543,
543,
543,
543,
543,
546,
550,
550,
558,
558,
561,
565,
565,
573,
573,
573,
580,
580,
588,
588,
588,
588,
595,
599,
603,
603,
610,
618,
618,
618,
625,
633,
641,
644,
648,
656,
671,
671,
678,
693,
701,
708,
712,
724,
739,
754,
769,
773,
776,
791,
814,
818,
829,
844,
859,
874,
878,
882,
897,
905,
912,
916,
920,
942,
950,
954,
957,
965,
988,
995,
999,
1003,
1018,
1025,
1033,
1037,
1040,
1048,
1055,
1063,
1071,
1078,
1078,
1086,
1089,
1093,
1101,
1108,
1116,
1116,
1116,
1123,
1123,
1127,
1131,
1131,
1138,
1146,
1146,
1146,
1146,
1154,
1154,
1157,
1161,
1161,
1161,
1165,
1169,
1169,
1169,
1176,
1176,
1176,
1176,
1176,
1180,
1184,
1191,
1206,
1206,
1210,
1214,
1221,
1229,
1244,
1248,
1259,
1274,
1289,
1289,
1304,
1312,
1327,
1342,
1346,
1365,
1387,
1410,
1425,
1429,
1448,
1470,
1485,
1485,
1501,
1516,
1531,
1538,
1538,
1553,
1561,
1576,
1584,
1587,
1591,
1606,
1614,
1617,
1621,
1629,
1636,
1644,
1648,
1659,
1666,
1666,
1674,
1678,
1682,
1682,
1689,
1689,
1697,
1697,
1697,
1704,
1704,
1704,
1704,
1704,
1712,
1712,
1712,
1712,
1719,
1719,
1719,
1719,
1727,
1727,
1727,
1727,
1727,
1734,
1734,
1734,
1734,
1734,
1734,
1734,
1742,
1742,
1742,
1742,
1742,
1742,
1742,
1742,
1742,
1742,
1742,
1742,
1734,
1734,
1734,
1734,
1734,
1727,
1727,
1727,
1727,
1727,
1723,
1719,
1719,
1719,
1712,
1712,
1712,
1704,
1704,
1697,
1697,
1689,
1689,
1682,
1678,
1674,
1666,
1659,
1651,
1648,
1644,
1636,
1629,
1621,
1617,
1606,
1599,
1584,
1584,
1576,
1561,
1553,
1538,
1538,
1531,
1516,
1508,
1493,
1493,
1485,
1478,
1470,
1470,
1455,
1448,
1440,
1433,
1429,
1425,
1418,
1410,
1402,
1402,
1402,
1395,
1395,
1391,
1387,
1387,
1380,
1380,
1376,
1372,
1372,
1365,
1365,
1361,
1357,
1357,
1350,
1350,
1350,
1342,
1342,
1342,
1342,
1342,
1335,
1335,
1335,
1327,
1327,
1327,
1327,
1323,
1319,
1319,
1312,
1304,
1304,
1304,
1297,
1297,
1293,
1282,
1274,
1267,
1259,
1259,
1252,
1237,
1229,
1214,
1214,
1206,
1199,
1191,
1191,
1176,
1169,
1161,
1154,
1150,
1138,
1123,
1116,
1108,
1105,
1093,
1078,
1055,
1055,
1040,
1025,
1010,
988,
988,
972,
950,
927,
905,
901,
882,
859,
837,
833,
822,
807,
791,
776,
773,
761,
754,
739,
731,
731,
724,
716,
708,
708,
701,
693,
686,
678,
675,
663,
663,
648,
641,
641,
633,
618,
595,
592,
580,
558,
543,
520,
516,
497,
475,
460,
456,
444,
429,
414,
399,
395,
384,
361,
339,
316,
312,
271,
218,
158,
154,
113,
75,
52,
30,
26,
-0,
-15,
-22,
-30,
-34,
-45,
-52,
-67,
-71,
-75,
-83,
-90,
-105,
-105,
-113,
-120,
-128,
-135,
-135,
-143,
-143,
-150,
-154,
-158,
-166,
-166,
-173,
-177,
-181,
-188,
-196,
-203,
-207,
-211,
-218,
-226,
-230,
-233,
-241,
-249,
-256,
-260,
-271,
-279,
-286,
-301,
-305,
-316,
-339,
-369,
-369,
-392,
-430,
-475,
-505,
-509,
-535,
-558,
-588,
-603,
-607,
-626,
-626,
-641,
-641,
-641,
-656,
-656,
-663,
-667,
-671,
-679,
-686,
-686,
-694,
-694,
-701,
-701,
-705,
-709,
-709,
-716,
-716,
-720,
-724,
-724,
-731,
-731,
-731,
-731,
-739,
-739,
-743,
-746,
-754,
-761,
-761,
-765,
-769,
-777,
-777,
-777,
-777,
-784,
-792,
-792,
-795,
-799,
-807,
-814,
-814,
-818,
-822,
-829,
-837,
-837,
-837,
-844,
-852,
-852,
-856,
-860,
-867,
-875,
-875,
-878,
-882,
-890,
-897,
-901,
-905,
-920,
-927,
-935,
-939,
-943,
-958,
-965,
-980,
-984,
-988,
-1003,
-1010,
-1014,
-1018,
-1033,
-1056,
-1078,
-1078,
-1093,
-1116,
-1131,
-1146,
-1150,
-1161,
-1176,
-1191,
-1195,
-1207,
-1214,
-1229,
-1229,
-1233,
-1237,
-1244,
-1244,
-1244,
-1244,
-1252,
-1252,
-1259,
-1259,
-1259,
-1259,
-1267,
-1267,
-1267,
-1274,
-1274,
-1282,
-1282,
-1282,
-1282,
-1282,
-1290,
-1290,
-1290,
-1297,
-1297,
-1305,
-1305,
-1305,
-1305,
-1312,
-1312,
-1312,
-1320,
-1327,
-1327,
-1327,
-1327,
-1335,
-1342,
-1342,
-1346,
-1350,
-1357,
-1357,
-1361,
-1365,
-1372,
-1380,
-1388,
-1388,
-1395,
-1403,
-1410,
-1418,
-1418,
-1418,
-1425,
-1433,
-1433,
-1440,
-1448,
-1455,
-1463,
-1467,
-1478,
-1486,
-1501,
-1516,
-1516,
-1516,
-1531,
-1546,
-1546,
-1554,
-1561,
-1576,
-1584,
-1587,
-1599,
-1606,
-1621,
-1629,
-1633,
-1637,
-1652,
-1667,
-1670,
-1682,
-1704,
-1719,
-1742,
-1742,
-1757,
-1772,
-1787,
-1787,
-1802,
-1810,
-1825,
-1825,
-1829,
-1840,
-1855,
-1863,
-1870,
-1874,
-1878,
-1878,
-1885,
-1885,
-1893,
-1893,
-1893,
-1893,
-1893,
-1893,
-1893,
-1893,
-1893,
-1889,
-1885,
-1885,
-1885,
-1882,
-1878,
-1870,
-1870,
-1870,
-1867,
-1863,
-1855,
-1855,
-1848,
-1848,
-1840,
-1840,
-1833,
-1833,
-1833,
-1825,
-1818,
-1818,
-1814,
-1802,
-1802,
-1795,
-1787,
-1784,
-1780,
-1780,
-1772,
-1769,
-1765,
-1757,
-1750,
-1750,
-1746,
-1742,
-1735,
-1727,
-1719,
-1716,
-1712,
-1704,
-1697,
-1693,
-1689,
-1682,
-1674,
-1667,
-1659,
-1644,
-1637,
-1621,
-1619,
-1616,
-1614,
-1606,
-1591,
-1587,
-1584,
-1569,
-1561,
-1546,
-1542,
-1538,
-1523,
-1516,
-1508,
-1501,
-1493,
-1486,
-1471,
-1467,
-1463,
-1448,
-1440,
-1425,
-1422,
-1418,
-1410,
-1395,
-1391,
-1380,
-1372,
-1357,
-1350,
-1346,
-1335,
-1327,
-1312,
-1290,
-1286,
-1282,
-1259,
-1237,
-1233,
-1229,
-1207,
-1184,
-1161,
-1158,
-1131,
-1108,
-1078,
-1056,
-1048,
-1003,
-950,
-897,
-890,
-844,
-784,
-724,
-686,
-679,
-656,
-626,
-596,
-580,
-573,
-550,
-520,
-490,
-482,
-467,
-452,
-422,
-392,
-384,
-377,
-362,
-347,
-332,
-324,
-316,
-301,
-286,
-279,
-271,
-256,
-241,
-226,
-218,
-211,
-196,
-181,
-173,
-166,
-158,
-150,
-135,
-124,
-113,
-105,
-98,
-83,
-78,
-73,
-67,
-52,
-47,
-42,
-37,
-22,
-15,
-7,
-0,
14,
22,
30,
37,
45,
52,
60,
65,
70,
75,
90,
95,
100,
105,
120,
128,
135,
140,
145,
150,
153,
155,
158,
165,
173,
178,
183,
286,
};



/* Theremin WAVE Table "Sinus" - 1024 entries full table, amplitude -2048.,*/

#include <avr/pgmspace.h>

const int16_t sine_table4[1024] PROGMEM = {\

0,
3,
8,
16,
24,
32,
43,
47,
47,
47,
54,
54,
54,
58,
62,
69,
69,
69,
77,
77,
81,
84,
92,
92,
92,
92,
100,
100,
107,
111,
115,
115,
130,
134,
137,
137,
152,
160,
160,
175,
183,
186,
190,
198,
213,
213,
220,
220,
235,
250,
250,
250,
266,
281,
288,
315,
318,
326,
333,
348,
348,
364,
379,
386,
416,
424,
424,
454,
480,
484,
507,
530,
560,
563,
567,
590,
597,
620,
620,
650,
658,
669,
673,
688,
695,
718,
733,
733,
741,
756,
778,
786,
794,
809,
816,
843,
846,
846,
869,
877,
877,
892,
907,
914,
926,
929,
944,
952,
959,
959,
967,
975,
982,
990,
990,
997,
997,
997,
997,
1005,
1005,
1012,
1012,
1012,
1012,
1020,
1020,
1020,
1020,
1027,
1027,
1027,
1027,
1027,
1027,
1031,
1035,
1035,
1035,
1042,
1042,
1042,
1042,
1042,
1042,
1042,
1042,
1042,
1050,
1050,
1050,
1050,
1050,
1054,
1058,
1058,
1058,
1058,
1058,
1058,
1058,
1058,
1058,
1058,
1058,
1065,
1065,
1065,
1065,
1065,
1065,
1065,
1065,
1065,
1065,
1073,
1073,
1073,
1073,
1073,
1073,
1073,
1073,
1075,
1078,
1080,
1080,
1080,
1088,
1088,
1088,
1095,
1095,
1099,
1103,
1103,
1103,
1103,
1103,
1107,
1110,
1110,
1114,
1118,
1118,
1118,
1122,
1125,
1125,
1125,
1125,
1125,
1133,
1141,
1141,
1141,
1141,
1148,
1156,
1156,
1156,
1163,
1171,
1171,
1174,
1178,
1186,
1191,
1196,
1201,
1201,
1208,
1213,
1218,
1224,
1231,
1231,
1235,
1239,
1246,
1250,
1254,
1271,
1274,
1276,
1284,
1288,
1291,
1291,
1299,
1306,
1306,
1314,
1314,
1322,
1329,
1329,
1337,
1344,
1348,
1352,
1352,
1367,
1374,
1378,
1382,
1389,
1389,
1397,
1397,
1412,
1412,
1420,
1431,
1435,
1442,
1450,
1454,
1457,
1472,
1488,
1495,
1495,
1495,
1503,
1508,
1513,
1518,
1533,
1543,
1545,
1548,
1563,
1578,
1578,
1586,
1593,
1597,
1601,
1618,
1621,
1623,
1638,
1646,
1650,
1653,
1661,
1671,
1674,
1676,
1691,
1695,
1699,
1710,
1714,
1721,
1729,
1733,
1736,
1752,
1759,
1774,
1779,
1784,
1789,
1797,
1812,
1812,
1819,
1827,
1835,
1842,
1842,
1850,
1857,
1861,
1865,
1868,
1872,
1877,
1882,
1887,
1887,
1908,
1912,
1924,
1927,
1934,
1937,
1939,
1941,
1943,
1945,
1946,
1948,
1948,
1950,
1951,
1951,
1952,
1952,
1954,
1955,
1957,
1957,
1958,
1958,
1958,
1958,
1958,
1958,
1958,
1958,
1957,
1956,
1955,
1954,
1952,
1952,
1951,
1949,
1948,
1947,
1946,
1944,
1944,
1943,
1941,
1940,
1937,
1935,
1930,
1927,
1921,
1914,
1910,
1903,
1899,
1897,
1892,
1880,
1865,
1865,
1865,
1857,
1850,
1835,
1835,
1835,
1827,
1819,
1804,
1804,
1797,
1789,
1774,
1774,
1767,
1759,
1752,
1736,
1736,
1729,
1721,
1706,
1706,
1706,
1699,
1695,
1684,
1681,
1679,
1676,
1669,
1665,
1653,
1653,
1646,
1631,
1631,
1623,
1623,
1608,
1608,
1601,
1593,
1586,
1578,
1574,
1563,
1555,
1563,
1540,
1538,
1535,
1533,
1510,
1495,
1491,
1488,
1472,
1450,
1446,
1442,
1427,
1405,
1400,
1394,
1374,
1363,
1352,
1344,
1337,
1322,
1306,
1295,
1284,
1261,
1254,
1239,
1231,
1224,
1186,
1181,
1176,
1171,
1148,
1103,
1103,
1092,
1080,
1050,
1045,
1040,
1020,
997,
975,
937,
926,
914,
899,
889,
879,
846,
824,
801,
778,
763,
726,
718,
711,
699,
665,
643,
613,
601,
590,
579,
537,
514,
503,
492,
454,
424,
416,
409,
371,
356,
341,
330,
318,
281,
266,
254,
243,
198,
175,
152,
145,
137,
84,
69,
58,
47,
1,
-20,
-35,
-43,
-73,
-111,
-133,
-141,
-171,
-171,
-209,
-216,
-224,
-262,
-307,
-322,
-329,
-337,
-382,
-397,
-409,
-420,
-450,
-480,
-495,
-503,
-541,
-541,
-578,
-586,
-601,
-616,
-639,
-654,
-665,
-676,
-691,
-722,
-729,
-737,
-759,
-774,
-797,
-805,
-812,
-835,
-850,
-857,
-865,
-910,
-918,
-925,
-933,
-963,
-978,
-981,
-983,
-1008,
-1023,
-1038,
-1046,
-1076,
-1080,
-1084,
-1121,
-1125,
-1137,
-1152,
-1174,
-1177,
-1179,
-1197,
-1220,
-1225,
-1230,
-1250,
-1257,
-1272,
-1276,
-1280,
-1295,
-1318,
-1325,
-1330,
-1335,
-1363,
-1365,
-1368,
-1385,
-1397,
-1408,
-1416,
-1423,
-1431,
-1442,
-1461,
-1466,
-1471,
-1476,
-1484,
-1491,
-1499,
-1514,
-1521,
-1529,
-1533,
-1570,
-1589,
-1593,
-1608,
-1608,
-1623,
-1638,
-1638,
-1653,
-1661,
-1668,
-1676,
-1676,
-1683,
-1695,
-1699,
-1706,
-1714,
-1729,
-1736,
-1736,
-1744,
-1751,
-1770,
-1774,
-1774,
-1797,
-1797,
-1812,
-1812,
-1812,
-1834,
-1834,
-1834,
-1849,
-1857,
-1864,
-1864,
-1864,
-1872,
-1872,
-1875,
-1877,
-1880,
-1880,
-1880,
-1880,
-1880,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1895,
-1895,
-1895,
-1897,
-1900,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1902,
-1895,
-1895,
-1895,
-1895,
-1895,
-1891,
-1887,
-1887,
-1887,
-1885,
-1882,
-1880,
-1880,
-1872,
-1872,
-1872,
-1868,
-1864,
-1864,
-1864,
-1864,
-1864,
-1854,
-1852,
-1849,
-1842,
-1842,
-1827,
-1825,
-1823,
-1821,
-1819,
-1812,
-1804,
-1798,
-1793,
-1787,
-1782,
-1759,
-1755,
-1751,
-1748,
-1744,
-1729,
-1726,
-1724,
-1721,
-1706,
-1699,
-1691,
-1680,
-1668,
-1661,
-1642,
-1634,
-1634,
-1631,
-1619,
-1619,
-1612,
-1604,
-1599,
-1594,
-1589,
-1584,
-1579,
-1574,
-1559,
-1551,
-1536,
-1536,
-1529,
-1521,
-1514,
-1510,
-1506,
-1499,
-1484,
-1476,
-1476,
-1468,
-1461,
-1453,
-1446,
-1438,
-1423,
-1416,
-1408,
-1404,
-1393,
-1385,
-1363,
-1359,
-1355,
-1348,
-1340,
-1336,
-1318,
-1310,
-1295,
-1287,
-1284,
-1280,
-1265,
-1250,
-1246,
-1242,
-1235,
-1220,
-1204,
-1201,
-1182,
-1182,
-1167,
-1163,
-1159,
-1152,
-1144,
-1139,
-1134,
-1121,
-1106,
-1091,
-1091,
-1084,
-1076,
-1061,
-1054,
-1050,
-1046,
-1038,
-1031,
-1031,
-1031,
-1016,
-1016,
-1016,
-1008,
-1001,
-1001,
-993,
-989,
-986,
-978,
-976,
-973,
-971,
-971,
-971,
-956,
-956,
-956,
-948,
-940,
-940,
-940,
-940,
-933,
-933,
-930,
-928,
-918,
-918,
-918,
-918,
-910,
-910,
-905,
-900,
-895,
-888,
-888,
-888,
-880,
-873,
-865,
-865,
-857,
-857,
-857,
-857,
-857,
-857,
-850,
-850,
-850,
-850,
-850,
-850,
-842,
-835,
-835,
-831,
-820,
-805,
-797,
-797,
-797,
-782,
-774,
-759,
-759,
-752,
-737,
-702,
-695,
-687,
-672,
-642,
-627,
-623,
-596,
-581,
-551,
-547,
-513,
-506,
-476,
-446,
-446,
-431,
-400,
-378,
-374,
-348,
-325,
-295,
-280,
-276,
-242,
-227,
-212,
-208,
-189,
-182,
-166,
-163,
-151,
-136,
-129,
-114,
-110,
-106,
-91,
-84,
-80,
-76,
-68,
-53,
-53,
-50,
-46,
-38,
-31,
-31,
-31,
-23,
-23,
-16,
-12,
-10,
-8,
-7,
-6,
-3,
2,
0
};



/* Theremin WAVE Table "Sinus" - 1024 entries full table, amplitude -2048,*/

#include <avr/pgmspace.h>

const int16_t sine_table5[1024] PROGMEM = {\
0,
76,
83,
83,
98,
98,
106,
110,
113,
128,
128,
144,
144,
144,
159,
166,
174,
181,
193,
196,
211,
219,
227,
234,
242,
249,
257,
257,
257,
279,
291,
294,
302,
310,
317,
325,
347,
352,
357,
362,
377,
385,
404,
408,
408,
430,
445,
449,
453,
460,
475,
491,
502,
506,
521,
589,
592,
596,
641,
641,
679,
687,
694,
732,
739,
758,
762,
792,
830,
853,
883,
890,
913,
936,
981,
1000,
1004,
1049,
1071,
1139,
1143,
1147,
1185,
1230,
1241,
1245,
1283,
1290,
1320,
1332,
1335,
1358,
1381,
1411,
1422,
1426,
1456,
1490,
1498,
1505,
1528,
1535,
1535,
1543,
1558,
1569,
1573,
1581,
1596,
1603,
1618,
1618,
1626,
1641,
1641,
1648,
1648,
1664,
1664,
1671,
1686,
1697,
1698,
1703,
1705,
1709,
1712,
1714,
1717,
1720,
1722,
1724,
1727,
1729,
1731,
1732,
1734,
1735,
1737,
1739,
1740,
1741,
1743,
1744,
1745,
1747,
1748,
1749,
1750,
1751,
1752,
1754,
1754,
1754,
1755,
1756,
1757,
1758,
1759,
1760,
1761,
1762,
1764,
1764,
1765,
1766,
1767,
1768,
1770,
1770,
1771,
1773,
1774,
1775,
1777,
1778,
1779,
1781,
1782,
1783,
1785,
1786,
1788,
1788,
1790,
1791,
1792,
1794,
1796,
1797,
1799,
1801,
1803,
1804,
1805,
1808,
1808,
1810,
1812,
1814,
1816,
1819,
1820,
1822,
1824,
1828,
1829,
1830,
1832,
1834,
1836,
1837,
1839,
1841,
1844,
1847,
1851,
1853,
1858,
1859,
1866,
1870,
1873,
1877,
1883,
1884,
1890,
1894,
1896,
1900,
1903,
1906,
1910,
1912,
1916,
1922,
1924,
1928,
1933,
1935,
1939,
1941,
1944,
1947,
1949,
1952,
1955,
1957,
1959,
1962,
1963,
1965,
1968,
1972,
1974,
1978,
1980,
1983,
1985,
1987,
1989,
1992,
1994,
1995,
1997,
1999,
1999,
2001,
2001,
2002,
2003,
2005,
2006,
2006,
2006,
2006,
2006,
2006,
2006,
2006,
2005,
2005,
2004,
2003,
2002,
2001,
2000,
1998,
1997,
1996,
1995,
1994,
1992,
1991,
1990,
1987,
1987,
1984,
1982,
1981,
1978,
1976,
1974,
1973,
1973,
1973,
1970,
1968,
1965,
1958,
1958,
1956,
1954,
1952,
1945,
1945,
1945,
1945,
1937,
1929,
1929,
1929,
1926,
1914,
1914,
1914,
1901,
1897,
1896,
1890,
1890,
1881,
1880,
1873,
1872,
1870,
1865,
1863,
1857,
1852,
1848,
1845,
1840,
1837,
1833,
1830,
1828,
1825,
1825,
1820,
1818,
1816,
1814,
1812,
1810,
1806,
1805,
1803,
1801,
1800,
1797,
1795,
1794,
1790,
1787,
1787,
1784,
1783,
1779,
1776,
1773,
1773,
1771,
1768,
1765,
1763,
1761,
1759,
1758,
1755,
1753,
1752,
1749,
1746,
1745,
1743,
1741,
1739,
1736,
1733,
1732,
1729,
1726,
1724,
1722,
1720,
1718,
1715,
1715,
1711,
1709,
1708,
1705,
1703,
1701,
1698,
1694,
1694,
1688,
1673,
1673,
1658,
1658,
1650,
1650,
1635,
1628,
1624,
1620,
1613,
1605,
1598,
1594,
1590,
1575,
1560,
1560,
1552,
1552,
1545,
1530,
1526,
1522,
1515,
1499,
1492,
1492,
1477,
1462,
1447,
1424,
1424,
1417,
1401,
1379,
1379,
1371,
1356,
1334,
1326,
1311,
1307,
1288,
1288,
1266,
1258,
1243,
1228,
1205,
1218,
1158,
1151,
1120,
1090,
1053,
1015,
1011,
947,
917,
879,
871,
864,
834,
789,
773,
766,
728,
713,
668,
653,
645,
638,
592,
585,
555,
547,
524,
502,
472,
449,
442,
419,
404,
359,
351,
343,
321,
283,
276,
272,
230,
215,
200,
170,
162,
155,
117,
102,
57,
53,
49,
34,
-10,
-55,
-86,
-93,
-116,
-138,
-153,
-161,
-165,
-184,
-191,
-206,
-229,
-236,
-251,
-259,
-282,
-312,
-312,
-327,
-342,
-350,
-372,
-380,
-387,
-417,
-433,
-440,
-448,
-470,
-478,
-485,
-493,
-523,
-531,
-553,
-553,
-561,
-576,
-591,
-606,
-636,
-644,
-651,
-666,
-697,
-704,
-712,
-719,
-734,
-749,
-764,
-772,
-795,
-802,
-810,
-821,
-832,
-847,
-870,
-885,
-890,
-895,
-900,
-923,
-953,
-957,
-961,
-976,
-987,
-998,
-1010,
-1021,
-1036,
-1051,
-1061,
-1071,
-1081,
-1096,
-1111,
-1119,
-1130,
-1142,
-1157,
-1172,
-1179,
-1187,
-1194,
-1209,
-1225,
-1232,
-1240,
-1247,
-1270,
-1275,
-1280,
-1285,
-1308,
-1315,
-1323,
-1330,
-1338,
-1353,
-1364,
-1391,
-1396,
-1451,
-1458,
-1462,
-1474,
-1485,
-1503,
-1520,
-1527,
-1532,
-1546,
-1554,
-1558,
-1564,
-1568,
-1570,
-1577,
-1580,
-1586,
-1590,
-1597,
-1600,
-1609,
-1615,
-1625,
-1635,
-1642,
-1663,
-1673,
-1685,
-1689,
-1696,
-1703,
-1708,
-1714,
-1720,
-1723,
-1727,
-1733,
-1735,
-1740,
-1744,
-1746,
-1752,
-1755,
-1750,
-1759,
-1760,
-1768,
-1761,
-1763,
-1768,
-1770,
-1772,
-1781,
-1784,
-1789,
-1792,
-1794,
-1797,
-1799,
-1802,
-1804,
-1807,
-1808,
-1814,
-1819,
-1821,
-1824,
-1825,
-1827,
-1829,
-1830,
-1831,
-1833,
-1835,
-1836,
-1838,
-1839,
-1840,
-1841,
-1843,
-1844,
-1848,
-1850,
-1851,
-1853,
-1855,
-1857,
-1859,
-1862,
-1864,
-1866,
-1868,
-1870,
-1873,
-1874,
-1875,
-1876,
-1876,
-1879,
-1880,
-1882,
-1882,
-1883,
-1884,
-1885,
-1885,
-1886,
-1886,
-1886,
-1887,
-1888,
-1889,
-1889,
-1890,
-1891,
-1891,
-1892,
-1892,
-1892,
-1893,
-1893,
-1893,
-1893,
-1893,
-1893,
-1892,
-1892,
-1892,
-1892,
-1892,
-1892,
-1892,
-1892,
-1891,
-1891,
-1891,
-1891,
-1890,
-1889,
-1889,
-1889,
-1889,
-1888,
-1887,
-1887,
-1887,
-1886,
-1886,
-1885,
-1885,
-1884,
-1883,
-1883,
-1881,
-1881,
-1880,
-1879,
-1878,
-1877,
-1875,
-1873,
-1872,
-1870,
-1869,
-1867,
-1864,
-1863,
-1861,
-1858,
-1857,
-1856,
-1853,
-1850,
-1848,
-1846,
-1843,
-1840,
-1838,
-1834,
-1832,
-1829,
-1826,
-1824,
-1820,
-1817,
-1815,
-1812,
-1808,
-1805,
-1801,
-1799,
-1797,
-1795,
-1790,
-1789,
-1788,
-1782,
-1780,
-1778,
-1773,
-1770,
-1768,
-1765,
-1763,
-1758,
-1753,
-1752,
-1750,
-1744,
-1742,
-1740,
-1732,
-1729,
-1727,
-1722,
-1719,
-1714,
-1712,
-1704,
-1702,
-1697,
-1692,
-1687,
-1684,
-1679,
-1673,
-1668,
-1664,
-1659,
-1651,
-1646,
-1640,
-1632,
-1628,
-1623,
-1620,
-1606,
-1600,
-1590,
-1588,
-1584,
-1582,
-1578,
-1572,
-1567,
-1565,
-1562,
-1561,
-1557,
-1556,
-1553,
-1552,
-1549,
-1548,
-1545,
-1542,
-1542,
-1539,
-1537,
-1535,
-1533,
-1529,
-1528,
-1526,
-1525,
-1524,
-1523,
-1522,
-1521,
-1518,
-1517,
-1514,
-1513,
-1510,
-1509,
-1508,
-1507,
-1505,
-1503,
-1500,
-1499,
-1498,
-1496,
-1494,
-1492,
-1491,
-1488,
-1487,
-1485,
-1484,
-1482,
-1480,
-1479,
-1477,
-1476,
-1474,
-1473,
-1471,
-1469,
-1467,
-1466,
-1462,
-1461,
-1460,
-1458,
-1456,
-1455,
-1453,
-1452,
-1450,
-1449,
-1447,
-1447,
-1445,
-1444,
-1442,
-1441,
-1440,
-1438,
-1435,
-1434,
-1430,
-1429,
-1425,
-1423,
-1418,
-1415,
-1412,
-1409,
-1401,
-1397,
-1395,
-1392,
-1389,
-1387,
-1382,
-1379,
-1379,
-1372,
-1372,
-1372,
-1364,
-1357,
-1357,
-1353,
-1349,
-1341,
-1334,
-1319,
-1319,
-1311,
-1311,
-1296,
-1281,
-1279,
-1276,
-1266,
-1251,
-1251,
-1243,
-1221,
-1221,
-1206,
-1198,
-1191,
-1176,
-1160,
-1138,
-1130,
-1123,
-1108,
-1085,
-1070,
-1066,
-1025,
-1010,
-979,
-964,
-949,
-904,
-881,
-859,
-821,
-813,
-791,
-776,
-746,
-734,
-700,
-678,
-655,
-565,
-553,
-497,
-459,
-451,
-383,
-361,
-331,
-270,
-160,
-80,
-40,
-15,
0
};



/* Theremin WAVE Table "Sinus" - 1024 entries full table, amplitude -2048.,*/

#include <avr/pgmspace.h>

const int16_t sine_table6[1024] PROGMEM = {\
0,
5,
10,
20,
25,
27,
33,
36,
37,
43,
46,
47,
52,
56,
59,
62,
64,
67,
71,
74,
77,
80,
82,
88,
92,
94,
98,
104,
107,
112,
115,
117,
120,
122,
126,
129,
131,
134,
138,
141,
144,
147,
149,
155,
161,
167,
173,
176,
179,
185,
195,
198,
202,
205,
213,
214,
220,
223,
226,
228,
237,
238,
244,
248,
251,
258,
277,
277,
277,
292,
307,
322,
322,
322,
330,
345,
352,
364,
367,
375,
382,
398,
398,
405,
431,
443,
447,
450,
473,
480,
496,
503,
511,
518,
533,
556,
563,
574,
585,
589,
604,
611,
626,
634,
634,
649,
664,
679,
679,
679,
694,
709,
724,
728,
732,
732,
747,
762,
770,
777,
785,
807,
811,
815,
822,
822,
845,
845,
845,
868,
875,
898,
909,
921,
921,
936,
951,
954,
958,
981,
988,
996,
1004,
1011,
1026,
1034,
1037,
1041,
1056,
1064,
1079,
1079,
1079,
1094,
1109,
1109,
1117,
1124,
1132,
1139,
1147,
1151,
1154,
1162,
1166,
1169,
1180,
1182,
1185,
1200,
1207,
1211,
1215,
1222,
1234,
1237,
1243,
1249,
1254,
1260,
1275,
1279,
1283,
1286,
1290,
1313,
1317,
1320,
1324,
1328,
1333,
1338,
1343,
1354,
1366,
1371,
1376,
1381,
1388,
1396,
1403,
1411,
1418,
1426,
1433,
1439,
1444,
1449,
1456,
1464,
1471,
1479,
1486,
1498,
1509,
1514,
1519,
1524,
1532,
1539,
1547,
1554,
1562,
1567,
1573,
1579,
1584,
1592,
1599,
1604,
1609,
1615,
1622,
1630,
1635,
1640,
1645,
1652,
1660,
1665,
1670,
1675,
1690,
1695,
1700,
1705,
1713,
1720,
1725,
1730,
1735,
1743,
1748,
1753,
1758,
1765,
1780,
1780,
1788,
1796,
1803,
1811,
1826,
1829,
1832,
1835,
1839,
1840,
1844,
1847,
1852,
1854,
1859,
1861,
1865,
1866,
1868,
1870,
1870,
1872,
1873,
1873,
1874,
1875,
1875,
1875,
1875,
1875,
1875,
1874,
1874,
1870,
1867,
1859,
1852,
1852,
1848,
1844,
1844,
1844,
1829,
1829,
1829,
1821,
1821,
1814,
1814,
1806,
1799,
1799,
1791,
1787,
1784,
1769,
1769,
1753,
1753,
1746,
1746,
1731,
1731,
1727,
1723,
1716,
1708,
1708,
1705,
1697,
1690,
1675,
1670,
1665,
1660,
1648,
1637,
1632,
1627,
1622,
1611,
1599,
1588,
1577,
1569,
1562,
1557,
1552,
1547,
1539,
1532,
1509,
1504,
1499,
1494,
1479,
1464,
1459,
1454,
1449,
1444,
1439,
1433,
1423,
1413,
1403,
1396,
1388,
1381,
1373,
1363,
1353,
1343,
1335,
1328,
1323,
1318,
1313,
1303,
1293,
1283,
1278,
1273,
1268,
1256,
1245,
1237,
1230,
1222,
1217,
1212,
1207,
1192,
1177,
1172,
1167,
1162,
1151,
1139,
1132,
1124,
1117,
1105,
1094,
1090,
1086,
1083,
1079,
1056,
1051,
1046,
1041,
1036,
1031,
1026,
1011,
996,
992,
988,
985,
981,
966,
951,
946,
941,
936,
921,
913,
905,
898,
890,
883,
875,
868,
860,
853,
838,
834,
830,
826,
822,
807,
792,
787,
782,
777,
770,
762,
752,
742,
732,
724,
717,
713,
709,
706,
702,
692,
682,
672,
667,
662,
657,
649,
641,
634,
626,
621,
616,
611,
600,
589,
584,
579,
574,
566,
558,
551,
543,
536,
528,
521,
516,
511,
498,
491,
485,
479,
474,
468,
460,
445,
440,
435,
430,
415,
409,
404,
398,
392,
377,
375,
372,
370,
347,
345,
342,
340,
325,
317,
310,
302,
294,
287,
272,
269,
267,
264,
249,
244,
238,
232,
227,
211,
204,
196,
189,
181,
174,
169,
164,
159,
144,
132,
121,
116,
111,
106,
100,
95,
89,
83,
68,
53,
48,
43,
38,
27,
15,
15,
4,
-6,
-14,
-21,
-29,
-36,
-44,
-52,
-59,
-67,
-74,
-82,
-93,
-104,
-108,
-112,
-119,
-127,
-135,
-142,
-150,
-157,
-165,
-187,
-193,
-199,
-204,
-210,
-225,
-231,
-236,
-242,
-248,
-255,
-263,
-270,
-278,
-285,
-297,
-308,
-312,
-316,
-323,
-331,
-338,
-350,
-361,
-368,
-376,
-383,
-391,
-406,
-414,
-421,
-429,
-440,
-451,
-456,
-461,
-466,
-474,
-482,
-489,
-497,
-504,
-515,
-527,
-529,
-532,
-534,
-557,
-562,
-567,
-572,
-583,
-595,
-602,
-610,
-617,
-629,
-640,
-644,
-647,
-651,
-655,
-678,
-683,
-689,
-695,
-700,
-708,
-715,
-723,
-746,
-753,
-761,
-768,
-776,
-783,
-798,
-813,
-818,
-824,
-829,
-844,
-859,
-866,
-874,
-881,
-889,
-896,
-906,
-917,
-927,
-942,
-949,
-957,
-964,
-972,
-979,
-987,
-994,
-1002,
-1017,
-1027,
-1037,
-1047,
-1062,
-1068,
-1074,
-1079,
-1085,
-1096,
-1108,
-1115,
-1123,
-1130,
-1138,
-1145,
-1155,
-1165,
-1176,
-1183,
-1191,
-1198,
-1206,
-1213,
-1225,
-1236,
-1243,
-1251,
-1259,
-1266,
-1274,
-1284,
-1294,
-1304,
-1311,
-1319,
-1326,
-1334,
-1341,
-1353,
-1364,
-1372,
-1379,
-1387,
-1398,
-1409,
-1417,
-1424,
-1432,
-1440,
-1447,
-1455,
-1462,
-1477,
-1485,
-1492,
-1500,
-1511,
-1523,
-1533,
-1543,
-1553,
-1560,
-1568,
-1575,
-1583,
-1590,
-1606,
-1621,
-1628,
-1636,
-1643,
-1651,
-1658,
-1666,
-1673,
-1681,
-1696,
-1704,
-1711,
-1719,
-1726,
-1741,
-1749,
-1756,
-1764,
-1779,
-1794,
-1799,
-1804,
-1809,
-1824,
-1836,
-1847,
-1851,
-1854,
-1877,
-1885,
-1892,
-1897,
-1902,
-1907,
-1940,
-1940,
-1940,
-1947,
-1963,
-1970,
-1985,
-1988,
-1990,
-1993,
-2000,
-2003,
-2026,
-2026,
-2030,
-2033,
-2034,
-2036,
-2037,
-2037,
-2038,
-2039,
-2039,
-2039,
-2039,
-2039,
-2039,
-2039,
-2039,
-2039,
-2038,
-2035,
-2034,
-2031,
-2028,
-2025,
-2023,
-2023,
-2008,
-2000,
-1995,
-1993,
-1990,
-1968,
-1963,
-1958,
-1952,
-1930,
-1924,
-1919,
-1913,
-1907,
-1892,
-1885,
-1877,
-1867,
-1857,
-1847,
-1842,
-1837,
-1832,
-1820,
-1809,
-1794,
-1789,
-1784,
-1779,
-1771,
-1764,
-1760,
-1756,
-1749,
-1741,
-1731,
-1721,
-1711,
-1704,
-1692,
-1681,
-1666,
-1651,
-1646,
-1641,
-1621,
-1616,
-1611,
-1605,
-1590,
-1587,
-1583,
-1579,
-1575,
-1553,
-1545,
-1538,
-1530,
-1523,
-1515,
-1504,
-1492,
-1481,
-1470,
-1465,
-1460,
-1455,
-1440,
-1428,
-1417,
-1413,
-1409,
-1406,
-1387,
-1382,
-1377,
-1372,
-1360,
-1349,
-1344,
-1339,
-1334,
-1323,
-1311,
-1308,
-1304,
-1289,
-1281,
-1274,
-1266,
-1259,
-1236,
-1228,
-1225,
-1213,
-1198,
-1191,
-1168,
-1164,
-1160,
-1138,
-1130,
-1123,
-1115,
-1108,
-1093,
-1085,
-1062,
-1057,
-1052,
-1047,
-1032,
-1025,
-1021,
-1010,
-1002,
-972,
-969,
-967,
-949,
-949,
-912,
-909,
-906,
-896,
-881,
-866,
-862,
-844,
-829,
-813,
-806,
-795,
-783,
-761,
-753,
-748,
-743,
-723,
-708,
-700,
-685,
-680,
-675,
-670,
-663,
-651,
-640,
-632,
-625,
-610,
-606,
-602,
-580,
-572,
-557,
-552,
-547,
-527,
-519,
-504,
-497,
-489,
-482,
-466,
-459,
-451,
-444,
-429,
-421,
-406,
-402,
-399,
-383,
-368,
-361,
-353,
-346,
-323,
-316,
-312,
-308,
-293,
-285,
-278,
-265,
-263,
-256,
-253,
-249,
-241,
-235,
-220,
-213,
-204,
-183,
-165,
-154,
-151,
-144,
-133,
-127,
-121,
-109,
-106,
-102,
-98,
-80,
-40,
-20,
-10,
-5,
-3
};



/* Theremin WAVE Table "Sinus" - 1024 entries full table, amplitude -2048.,*/

#include <avr/pgmspace.h>

const int16_t sine_table7[1024] PROGMEM = {\
11,
42,
47,
51,
56,
62,
68,
73,
79,
106,
220,
235,
258,
269,
281,
296,
326,
341,
356,
371,
379,
386,
409,
416,
424,
439,
462,
467,
472,
477,
499,
511,
522,
537,
545,
552,
560,
571,
582,
605,
610,
615,
620,
643,
654,
665,
680,
703,
711,
718,
726,
741,
763,
775,
786,
793,
801,
824,
839,
846,
854,
876,
882,
887,
892,
914,
926,
937,
952,
959,
967,
975,
997,
1008,
1020,
1035,
1046,
1058,
1073,
1080,
1088,
1110,
1125,
1133,
1140,
1156,
1163,
1178,
1193,
1208,
1216,
1223,
1239,
1254,
1261,
1269,
1284,
1288,
1291,
1306,
1310,
1314,
1329,
1337,
1342,
1347,
1352,
1359,
1374,
1378,
1382,
1389,
1397,
1405,
1412,
1427,
1431,
1435,
1438,
1442,
1450,
1465,
1472,
1480,
1487,
1491,
1495,
1503,
1506,
1510,
1518,
1525,
1528,
1530,
1533,
1537,
1540,
1548,
1550,
1553,
1555,
1559,
1563,
1570,
1574,
1578,
1581,
1583,
1586,
1593,
1597,
1601,
1603,
1606,
1608,
1616,
1619,
1623,
1627,
1631,
1635,
1638,
1642,
1646,
1650,
1653,
1661,
1663,
1666,
1669,
1676,
1680,
1684,
1691,
1691,
1691,
1691,
1699,
1706,
1706,
1706,
1706,
1714,
1714,
1718,
1721,
1729,
1729,
1729,
1736,
1736,
1736,
1744,
1752,
1752,
1752,
1752,
1759,
1767,
1767,
1769,
1772,
1774,
1774,
1774,
1782,
1782,
1782,
1782,
1782,
1789,
1789,
1789,
1789,
1789,
1789,
1789,
1789,
1797,
1797,
1797,
1797,
1797,
1797,
1797,
1797,
1797,
1797,
1797,
1797,
1804,
1804,
1804,
1804,
1804,
1804,
1808,
1812,
1812,
1812,
1812,
1812,
1812,
1812,
1812,
1819,
1819,
1819,
1819,
1819,
1819,
1819,
1819,
1827,
1827,
1827,
1827,
1827,
1834,
1834,
1834,
1834,
1842,
1842,
1842,
1842,
1842,
1850,
1850,
1850,
1857,
1857,
1857,
1865,
1865,
1865,
1872,
1872,
1876,
1880,
1880,
1880,
1880,
1880,
1880,
1884,
1887,
1887,
1887,
1887,
1887,
1887,
1887,
1887,
1887,
1887,
1880,
1880,
1880,
1880,
1880,
1872,
1872,
1872,
1872,
1872,
1868,
1865,
1865,
1865,
1865,
1865,
1857,
1857,
1857,
1857,
1857,
1857,
1850,
1850,
1850,
1850,
1850,
1850,
1850,
1842,
1842,
1842,
1842,
1842,
1842,
1834,
1834,
1834,
1834,
1834,
1827,
1827,
1827,
1819,
1819,
1819,
1812,
1812,
1804,
1797,
1797,
1793,
1789,
1782,
1782,
1774,
1767,
1759,
1759,
1759,
1752,
1744,
1736,
1721,
1721,
1721,
1714,
1706,
1699,
1691,
1684,
1684,
1680,
1676,
1669,
1661,
1653,
1653,
1646,
1646,
1638,
1631,
1623,
1616,
1616,
1608,
1608,
1601,
1593,
1586,
1578,
1578,
1563,
1563,
1555,
1548,
1540,
1533,
1525,
1510,
1510,
1503,
1495,
1480,
1465,
1457,
1435,
1435,
1427,
1412,
1397,
1389,
1374,
1367,
1363,
1352,
1337,
1329,
1306,
1299,
1284,
1280,
1269,
1254,
1239,
1223,
1208,
1186,
1182,
1171,
1148,
1133,
1118,
1110,
1088,
1084,
1073,
1058,
1042,
1020,
1012,
997,
993,
975,
959,
944,
922,
907,
884,
880,
869,
854,
839,
809,
786,
756,
752,
733,
703,
680,
658,
628,
605,
601,
582,
545,
514,
477,
439,
401,
397,
364,
318,
273,
220,
182,
137,
133,
107,
77,
39,
9,
-28,
-65,
-69,
-96,
-148,
-186,
-224,
-277,
-345,
-348,
-412,
-465,
-526,
-563,
-601,
-646,
-654,
-707,
-805,
-910,
-971,
-1023,
-1069,
-1072,
-1114,
-1159,
-1204,
-1242,
-1272,
-1303,
-1306,
-1333,
-1370,
-1401,
-1423,
-1446,
-1453,
-1476,
-1521,
-1551,
-1582,
-1604,
-1634,
-1638,
-1657,
-1687,
-1710,
-1740,
-1755,
-1770,
-1774,
-1793,
-1808,
-1831,
-1838,
-1853,
-1868,
-1872,
-1876,
-1891,
-1898,
-1921,
-1929,
-1936,
-1940,
-1951,
-1959,
-1966,
-1974,
-1981,
-1989,
-1989,
-1997,
-1997,
-2004,
-2004,
-2004,
-2012,
-2012,
-2012,
-2012,
-2019,
-2019,
-2019,
-2019,
-2023,
-2027,
-2027,
-2027,
-2027,
-2027,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2034,
-2027,
-2027,
-2027,
-2027,
-2027,
-2027,
-2019,
-2019,
-2019,
-2019,
-2012,
-2012,
-2004,
-2004,
-1997,
-1997,
-1997,
-1989,
-1981,
-1974,
-1966,
-1959,
-1959,
-1951,
-1944,
-1936,
-1929,
-1921,
-1914,
-1910,
-1898,
-1891,
-1876,
-1861,
-1846,
-1838,
-1834,
-1823,
-1808,
-1793,
-1770,
-1755,
-1733,
-1729,
-1717,
-1687,
-1665,
-1634,
-1589,
-1536,
-1533,
-1484,
-1423,
-1340,
-1197,
-1046,
-639,
-631,
-443,
-337,
-269,
-209,
-133,
-81,2
-73,
-28,
17,
54,
84,
122,
145,
152,
167,
190,
220,
235,
250,
258,
262,
273,
281,
296,
303,
311,
318,
318,
318,
326,
326,
326,
329,
331,
333,
334,
334,
336,
336,
337,
337,
337,
338,
339,
340,
340,
340,
340,
340,
340,
340,
340,
340,
339,
339,
338,
337,
336,
335,
335,
333,
332,
332,
331,
330,
329,
328,
327,
326,
324,
322,
319,
317,
318,
311,
311,
303,
296,
296,
288,
281,
273,
269,
265,
258,
243,
235,
220,
205,
201,
198,
182,
167,
160,
145,
130,
122,
107,
92,
69,
47,
24,
-5,
-9,
-35,2
-58,
-88,
-1333,
-1416,
-1476,
-1476,
-1521,
-1559,
-1597,
-1627,
-1650,
-1672,
-1672,
-1687,
-1702,
-1717,
-1733,
-1740,
-1755,
-1759,
-1770,
-1778,
-1785,
-1793,
-1800,
-1808,
-1812,
-1816,
-1823,
-1831,
-1838,
-1846,
-1846,
-1849,
-1853,
-1861,
-1861,
-1868,
-1876,
-1876,
-1880,
-1883,
-1883,
-1891,
-1891,
-1898,
-1898,
-1898,
-1898,
-1906,
-1906,
-1906,
-1906,
-1906,
-1906,
-1914,
-1914,
-1914,
-1914,
-1914,
-1914,
-1914,
-1914,
-1914,
-1914,
-1914,
-1906,
-1906,
-1906,
-1906,
-1906,
-1906,
-1906,
-1898,
-1898,
-1898,
-1898,
-1891,
-1891,
-1891,
-1891,
-1883,
-1883,
-1883,
-1883,
-1883,
-1876,
-1876,
-1868,
-1868,
-1868,
-1861,
-1861,
-1853,
-1853,
-1846,
-1846,
-1846,
-1838,
-1831,
-1831,
-1823,
-1816,
-1812,
-1800,
-1800,
-1785,
-1778,
-1770,
-1755,
-1755,
-1748,
-1740,
-1725,
-1710,
-1702,
-1699,
-1687,
-1672,
-1650,
-1619,
-1597,
-1567,
-1563,
-1529,
-1491,
-1453,
-1423,
-1378,
-1340,
-1337,
-1310,
-1265,
-1227,
-1197,
-1159,
-1137,
-1129,
-1106,
-1076,
-1046,
-1016,
-986,
-956,
-952,
-933,
-903,
-873,
-842,
-805,
-759,
-756,
-722,
-676,
-639,
-609,
-578,
-548,
-548,
-526,
-503,
-480,
-465,
-443,
-428,
-428,
-420,
-405,
-390,
-382,
-367,
-352,
-352,
-337,
-329,
-314,
-307,
-299,
-292,
-288,
-277,
-269,
-262,
-254,
-254,
-246,
-243,
-239,
-231,
-231,
-224,
-216,
-209,
-209,
-201,
-194,
-194,
-186,
-179,
-179,
-175,
-171,
-164,
-156,
-148,
-148,
-141,
-141,
-141,
-141,
-133,
-130,
-126,
-122,
-119,
-116,
-113,
-111,
-107,
-104,
-101,
-98,
-96,
-94,
-92,
-89,
-86,
-83,
-80,
-78,
-76,
-74,
-72,
-71,
-69,
-68,
-66,
-64,
-62,
-60,
-59,
-57,
-55,
-53,
-51,
-49,
-47,
-46,
-44,
-42,
-39,
-37,
-35,
-33,
-32,
-31,
-28,
-27,
-25,
-23,
-21,
-19,
-17,
-16,
-14,
-13,
-12,
-11,
-9,
-9,
-7,
-6,
-5,
-4,
-3,
-2,
-1,
3,

};



/* Theremin WAVE Table "Sinus" - 1024 entries full table, amplitude -2048.,*/

#include <avr/pgmspace.h>

const int16_t sine_table8[1024] PROGMEM = {\
11,
42,
47,
51,
56,
69,
80,
91,
102,
112,
123,
130,
138,
145,
152,
159,
166,
174,
181,
188,
195,
202,
210,
217,
224,
231,
238,
246,
253,
260,
267,
274,
282,
289,
297,
304,
312,
327,
334,
342,
349,
355,
360,
365,
380,
387,
391,
395,
402,
410,
414,
417,
425,
429,
432,
436,
440,
448,
451,
455,
463,
465,
468,
470,
478,
482,
485,
493,
500,
504,
508,
515,
523,
523,
531,
538,
542,
546,
561,
568,
568,
576,
583,
587,
591,
598,
602,
606,
614,
621,
625,
629,
636,
644,
651,
655,
659,
663,
666,
674,
678,
681,
689,
696,
699,
702,
704,
704,
712,
715,
719,
723,
727,
742,
749,
753,
757,
764,
768,
772,
779,
787,
795,
802,
805,
807,
810,
817,
821,
825,
832,
837,
842,
847,
855,
859,
862,
866,
870,
874,
878,
881,
885,
893,
900,
908,
910,
913,
915,
930,
938,
942,
945,
949,
953,
961,
968,
976,
983,
988,
993,
998,
1006,
1010,
1013,
1028,
1031,
1033,
1036,
1043,
1051,
1059,
1062,
1066,
1069,
1071,
1074,
1089,
1093,
1096,
1104,
1106,
1109,
1111,
1126,
1130,
1134,
1138,
1142,
1157,
1160,
1164,
1172,
1179,
1184,
1189,
1194,
1202,
1209,
1217,
1225,
1228,
1232,
1240,
1243,
1247,
1255,
1257,
1260,
1262,
1277,
1285,
1289,
1292,
1300,
1304,
1308,
1315,
1319,
1323,
1323,
1330,
1334,
1338,
1345,
1353,
1353,
1360,
1368,
1372,
1375,
1383,
1383,
1390,
1398,
1406,
1406,
1406,
1413,
1417,
1421,
1428,
1436,
1440,
1443,
1447,
1451,
1458,
1466,
1473,
1476,
1478,
1481,
1496,
1500,
1504,
1511,
1515,
1519,
1522,
1526,
1534,
1541,
1544,
1546,
1549,
1556,
1564,
1568,
1572,
1579,
1583,
1587,
1590,
1594,
1602,
1602,
1602,
1605,
1609,
1617,
1621,
1624,
1632,
1632,
1636,
1639,
1643,
1647,
1647,
1654,
1662,
1666,
1670,
1677,
1677,
1685,
1692,
1700,
1704,
1707,
1715,
1715,
1722,
1730,
1730,
1734,
1737,
1745,
1745,
1753,
1753,
1760,
1764,
1768,
1768,
1775,
1775,
1783,
1783,
1787,
1790,
1790,
1798,
1798,
1798,
1805,
1805,
1805,
1813,
1813,
1820,
1828,
1828,
1832,
1836,
1836,
1843,
1843,
1843,
1851,
1851,
1851,
1858,
1858,
1866,
1866,
1873,
1873,
1873,
1873,
1881,
1881,
1888,
1888,
1888,
1888,
1888,
1896,
1896,
1896,
1896,
1896,
1896,
1903,
1903,
1903,
1903,
1907,
1911,
1911,
1911,
1911,
1911,
1911,
1911,
1911,
1903,
1903,
1903,
1896,
1896,
1892,
1888,
1881,
1881,
1873,
1866,
1866,
1862,
1858,
1858,
1851,
1851,
1843,
1843,
1839,
1836,
1828,
1828,
1820,
1813,
1805,
1802,
1798,
1790,
1783,
1768,
1760,
1753,
1753,
1745,
1737,
1722,
1715,
1707,
1692,
1688,
1677,
1670,
1654,
1647,
1639,
1624,
1621,
1617,
1609,
1594,
1587,
1572,
1556,
1553,
1549,
1534,
1526,
1511,
1489,
1466,
1462,
1451,
1428,
1406,
1383,
1360,
1338,
1334,
1308,
1285,
1240,
1202,
1172,
1142,
1134,
1096,
1066,
1043,
1013,
991,
953,
949,
930,
908,
893,
870,
847,
832,
825,
810,
787,
764,
742,
712,
681,
678,
659,
629,
591,
531,
493,
455,
448,
425,
395,
372,
334,
297,
267,
263,
229,
199,
168,
131,
101,
70,
63,
33,
2,
-27,
-49,
-72,
-87,
-91,
-110,
-132,
-155,
-170,
-193,
-223,
-227,
-253,
-276,
-298,
-321,
-343,
-374,
-377,
-396,
-419,
-442,
-457,
-479,
-483,
-509,
-547,
-577,
-608,
-638,
-675,
-675,
-706,
-728,
-751,
-766,
-789,
-819,
-819,
-834,
-849,
-872,
-887,
-902,
-909,
-913,
-924,
-932,
-947,
-962,
-977,
-992,
-996,
-1007,
-1030,
-1045,
-1060,
-1075,
-1098,
-1098,
-1113,
-1136,
-1151,
-1166,
-1181,
-1211,
-1211,
-1226,
-1241,
-1256,
-1271,
-1286,
-1302,
-1305,
-1317,
-1332,
-1347,
-1354,
-1369,
-1384,
-1384,
-1392,
-1407,
-1415,
-1430,
-1445,
-1452,
-1452,
-1467,
-1475,
-1490,
-1505,
-1513,
-1520,
-1524,
-1528,
-1535,
-1550,
-1558,
-1573,
-1573,
-1577,
-1588,
-1596,
-1603,
-1611,
-1618,
-1626,
-1630,
-1633,
-1641,
-1648,
-1656,
-1664,
-1664,
-1667,
-1671,
-1679,
-1679,
-1686,
-1694,
-1694,
-1698,
-1701,
-1709,
-1709,
-1716,
-1731,
-1739,
-1739,
-1739,
-1747,
-1754,
-1762,
-1769,
-1777,
-1777,
-1777,
-1784,
-1792,
-1799,
-1807,
-1807,
-1811,
-1814,
-1822,
-1830,
-1830,
-1837,
-1837,
-1841,
-1859,
-1860,
-1862,
-1863,
-1866,
-1868,
-1870,
-1873,
-1874,
-1875,
-1876,
-1878,
-1880,
-1880,
-1882,
-1883,
-1884,
-1884,
-1885,
-1886,
-1886,
-1886,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1887,
-1886,
-1886,
-1886,
-1886,
-1885,
-1885,
-1883,
-1882,
-1881,
-1880,
-1879,
-1878,
-1876,
-1875,
-1873,
-1871,
-1870,
-1867,
-1864,
-1862,
-1859,
-1858,
-1852,
-1848,
-1846,
-1839,
-1836,
-1834,
-1826,
-1823,
-1819,
-1812,
-1810,
-1809,
-1802,
-1799,
-1796,
-1794,
-1791,
-1788,
-1785,
-1783,
-1781,
-1778,
-1776,
-1775,
-1773,
-1771,
-1770,
-1768,
-1766,
-1765,
-1764,
-1763,
-1760,
-1760,
-1759,
-1758,
-1756,
-1754,
-1754,
-1753,
-1751,
-1750,
-1749,
-1748,
-1746,
-1745,
-1745,
-1744,
-1743,
-1742,
-1741,
-1740,
-1739,
-1737,
-1737,
-1736,
-1734,
-1734,
-1734,
-1732,
-1732,
-1730,
-1730,
-1729,
-1728,
-1727,
-1726,
-1726,
-1725,
-1723,
-1722,
-1722,
-1721,
-1720,
-1719,
-1719,
-1718,
-1717,
-1717,
-1715,
-1715,
-1714,
-1714,
-1713,
-1712,
-1712,
-1711,
-1711,
-1709,
-1709,
-1708,
-1708,
-1707,
-1706,
-1705,
-1705,
-1704,
-1703,
-1703,
-1701,
-1701,
-1700,
-1699,
-1698,
-1698,
-1697,
-1696,
-1696,
-1695,
-1693,
-1692,
-1691,
-1690,
-1688,
-1687,
-1687,
-1684,
-1682,
-1682,
-1679,
-1677,
-1676,
-1673,
-1671,
-1668,
-1665,
-1661,
-1659,
-1656,
-1654,
-1647,
-1644,
-1639,
-1631,
-1629,
-1624,
-1618,
-1613,
-1612,
-1608,
-1606,
-1604,
-1604,
-1604,
-1601,
-1597,
-1589,
-1589,
-1582,
-1574,
-1574,
-1570,
-1567,
-1567,
-1559,
-1552,
-1544,
-1544,
-1540,
-1536,
-1529,
-1521,
-1521,
-1514,
-1506,
-1506,
-1499,
-1499,
-1491,
-1484,
-1476,
-1469,
-1469,
-1469,
-1461,
-1453,
-1446,
-1446,
-1438,
-1438,
-1431,
-1423,
-1416,
-1408,
-1401,
-1401,
-1401,
-1393,
-1393,
-1386,
-1378,
-1370,
-1367,
-1363,
-1355,
-1355,
-1348,
-1348,
-1355,
-1295,
-1280,
-1257,
-1220,
-1197,
-1167,
-1163,
-1129,
-1099,
-1061,
-1039,
-1008,
-978,
-974,
-940,
-918,
-888,
-850,
-820,
-797,
-790,
-767,
-744,
-729,
-707,
-684,
-654,
-654,
-639,
-616,
-594,
-571,
-556,
-533,
-533,
-518,
-503,
-488,
-473,
-465,
-450,
-446,
-443,
-428,
-420,
-405,
-397,
-390,
-386,
-375,
-367,
-360,
-352,
-337,
-337,
-333,
-322,
-314,
-299,
-292,
-284,
-277,
-277,
-269,
-262,
-254,
-247,
-247,
-231,
-231,
-231,
-216,
-209,
-194,
-194,
-186,
-182,
-179,
-171,
-164,
-156,
-148,
-148,
-145,
-141,
-133,
-126,
-122,
-118,
-115
-111,
-107,
-103,
-99,
-96,
-92,
-88,
-86,
-83,
-81,
-77,
-73,
-69,
-65,
-63,
-60,
-58,
-54,
-50,
-47,
-43,
-41,
-39,
-37,
-35,
-32,
-28,
-25,
-23,
-20,
-18,
-15,
-13,
0
};



#include "Arduino.h"

#include "timer.h"

volatile uint16_t timer = 0;

void ticktimer (uint16_t ticks) {
  resetTimer();
  while (timerUnexpired(ticks))
    ;  // NOP
};

void millitimer (uint16_t milliseconds) {
  ticktimer(millisToTicks(milliseconds));
}



#ifndef _TIMER_H
#define _TIMER_H

extern volatile uint16_t timer;

inline uint16_t millisToTicks(uint16_t milliseconds) {
  return milliseconds * (1000.0f/32);
}

inline void resetTimer() {
  timer = 0;
}

inline void incrementTimer() {
  timer++;
}

inline bool timerExpired(uint16_t ticks) {
  return timer >= ticks;
}

inline bool timerUnexpired(uint16_t ticks) {
  return timer < ticks;
}

inline bool timerExpiredMillis(uint16_t milliseconds) {
  return timerExpired(millisToTicks(milliseconds));
}

inline bool timerUnexpiredMillis(uint16_t milliseconds) {
  return timerUnexpired(millisToTicks(milliseconds));
}

void ticktimer (uint16_t ticks);
void millitimer (uint16_t milliseconds);

#if SERIAL_ENABLED
const uint16_t TICKS_100_MILLIS = millisToTicks(100);
#endif //SERIAL_ENABLED

#endif // _TIMER_H

Looks like the current version is v4.

https://github.com/GaudiLabs/OpenThereminV4

If you go to the repository you can log an issue and communicate directly with the developer. However, it might be worth trying v4 first to see whether the issues you mention are fixed in the later release.

I can see the code is using wavetables stored in progmem to generate an output waveform via the DAC and its using some direct register manipulation to drive the LEDs and interrupts to turn on and sense the antenna input but I haven't analysed it any deeper to be able to provide any detailed comment.

BTW, I built this kit some time ago. It uses a Pico and works quite well but needs external amplification:

https://github.com/ExtremeElectronics/luminiferous-theremin

It could well be the wiring or soldering that is the issue. It seems like this code likely assigns and prints these identical pitchfn[01] numbers but expected different measurements:

The code might well be correct but it might be getting Garbage In data to produce Garbage Out results:GIGO.