/**
* \mainpage CSC3502 : PonyTracker
*
* Les fonctionnalités de cette application sont les suivantes :
*
* - fonction 1
* - fonction 2
* - fonction 3
* - fonction 4
*
*
* @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();
}