Dj Controller for Uni project - Constructor/destructor or type error

I’m a big noob at coding and for our final project we need to build a midi controller of some sort. obviously i chose the most abstract one for more marks >:(
I’ve verified code for the mega to run as a usb-midi device. However with a new tab i’m trying to input the timestamp code for the arduino to run in serato DJ. But i keep getting error after error.
Error - expected constructor, destructor or type Highlighting PinMode 3

#include “avr/pgmspace.h”

// table of 256 sine values / one sine period / stored in flash memory
PROGMEM const unsigned char sine256 = {

#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

int ledPin = 13; // LED pin 7
int testPin = 7;
int t2Pin = 6;
byte bb;

double dfreq;
// const double refclk=31372.549; // =16MHz / 510
const double refclk=31376.6; // measured

// variables used inside interrupt service declared as volatile
volatile byte icnt; // var inside interrupt
volatile byte icnt1; // var inside interrupt
volatile byte icnt2; // var inside interrupt
volatile byte c4ms; // counter incremented all 4ms
volatile unsigned long phaccu; // pahse accumulator
volatile unsigned long tword_m; // dds tuning word m

pinMode(ledPin, OUTPUT); // sets the digital pin as output
Serial.begin(115200); // connect to the serial port
Serial.println(“DDS Test”);

pinMode(6, OUTPUT); // sets the digital pin as output
pinMode(7, OUTPUT); // sets the digital pin as output
pinMode(11, OUTPUT); // pin11= PWM output / frequency output
pinMode(3, OUTPUT);

// disable interrupts to avoid timing distortion
cbi (TIMSK0,TOIE0); // disable Timer0 !!! delay() is now not available
sbi (TIMSK2,TOIE2); // enable Timer2 Interrupt

dfreq=1000.0; // initial output frequency = 1000.o Hz
tword_m=pow(2,32)*dfreq/refclk; // caclulate DDS new tuning word

void loop()
while(1) {
if (c4ms > 250) { // timer / wait for a full second
dfreq=analogRead(0); // read Poti on analog pin 0 to adjust output frequency from 0…1023 Hz

cbi (TIMSK2,TOIE2); // disble Timer2 Interrupt
tword_m=pow(2,32)*dfreq/refclk; // calulate DDS new tuning word
sbi (TIMSK2,TOIE2); // enable Timer2 Interrupt

Serial.print(" ");

sbi(PORTD,6); // Test / set PORTD,7 high to observe timing with a scope
cbi(PORTD,6); // Test /reset PORTD,7 high to observe timing with a scope
// timer2 setup
// set prscaler to 1, PWM mode to phase correct PWM, 16000000/510 = 31372.55 Hz clock
void Setup_timer2() {

// Timer2 Clock Prescaler to : 1
sbi (TCCR2B, CS20);
cbi (TCCR2B, CS21);
cbi (TCCR2B, CS22);

// Timer2 PWM Mode set to Phase Correct PWM
cbi (TCCR2A, COM2A0); // clear Compare Match
sbi (TCCR2A, COM2A1);
cbi (TCCR2A, COM2B0); // clear Compare Match
sbi (TCCR2A, COM2B1);

sbi (TCCR2A, WGM20); // Mode 1 / Phase Correct PWM
cbi (TCCR2A, WGM21);
cbi (TCCR2B, WGM22);

// Timer2 Interrupt Service at 31372,550 KHz = 32uSec
// this is the timebase REFCLOCK for the DDS generator
// FOUT = (M (REFCLK)) / (2 exp 32)
// runtime : 8 microseconds ( inclusive push and pop)
ISR(TIMER2_OVF_vect) {

sbi(PORTD,7); // Test / set PORTD,7 high to observe timing with a oscope

phaccu=phaccu+tword_m; // soft DDS, phase accu with 32 bits
icnt=phaccu >> 24; // use upper 8 bits for phase accu as frequency information
// read value fron ROM sine table and send to PWM DAC
icnt2 = icnt + 73;
OCR2A=pgm_read_byte_near(sine256 + icnt);
OCR2B=pgm_read_byte_near(sine256 + icnt2);

if(icnt1++ == 125) { // increment variable c4ms all 4 milliseconds

cbi(PORTD,7); // reset PORTD,7

Midi_USB.ino (1.02 KB)

Timecode.ino (4.96 KB)

pinMode has to be in a function.

Please remember to use code tags when posting code

To expand a bit on what AWOL has said, you’ve somehow gotten rid of your setup() function and just dumped everything that should be in setup() above your loop() function.

you've somehow gotten rid of your setup() function

...apart from its closing brace.