/** * \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 #include "motifs/motifs.h" #include "melodie/melodie.h" #include "lecture/lecture.h" //#include //#include //#include #define DEF_NBR_TMP 16 #define MAX_PATTERNS 256 Motif* m; char *Do="Do"; char *DoD="Do#"; char *Re="Re"; char *ReD="Re#"; char *Mi="Mi"; char *Fa="Fa"; char *FaD="Fa#"; char *Sol="Sol"; char *SolD="Sol#"; char *La="La"; char *LaD="La#"; char *Si="Si"; char *SiD="Si#"; char *N1="1"; char *N2="2"; char *N3="3"; char *N4="4"; char *N5="5"; void remplissageNote (GtkWidget *widget, gpointer *data); // 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[], Motif* liste, int nbrPortees){ ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* m = liste; // My Little Pony. definirNote(m,0,0,1); definirInstrument(m,0,0,1); definirInstrument(m,0,2,-1); definirNote(m,0,4,1); definirInstrument(m,0,4,0); definirNote(m,0,5,1); definirInstrument(m,0,5,1); definirInstrument(m,0,6,-1); definirNote(m,0,7,1); definirInstrument(m,0,7,2); definirInstrument(m,0,8,-1); definirNote(m,0,9,1); definirInstrument(m,0,9,1); definirInstrument(m,0,12,-1); ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* n = liste; // I used to wonder what friendship could be. definirNote(n,0,1,1); definirInstrument(n,0,1,3); definirNote(n,0,2,1); definirInstrument(n,0,2,3); definirNote(n,0,3,1); definirInstrument(n,0,3,3); definirNote(n,0,4,1); definirInstrument(n,0,4,3); definirInstrument(n,0,5,-1); definirNote(n,0,6,1); definirInstrument(n,0,6,1); definirNote(n,0,7,1); definirInstrument(n,0,7,2); definirInstrument(n,0,8,-1); definirNote(n,0,9,1); definirInstrument(n,0,9,1); definirInstrument(n,0,10,-1); definirNote(n,0,11,1); definirInstrument(n,0,11,3); definirInstrument(n,0,12,-1); definirNote(n,0,13,1); definirInstrument(n,0,13,2); definirInstrument(n,0,14,-1); definirNote(n,0,15,1); definirInstrument(n,0,15,1); ajouterMotif(&liste, DEF_NBR_TMP, nbrPortees); Motif* p = liste; // Until you all shared its magic with me. definirNote(p,0,0,1); definirInstrument(p,0,0,3); definirNote(p,0,1,1); definirInstrument(p,0,1,4); definirInstrument(p,0,2,-1); definirNote(p,0,3,1); definirInstrument(p,0,3,4); definirInstrument(p,0,4,-1); definirNote(p,0,5,1); definirInstrument(p,0,5,3); definirInstrument(p,0,6,-1); definirNote(p,0,7,1); definirInstrument(p,0,7,2); definirInstrument(p,0,8,-1); definirNote(p,0,9,1); definirInstrument(p,0,9,1); definirNote(p,0,10,1); definirInstrument(p,0,10,3); definirInstrument(p,0,11,-1); definirNote(p,0,12,1); definirInstrument(p,0,12,2); definirInstrument(p,0,14,-1); ajouterMotifVirtuel(melodie,0,m); ajouterMotifVirtuel(melodie,1,n); ajouterMotifVirtuel(melodie,2,m); ajouterMotifVirtuel(melodie,3,p); } int main( int argc, char *argv[] ){ //lecture(nbrPortee, melodie); // insérer code GTK ici GtkBuilder *monBuilder; GtkWidget *maFenetre; char *str=NULL; gtk_init( &argc, &argv ); monBuilder = gtk_builder_new(); gtk_builder_add_from_file( monBuilder, "GUI/ponytrackertest.glade", NULL); gtk_builder_connect_signals( monBuilder, NULL); maFenetre = GTK_WIDGET( gtk_builder_get_object( monBuilder, "fenetreprincipale")); GtkLabel *labelNote = (GtkLabel*) gtk_builder_get_object(monBuilder,"button16"); switch (getNote(m,0,0)) { case 0 : str="Do "; break; case 1 : str="Do# "; break; case 2 : str="Re "; break; case 3 : str="Re# "; break; case 4 : str="Mi "; break; case 5 : str="Fa "; break; case 6 : str="Fa# "; break; case 7 : str="Sol "; break; case 8 : str="Sol# "; break; case 9 : str="La "; break; case 10 : str="La# "; break; case 11 : str="Si "; break; case 12 : str="Si# "; break; default : break; } switch (getOctave(m,0,0)) { case 0 : strcat(str, "1 "); break; case 1 : strcat(str, "2 "); break; case 2 : strcat(str, "3 "); break; case 3 : strcat(str, "4 "); break; case 4 : strcat(str, "5 "); break; default : break; } switch (getInstrument(m,0,0)) { case 0 : strcat(str, "1 "); break; case 1 : strcat(str, "2 "); break; case 2 : strcat(str, "3 "); break; case 3 : strcat(str, "4 "); break; case 4 : strcat(str, "5 "); break; default : break; } switch (getVolume(m,0,0)) { case 0 : strcat(str, "1 "); break; case 1 : strcat(str, "2 "); break; case 2 : strcat(str, "3 "); break; case 3 : strcat(str, "4 "); break; case 4 : strcat(str, "5 "); break; default : break; } switch (getEffet(m,0,0)) { case 0 : strcat(str, "1 "); break; case 1 : strcat(str, "2 "); break; case 2 : strcat(str, "3 "); break; case 3 : strcat(str, "4 "); break; case 4 : strcat(str, "5 "); break; default : break; } gtk_label_set_text(labelNote, str); gtk_widget_show_all (maFenetre); gtk_main(); return EXIT_SUCCESS; } void fenetreNote ( int argc, char *argv[] ) { GtkBuilder *monBuilderNote; GtkWidget *maFenetreNote; gtk_init( &argc, &argv ); monBuilderNote = gtk_builder_new(); gtk_builder_add_from_file( monBuilderNote, "GUI/ponytrackertest.glade", NULL); gtk_builder_connect_signals( monBuilderNote, NULL); maFenetreNote = GTK_WIDGET( gtk_builder_get_object( monBuilderNote, "ajoutnote")); GtkButton *button = (GtkButton*) gtk_builder_get_object(monBuilderNote, "buttonok"); g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(remplissageNote), GTK_WIDGET( gtk_builder_get_object( monBuilderNote, "ajoutnote"))); gtk_widget_show_all (maFenetreNote); } void remplissageNote (GtkWidget *widget, gpointer *data){ GtkBuilder *monBuilderNote; monBuilderNote = gtk_builder_new(); gtk_builder_add_from_file( monBuilderNote, "GUI/ponytrackertest.glade", NULL); gtk_builder_connect_signals( monBuilderNote, NULL); GtkEntry *entryNote = (GtkEntry*) gtk_builder_get_object(monBuilderNote,"choisirnote"); GtkEntry *entryOctave = (GtkEntry*) gtk_builder_get_object(monBuilderNote,"choisiroctave"); GtkEntry *entryInstrument = (GtkEntry*) gtk_builder_get_object(monBuilderNote,"choisirinstrument"); GtkEntry *entryVolume = (GtkEntry*) gtk_builder_get_object(monBuilderNote,"entryvolume"); GtkEntry *entryEffet = (GtkEntry*) gtk_builder_get_object(monBuilderNote,"entryeffet"); if (strcmp(Do,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,1); else if (strcmp(DoD,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,2); else if (strcmp(Re,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,3); else if (strcmp(ReD,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,4); else if (strcmp(Mi,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,5); else if (strcmp(Fa,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,6); else if (strcmp(FaD,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,7); else if (strcmp(Sol,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,8); else if (strcmp(SolD,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,9); else if (strcmp(La,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,10); else if (strcmp(LaD,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,11); else if (strcmp(Si,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,12); else if (strcmp(SiD,gtk_entry_get_text(entryNote))==0) definirNote(m,0,0,13); if (strcmp(N1,gtk_entry_get_text(entryOctave))==0) definirOctave(m,0,0,1); else if (strcmp(N2,gtk_entry_get_text(entryOctave))==0) definirOctave(m,0,0,2); else if (strcmp(N3,gtk_entry_get_text(entryOctave))==0) definirOctave(m,0,0,3); else if (strcmp(N4,gtk_entry_get_text(entryOctave))==0) definirOctave(m,0,0,4); else if (strcmp(N5,gtk_entry_get_text(entryOctave))==0) definirOctave(m,0,0,5); if (strcmp(N1,gtk_entry_get_text(entryInstrument))==0) definirInstrument(m,0,0,1); else if (strcmp(N2,gtk_entry_get_text(entryInstrument))==0) definirInstrument(m,0,0,2); else if (strcmp(N3,gtk_entry_get_text(entryInstrument))==0) definirInstrument(m,0,0,3); else if (strcmp(N4,gtk_entry_get_text(entryInstrument))==0) definirInstrument(m,0,0,4); else if (strcmp(N5,gtk_entry_get_text(entryInstrument))==0) definirInstrument(m,0,0,5); if (strcmp(N1,gtk_entry_get_text(entryVolume))==0) definirVolume(m,0,0,1); else if (strcmp(N2,gtk_entry_get_text(entryVolume))==0) definirVolume(m,0,0,2); else if (strcmp(N3,gtk_entry_get_text(entryVolume))==0) definirVolume(m,0,0,3); else if (strcmp(N4,gtk_entry_get_text(entryVolume))==0) definirVolume(m,0,0,4); else if (strcmp(N5,gtk_entry_get_text(entryVolume))==0) definirVolume(m,0,0,5); if (strcmp(N1,gtk_entry_get_text(entryEffet))==0) definirEffet(m,0,0,1); else if (strcmp(N2,gtk_entry_get_text(entryEffet))==0) definirEffet(m,0,0,2); else if (strcmp(N3,gtk_entry_get_text(entryEffet))==0) definirEffet(m,0,0,3); else if (strcmp(N4,gtk_entry_get_text(entryEffet))==0) definirEffet(m,0,0,4); else if (strcmp(N5,gtk_entry_get_text(entryEffet))==0) definirEffet(m,0,0,5); } 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/ponytrackertest.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/ponytrackertest.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/ponytrackertest.glade", NULL); gtk_builder_connect_signals( monBuilderMotif, NULL); maFenetreMotif = GTK_WIDGET( gtk_builder_get_object( monBuilderMotif, "ajoutmotif")); gtk_widget_show_all (maFenetreMotif); } void lancerLecture () { Motif* melodie[MAX_PATTERNS] = {NULL}; Motif* liste = NULL; int nbrPortees = 1; courant = 0; taille = 0; debut(melodie, liste, nbrPortees); lecture(nbrPortees,480,melodie); } void quitter () { gtk_main_quit(); }