Testing funky drummer midi output for cubase test

Dependencies:   USBDevice mbed-src

main.cpp

Committer:
GonzoBurns
Date:
2015-08-17
Revision:
0:d4cee525061a

File content as of revision 0:d4cee525061a:

#include "mbed.h"

#include "USBMIDI.h"

// GM standard drum map, see: http://commons.wikimedia.org/wiki/File:GMStandardDrumMap.gif
#define C1      36  // bass drum
#define Cis1    37  // side stick
#define D1      38  // acoustic snare
#define Dis1    39  // hand clap
#define E1      40  // electric snare
#define F1      41  // low floor tom
#define Fis1    42  // closed hi-hat
#define G1      43  // high floor tom
#define Gis1    44  // pedal hi-hat
#define A1      45  // low tom
#define Ais1    46  // open hi-hat
#define B1      47  // low-mid tom
#define C2      48  // hi-mid tom
#define Cis2    49  // crash cymbal
#define D2      50  // hi tom
#define Dis2    51  // ride cymbal
#define E2      52  // chinese cymbal
#define F2      53  // ride bell
#define Fis2    54  // tamburine
#define G2      55  // splash cymbal
#define Gis2    56  // cowbell
#define A2      57  // crash cymbal 2
#define Ais2    58  // vibraslap
#define B2      59  // ride cymbal 2
#define C3      60
#define Cis3    61
#define D3      62
#define Dis3    63
#define E3      64
#define F3      65
#define Fis3    66
#define G3      67
#define Gis3    68
#define A3      69
#define Ais3    70
#define B3      71
#define C4      72
#define Cis4    73
#define D4      74
#define Dis4    75
#define E4      76
#define F4      77
#define Fis4    78
#define G4      79
#define Gis4    80
#define A4      81
#define Ais4    82
#define B4      83

#define HIHAT_CLOSED Fis1
#define HIHAT_OPEN   Ais1
#define HIHAT_PEDAL  Gis1
#define BASEDRUM     C1
#define SNARE        E1

#define TEMPO        0.2

#define FULL         127
#define NORMAL       100
#define BLUENOTE     70 


USBMIDI midi;
DigitalOut myled(LED1);

void beat_1() {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( BASEDRUM    , NORMAL ) );
}

void beat_1_E () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
}

void beat_1_AND () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( BASEDRUM    , NORMAL ) );    
}
    
void beat_1_A () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
}

void beat_2() {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( SNARE       , FULL ) );
}

void beat_2_E () {
    midi.write( MIDIMessage::NoteOn( HIHAT_OPEN  , BLUENOTE ) );
}

void beat_2_AND () {
    midi.write( MIDIMessage::NoteOn( HIHAT_OPEN  , BLUENOTE ) );
    midi.write( MIDIMessage::NoteOn( HIHAT_PEDAL , NORMAL ) );
    midi.write( MIDIMessage::NoteOff( HIHAT_OPEN , BLUENOTE ) );            
}
    
void beat_2_A () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( SNARE       , BLUENOTE ) );
}

void beat_3() {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
}

void beat_3_E () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( SNARE       , BLUENOTE ) );
}

void beat_3_AND () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( BASEDRUM    , NORMAL ) );
}
    
void beat_3_A () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( SNARE       , BLUENOTE ) );
}

void beat_4() {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL) );
    midi.write( MIDIMessage::NoteOn( SNARE       , FULL ) );
}

void beat_4_E () {
    midi.write( MIDIMessage::NoteOn( HIHAT_OPEN  , BLUENOTE ) );
    midi.write( MIDIMessage::NoteOn( BASEDRUM    , NORMAL ) );
}

void beat_4_AND () {
    midi.write( MIDIMessage::NoteOn( HIHAT_OPEN  , BLUENOTE ) );
    midi.write( MIDIMessage::NoteOn( HIHAT_PEDAL , NORMAL ) );
    midi.write( MIDIMessage::NoteOff( HIHAT_OPEN , BLUENOTE ) );   }
    
void beat_4_A () {
    midi.write( MIDIMessage::NoteOn( HIHAT_CLOSED, NORMAL ) );
    midi.write( MIDIMessage::NoteOn( SNARE       , BLUENOTE ) );
}





int main() {
    while(1) {
        
        myled = 1;
        beat_1();
        wait( TEMPO );
        myled = 0;
        beat_1_E();
        wait( TEMPO );
        myled = 1;
        beat_1_AND();
        wait( TEMPO );
        myled = 0;
        beat_1_A();
        wait( TEMPO );

        myled = 1;
        beat_2();
        wait( TEMPO );
        myled = 0;
        beat_2_E();
        wait( TEMPO );
        myled = 1;
        beat_2_AND();
        wait( TEMPO );
        myled = 0;
        beat_2_A();
        wait( TEMPO );

        myled = 1;
        beat_3();
        wait( TEMPO );
        myled = 0;
        beat_3_E();
        wait( TEMPO );
        myled = 1;
        beat_3_AND();
        wait( TEMPO );
        myled = 0;
        beat_3_A();
        wait( TEMPO );

        myled = 1;
        beat_4();
        wait( TEMPO );
        myled = 0;
        beat_4_E();
        wait( TEMPO );
        myled = 1;
        beat_4_AND();
        wait( TEMPO );
        myled = 0;
        beat_4_A();
        wait( TEMPO );
    }
}