int main(int argc,char *argv[]){ int i=0; srand(time(NULL)); net mlpnet; int layer_neurons[]={2,10,5,1}; char sigmods[]={'l','l','l','l'}; init_net(&mlpnet,4,layer_neurons,sigmods); float *inputs=(float*)malloc(sizeof(float)*2); sample *samples; int num_lines=count_lines(argv[1]); samples=(sample*)malloc(sizeof(sample)*num_lines); read_samples(argv[1],samples,num_lines); train(&mlpnet,num_lines,samples,EPOCHS); free_samples(samples,num_lines); //================================================== num_lines=count_lines(argv[2]); sample *test_samples=(sample*)malloc(sizeof(sample)*num_lines); read_samples(argv[2],test_samples,num_lines); float *scores=(float*)malloc(sizeof(float)*num_lines); predict(&mlpnet,num_lines,test_samples,scores); free_samples(test_samples,num_lines); free_net(&mlpnet,4,layer_neurons); char scorefile[100]; sprintf(scorefile,"%s.score",argv[1]); FILE *score=fopen(scorefile,"w"); for(i=0;i<num_lines;i++) { fprintf(score,"%f\n",scores[i]); } fclose(score); return 0; }
static void* load_thread(void* arg) { DrMr* drmr = (DrMr*)arg; drmr_sample *loaded_samples,*old_samples; int loaded_count, old_scount; for(;;) { pthread_mutex_lock(&drmr->load_mutex); pthread_cond_wait(&drmr->load_cond, &drmr->load_mutex); pthread_mutex_unlock(&drmr->load_mutex); int request = (int)floorf(*(drmr->kitReq)); if (request == drmr->curKit) continue; old_samples = drmr->samples; old_scount = drmr->num_samples; if (request < 0 || request >= drmr->kits->num_kits) { pthread_mutex_lock(&drmr->load_mutex); drmr->num_samples = 0; drmr->samples = NULL; pthread_mutex_unlock(&drmr->load_mutex); } else { printf("loading kit: %i\n",request); loaded_samples = load_hydrogen_kit(drmr->kits->kits[request].path,drmr->rate,&loaded_count); // just lock for the critical moment when we swap in the new kit pthread_mutex_lock(&drmr->load_mutex); drmr->samples = loaded_samples; drmr->num_samples = loaded_count; pthread_mutex_unlock(&drmr->load_mutex); } if (old_scount > 0) free_samples(old_samples,old_scount); drmr->curKit = request; } return 0; }
/*! \brief Initialize sound system * \author JB * \date ???????? * \remark On entry is_sound=1 to initialise, * on exit is_sound=0 (failure) or 2 (success), * is_sound=2 to shutdown, * on exit is_sound=0 * \remark 20020914 - 05:28 RB : Updated * 20020922 - ML : updated to use DUMB * 20020922 - ML : Changed to only reserving 8 voices. (32 seemed over-kill?) */ void sound_init (void) { if (!sound_avail) { is_sound = 0; return; } switch (is_sound) { case 1: /* set_volume_per_voice (2); */ init_music (); is_sound = load_samples ()? 0 : 2; /* load the wav files */ break; case 2: /* TT: We forgot to add this line, causing phantom music to loop */ stop_music (); free_samples (); is_sound = 0; break; } }