 if (Board == Trinket) {
   int ditPin = 1; // PB1 
   int dahPin = 2; // PB2
+  int speakerPin = 0;
 }
 
 if (Board == TrinketPro) {
   int ditPin = 9;   // PB1
   int dahPin = 10;  // PB2
-}
-
-// sound output. Can be a piezo buzzer, speaker (with amp) or 3mm trs or trrs jack
-if (Board == Uno) {
-  int speakerPin = 4; // Digital pin 4 on uno is basic PWM
-}
-
-if (Board == Trinket) {
-  int speakerPin = 0;
-}
-
-if (Board == TrinketPro) {
   int speakerPin = 9; // Digital pin 9 on Trinket pro should be high speed PWM
 }
-
-// instantiate an oscillator (One for dits and one for dahs? TBD)
-Oscillator output1(speakerPin, ditLength, sideToneFreq);
 
 // for pin change interrupts we need the following
 void InitialiseInterruptTrinket(){

    //always be the same interrupt routine
  
    ISR(PCINT0_vect) {    
    if (digitalRead(ditPin)==0)  Serial.println("dit");
    if (digitalRead(dahPin)==0)  Serial.println("dah");
    }
  }
} 

/* 
This is vestigial. I may need the update stuff
as a reminder for the callback to play.
Once I'm done with those I should delete this.

// Interrupt is called once a millisecond, 
SIGNAL(TIMER0_COMPA_vect) 
{
  unsigned long currentMillis = millis();
  
  // if(digitalRead(2) == HIGH)
  {
     output1.Update(currentMillis);
  }
  
  output2.Update(currentMillis);
  output3.Update(currentMillis);
} 
 */
void loop()
{
}
  sei();    // turn interrupts back on
}

void playDit() {
  now = millis();
  if (now > interToneLockTimer) {
    tone(speakerPin, sideToneFreq, ditLength);
  }
  interToneLockTimer = millis() + interToneLength;
  last = dit;
}

void playDah() {
  now = millis();
  if (now > interToneLockTimer) {
    tone(speakerPin, sideToneFreq, dahLength);
  }
  interToneLockTimer = millis() + interToneLength;
  last = dah;
}

void play(sym) {
  if (sym) {
    playDit();
  } else {
    playDah();
  } 
}

void diDah() {
  if (digitalRead(ditPin)==0 && digitalRead(dahPin)==0) {
    play(!last);
    pause();  // FIXME. How are you going to handle the timing
              // between this pause and the lock in play()?
  }
}

void setup() 
{ 
  pinMode(ditPin, INPUTPULLUP);
  pinMode(dahPin, INPUTPULLUP);
  
  if (Board = Uno) {
    // set up ditPin to read ditButton on regular Arduinos with 2 hardware interrups
    pinMode(ditPin, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(0), playDit, LOW);
    
    // set up dahPin to read dahButton on regular Arduinos with 2 hardware interrups
    pinMode(dahPin, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(1), playDah, LOW);
  }
  
  if (Board == Trinket) {
