#include "aservelibs/aservelib.h"
#include <stdio.h>
#include <math.h>
#include <string.h>
FILE *textFilePointer;
FILE *textFilePointer2;
typedef struct
{
    int notes;
    int velocity;
}NoteData;
void notetofile (NoteData input, int seqlen, int reclayer);
int main()
{
    int count, count2, note, vel = 0;
    char choice = 'y';
    struct layers;
    int reclayer = 1;
    int playlayer = 1;
    char choice2 = 'y', choice3 = 'y';
    int seqlen = 16;
    NoteData input;
    printf("Welcome To Jonny Maguire's Midi record and playback application. Please Select one of the following options...\n\n");
    aserveSay("Welcome To Jonny Maguires Midi record and playback application. Please Select one of the following options");
    aserveSleep(8000);
    while(choice != 'x')
    {
        printf("r to Record\np to Playback\nx to exit the program\n");
        aserveSay("choose r, to record a sequence, p, to playback your recording. Or select x, at any time to exit the program");
        scanf(" %c", &choice);
        if(choice == 'r')
        {
            while(choice2 != 'n')
            {
                aserveSay("you have chosen to record, enter the no. of notes you wish to record");
                printf("You have chosen to record, enter the no. of notes you wish to record \n\n");
                scanf(" %d", &seqlen);
                printf("Please play %d notes", seqlen);
                    textFilePointer = fopen("recording1.txt", "w");
                    textFilePointer2 = fopen("recording2.txt", "w");
                if(textFilePointer == NULL or textFilePointer2 == NULL)
                {
                    printf("Error Opening File!");
                }
                else
                {
                    //Recording 16 note data into txt file
                    notetofile(input, seqlen, reclayer);
                    printf("Would you like to record another layer?");
                    scanf(" %c", &choice2);
                }
                reclayer++;
            }
        }
            else if (choice == 'p')
            {
                while(choice3 != 'n')
                {
                    //If P is selected, playback of the txt file
                    printf("which sequence would like to playback? 1, 2 or both (3)?");
                    scanf(" %d", &playlayer);
                        textFilePointer = fopen("recording1.txt", "r");
                       // textFilePointer2 = fopen("recording2.txt", "r");
                    if(textFilePointer == NULL)
                    {
                        printf("Error Opening File!");
                    }
                    //read until end of file and convert frequency
                    if (playlayer == 1)
                    {
                    while(!feof(textFilePointer))
                    {
                        float frequency;
                        float amplitude = vel/127.0;
                        fscanf(textFilePointer, " %d %d\n", &input.notes, &input.velocity);
                        printf(" %d %d\n\n", input.notes, input.velocity);
                        frequency = 440 * pow(2, (note-69) /12.0);
                        aserveOscillator(0, frequency, amplitude, 0);
                        aserveSleep(500);
                        aserveOscillator(0, 0, 0, 0);
                    }
                    }
                }
                fclose(textFilePointer);
                playlayer++;
            }
        }
    return 0;
}
//function to write notes to file
void notetofile(NoteData input, int seqlen, int reclayer)
{
    for (int count = 1; count <= seqlen;)
    {
        input.notes = aserveGetNote();
        input.velocity = aserveGetVelocity();
        //only note on messages are sent to file
        if(input.velocity > 0)
        {
            printf("reclayer = %d\n", reclayer);
            if(reclayer == 1)
            {
                printf("test");
              fprintf(textFilePointer, " %d %d\n", input.notes, input.velocity);
                fprintf(textFilePointer, "test");
            }
            else if(reclayer == 2)
            {
                fprintf(textFilePointer2, " %d %d\n", input.notes, input.velocity);
            }
            printf("%d %d\n", input.notes, input.velocity);
            count++;
        }
    }
}
This program is meant to read midi notes, write them to a txt file and then read from file into an oscillator. fprintf is not writing to file in the 'notestofile' function. It maybe because I have two textFilePointers open at the same time.
 
    