/** * \mainpage CSC3502 : PonyTracker * * Les fonctionnalités de cette application sont les suivantes : * * * @file main.c * * Programme principal du Ponytracker * * @version 1.1 * @author Module CSC3502 : Projet Informatique 1ère année TELECOM SudParis * @date Mai 2014 */ #include #include #include #include "motifs/motifs.h" #include "melodie/melodie.h" #include "samples/samples.h" #include "instruments/instruments.h" #include "lecture/lecture.h" //#include //#include //#include #define DEF_NBR_TMP 16 #define MAX_PATTERNS 256 #define NBR_INST 10 #define NBR_SMPL 5 // Variables globales Motif* melodie[MAX_PATTERNS] = {NULL}; Motif* liste = NULL; Instrument* inst[NBR_INST] = {NULL}; Sample* smpl[NBR_SMPL] = {NULL}; // Fonctions de débug void afficherMotif(Motif* m, int nbrPortees){ printf("%s :\n",m->nom); for (int tmp = 0; tmp < m->nbrTmp; tmp++){ for (int portee = 0; portee < nbrPortees; portee++){ printf("%d ",getNote(m,portee,tmp)); } printf("\n"); } } // Fin des fonctions de débug void debut(Motif* melodie[], Instrument* inst[], Sample* smpl[], Motif* liste, int nbrPortees){ ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* m = liste; int i; // En guise d'exemple, voici la mélodie du générique de My Little Pony : Friendship is Magic. // My Little Pony. for (i = 0; i < DEF_NBR_TMP; i++) { definirNote(m,0,i,-1); definirOctave(m,0,i,3); } definirNote(m,0,0,1); definirInstrument(m,0,0,0); definirInstrument(m,0,2,-1); definirNote(m,0,4,0); definirInstrument(m,0,4,0); definirNote(m,0,5,1); definirInstrument(m,0,5,0); definirInstrument(m,0,6,-1); definirNote(m,0,7,3); definirInstrument(m,0,7,0); definirInstrument(m,0,8,-1); definirNote(m,0,9,1); definirInstrument(m,0,9,0); definirInstrument(m,0,12,-1); ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* n = liste; // I used to wonder what friendship could be. for (i = 0; i < DEF_NBR_TMP; i++) { definirNote(n,0,i,-1); definirOctave(n,0,i,3); } definirNote(n,0,1,5); definirInstrument(n,0,1,0); definirNote(n,0,2,5); definirInstrument(n,0,2,0); definirNote(n,0,3,5); definirInstrument(n,0,3,0); definirNote(n,0,4,5); definirInstrument(n,0,4,0); definirInstrument(n,0,5,-1); definirNote(n,0,6,1); definirInstrument(n,0,6,0); definirNote(n,0,7,3); definirInstrument(n,0,7,0); definirInstrument(n,0,8,-1); definirNote(n,0,9,1); definirInstrument(n,0,9,0); definirInstrument(n,0,10,-1); definirNote(n,0,11,5); definirInstrument(n,0,11,0); definirInstrument(n,0,12,-1); definirNote(n,0,13,3); definirInstrument(n,0,13,0); definirInstrument(n,0,14,-1); definirNote(n,0,15,1); definirInstrument(n,0,15,0); ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* p = liste; // Until you all shared its magic with me. for (i = 0; i < DEF_NBR_TMP; i++) { definirNote(p,0,i,-1); definirOctave(p,0,i,3); } definirNote(p,0,0,5); definirInstrument(p,0,0,0); definirNote(p,0,1,8); definirInstrument(p,0,1,0); definirInstrument(p,0,2,-1); definirNote(p,0,3,8); definirInstrument(p,0,3,0); definirInstrument(p,0,4,-1); definirNote(p,0,5,5); definirInstrument(p,0,5,0); definirInstrument(p,0,6,-1); definirNote(p,0,7,3); definirInstrument(p,0,7,0); definirInstrument(p,0,8,-1); definirNote(p,0,9,1); definirInstrument(p,0,9,0); definirNote(p,0,10,5); definirInstrument(p,0,10,0); definirInstrument(p,0,11,-1); definirNote(p,0,12,3); definirInstrument(p,0,12,0); definirInstrument(p,0,14,-1); ajouterMotifVirtuel(melodie,0,m); ajouterMotifVirtuel(melodie,1,n); ajouterMotifVirtuel(melodie,2,m); ajouterMotifVirtuel(melodie,3,p); // Définir les instruments les samples ajouterSample(smpl,0,"lecture/0.wav"); setHauteur(smpl[0],440.0); ajouterInstrument(inst,0); setSample(inst[0],smpl[0]); } int main( int argc, char *argv[] ){ //lecture(nbrPortee, melodie); // insérer code GTK ici GtkBuilder *monBuilder; GtkWidget *maFenetre; gtk_init( &argc, &argv ); monBuilder = gtk_builder_new(); gtk_builder_add_from_file( monBuilder, "GUI/ponytracker.glade", NULL); gtk_builder_connect_signals( monBuilder, NULL); maFenetre = GTK_WIDGET( gtk_builder_get_object( monBuilder, "fenetreprincipale")); gtk_widget_show_all (maFenetre); gtk_main(); return EXIT_SUCCESS; } void fenetreSample ( int argc, char *argv[] ) { GtkBuilder *monBuilderSample; GtkWidget *maFenetreSample; gtk_init( &argc, &argv ); monBuilderSample = gtk_builder_new(); gtk_builder_add_from_file( monBuilderSample, "GUI/ponytracker.glade", NULL); gtk_builder_connect_signals( monBuilderSample, NULL); maFenetreSample = GTK_WIDGET( gtk_builder_get_object( monBuilderSample, "ajoutsample")); gtk_widget_show_all (maFenetreSample); } void fenetreInstrument ( int argc, char *argv[] ) { GtkBuilder *monBuilderInstrument; GtkWidget *maFenetreInstrument; gtk_init( &argc, &argv ); monBuilderInstrument = gtk_builder_new(); gtk_builder_add_from_file( monBuilderInstrument, "GUI/ponytracker.glade", NULL); gtk_builder_connect_signals( monBuilderInstrument, NULL); maFenetreInstrument = GTK_WIDGET( gtk_builder_get_object( monBuilderInstrument, "ajoutinstrument")); gtk_widget_show_all (maFenetreInstrument); } void fenetreMotif ( int argc, char *argv[] ) { GtkBuilder *monBuilderMotif; GtkWidget *maFenetreMotif; gtk_init( &argc, &argv ); monBuilderMotif = gtk_builder_new(); gtk_builder_add_from_file( monBuilderMotif, "GUI/ponytracker.glade", NULL); gtk_builder_connect_signals( monBuilderMotif, NULL); maFenetreMotif = GTK_WIDGET( gtk_builder_get_object( monBuilderMotif, "ajoutmotif")); gtk_widget_show_all (maFenetreMotif); } void lancerLecture () { int nbrPortees = 1; //courant = 0; taille = 0; debut(melodie, inst, smpl, liste, nbrPortees); lecture(nbrPortees,1,480,inst,melodie); } void quitter () { gtk_main_quit(); }