void makeRandomFasta (const char * id, const char * desc, const struct aminoacids * genelist, int count, int n) { int todo = n; int i, m; fprintf (outStream, ">%s %s\n", id, desc); for (; todo > 0; todo -= LINE_LENGTH) { char pick[LINE_LENGTH+1]; if (todo < LINE_LENGTH) m = todo; else m = LINE_LENGTH; for (i=0; i < m; i++) pick[i] = selectRandom (genelist, count); pick[m] = '\0'; fputs (pick, outStream); } }
void makeRandomFasta (char * id, char * desc, struct aminoacids * genelist, int count, int n) { STATIC int i, m; #ifdef STATIC static int todo; static char pick[LINE_LENGTH+1]; todo = n; #else int todo = n; char pick[LINE_LENGTH+1]; #endif PRINTF3(">%s %s\n", id, desc); for (; todo > 0; todo -= LINE_LENGTH) { if (todo < LINE_LENGTH) m = todo; else m = LINE_LENGTH; for (i=0; i < m; i++) pick[i] = selectRandom(genelist, count); pick[m] = '\0'; PUTS(pick); } }
void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode) { switch( event ) { case PROJECTM_KEYDOWN: switch( keycode ) { case PROJECTM_K_UP: beatDetect->beat_sensitivity += 0.25; if (beatDetect->beat_sensitivity > 5.0) beatDetect->beat_sensitivity = 5.0; break; case PROJECTM_K_DOWN: beatDetect->beat_sensitivity -= 0.25; if (beatDetect->beat_sensitivity < 0) beatDetect->beat_sensitivity = 0; break; case PROJECTM_K_h: renderer->showhelp = !renderer->showhelp; renderer->showstats= false; renderer->showfps=false; case PROJECTM_K_F1: renderer->showhelp = !renderer->showhelp; renderer->showstats=false; renderer->showfps=false; break; case PROJECTM_K_y: this->setShuffleEnabled(!this->isShuffleEnabled()); break; case PROJECTM_K_F5: if (!renderer->showhelp) renderer->showfps = !renderer->showfps; break; case PROJECTM_K_F4: if (!renderer->showhelp) renderer->showstats = !renderer->showstats; break; case PROJECTM_K_F3: { renderer->showpreset = !renderer->showpreset; break; } case PROJECTM_K_F2: renderer->showtitle = !renderer->showtitle; break; #ifndef MACOS case PROJECTM_K_F9: #else case PROJECTM_K_F8: #endif renderer->studio = !renderer->studio; break; case PROJECTM_K_ESCAPE: { // exit( 1 ); break; } case PROJECTM_K_f: break; case PROJECTM_K_a: renderer->correction = !renderer->correction; break; case PROJECTM_K_b: break; case PROJECTM_K_n: selectNext(true); break; case PROJECTM_K_N: selectNext(false); break; case PROJECTM_K_r: selectRandom(true); break; case PROJECTM_K_R: selectRandom(false); break; case PROJECTM_K_p: selectPrevious(true); break; case PROJECTM_K_P: selectPrevious(false); break; case PROJECTM_K_l: renderer->noSwitch=!renderer->noSwitch; break; case PROJECTM_K_s: renderer->studio = !renderer->studio; case PROJECTM_K_i: break; case PROJECTM_K_z: break; case PROJECTM_K_0: // nWaveMode=0; break; case PROJECTM_K_6: // nWaveMode=6; break; case PROJECTM_K_7: // nWaveMode=7; break; case PROJECTM_K_m: break; case PROJECTM_K_t: break; case PROJECTM_K_EQUALS: case PROJECTM_K_PLUS: unsigned int index; if (selectedPresetIndex(index)) { const int oldRating = getPresetRating(index, HARD_CUT_RATING_TYPE); if (oldRating >= 6) break; const int rating = oldRating + 1; changePresetRating(index, rating, HARD_CUT_RATING_TYPE); } break; case PROJECTM_K_MINUS: if (selectedPresetIndex(index)) { const int oldRating = getPresetRating(index, HARD_CUT_RATING_TYPE); if (oldRating <= 1) break; const int rating = oldRating - 1; changePresetRating(index, rating, HARD_CUT_RATING_TYPE); } break; default: break; } default: break; } }
void projectM::renderFrame() { #ifdef SYNC_PRESET_SWITCHES pthread_mutex_lock(&preset_mutex); #endif #ifdef DEBUG char fname[1024]; FILE *f = NULL; int index = 0; int x, y; #endif timeKeeper->UpdateTimers(); /* if (timeKeeper->IsSmoothing()) { printf("Smoothing A:%f, B:%f, S:%f\n", timeKeeper->PresetProgressA(), timeKeeper->PresetProgressB(), timeKeeper->SmoothRatio()); } else { printf(" A:%f\n", timeKeeper->PresetProgressA()); }*/ mspf= ( int ) ( 1000.0/ ( float ) settings().fps ); //milliseconds per frame /// @bug who is responsible for updating this now?" pipelineContext().time = timeKeeper->GetRunningTime(); pipelineContext().frame = timeKeeper->PresetFrameA(); pipelineContext().progress = timeKeeper->PresetProgressA(); //m_activePreset->Render(*beatDetect, pipelineContext()); beatDetect->detectFromSamples(); //m_activePreset->evaluateFrame(); //if the preset isn't locked and there are more presets if ( renderer->noSwitch==false && !m_presetChooser->empty() ) { //if preset is done and we're not already switching if ( timeKeeper->PresetProgressA()>=1.0 && !timeKeeper->IsSmoothing()) { if (settings().shuffleEnabled) selectRandom(false); else selectNext(false); } else if ((beatDetect->vol-beatDetect->vol_old>beatDetect->beat_sensitivity ) && timeKeeper->CanHardCut()) { // printf("Hard Cut\n"); if (settings().shuffleEnabled) selectRandom(true); else selectNext(true); } } if ( timeKeeper->IsSmoothing() && timeKeeper->SmoothRatio() <= 1.0 && !m_presetChooser->empty() ) { // printf("start thread\n"); assert ( m_activePreset2.get() ); #ifdef USE_THREADS pthread_cond_signal(&condition); pthread_mutex_unlock( &mutex ); #endif m_activePreset->Render(*beatDetect, pipelineContext()); #ifdef USE_THREADS pthread_mutex_lock( &mutex ); #else evaluateSecondPreset(); #endif Pipeline pipeline; pipeline.setStaticPerPixel(settings().meshX, settings().meshY); assert(_matcher); PipelineMerger::mergePipelines( m_activePreset->pipeline(), m_activePreset2->pipeline(), pipeline, _matcher->matchResults(), *_merger, timeKeeper->SmoothRatio()); renderer->RenderFrame(pipeline, pipelineContext()); pipeline.drawables.clear(); /* while (!pipeline.drawables.empty()) { delete(pipeline.drawables.back()); pipeline.drawables.pop_back(); } */ } else { if ( timeKeeper->IsSmoothing() && timeKeeper->SmoothRatio() > 1.0 ) { //printf("End Smooth\n"); m_activePreset = m_activePreset2; timeKeeper->EndSmoothing(); } //printf("Normal\n"); m_activePreset->Render(*beatDetect, pipelineContext()); renderer->RenderFrame (m_activePreset->pipeline(), pipelineContext()); } // std::cout<< m_activePreset->absoluteFilePath()<<std::endl; // renderer->presetName = m_activePreset->absoluteFilePath(); count++; #ifndef WIN32 /** Frame-rate limiter */ /** Compute once per preset */ if ( this->count%100==0 ) { this->renderer->realfps=100.0/ ( ( getTicks ( &timeKeeper->startTime )-this->fpsstart ) /1000 ); this->fpsstart=getTicks ( &timeKeeper->startTime ); } int timediff = getTicks ( &timeKeeper->startTime )-this->timestart; if ( timediff < this->mspf ) { // printf("%s:",this->mspf-timediff); int sleepTime = ( unsigned int ) ( this->mspf-timediff ) * 1000; // DWRITE ( "usleep: %d\n", sleepTime ); if ( sleepTime > 0 && sleepTime < 100000 ) { if ( usleep ( sleepTime ) != 0 ) {}} } this->timestart=getTicks ( &timeKeeper->startTime ); #endif /** !WIN32 */ #ifdef SYNC_PRESET_SWITCHES pthread_mutex_unlock(&preset_mutex); #endif }
Pipeline * projectM::renderFrameOnlyPass1(Pipeline *pPipeline) /*pPipeline is a pointer to a Pipeline for use in pass 2. returns the pointer if it was used, else returns NULL */ { #ifdef SYNC_PRESET_SWITCHES pthread_mutex_lock(&preset_mutex); #endif #ifdef DEBUG char fname[1024]; FILE *f = NULL; int index = 0; int x, y; #endif timeKeeper->UpdateTimers(); /* if (timeKeeper->IsSmoothing()) { printf("Smoothing A:%f, B:%f, S:%f\n", timeKeeper->PresetProgressA(), timeKeeper->PresetProgressB(), timeKeeper->SmoothRatio()); } else { printf(" A:%f\n", timeKeeper->PresetProgressA()); }*/ mspf= ( int ) ( 1000.0/ ( float ) settings().fps ); //milliseconds per frame /// @bug who is responsible for updating this now?" pipelineContext().time = timeKeeper->GetRunningTime(); pipelineContext().presetStartTime = timeKeeper->PresetTimeA(); pipelineContext().frame = timeKeeper->PresetFrameA(); pipelineContext().progress = timeKeeper->PresetProgressA(); beatDetect->detectFromSamples(); //m_activePreset->evaluateFrame(); //if the preset isn't locked and there are more presets if ( renderer->noSwitch==false && !m_presetChooser->empty() ) { //if preset is done and we're not already switching if ( timeKeeper->PresetProgressA()>=1.0 && !timeKeeper->IsSmoothing()) { if (settings().shuffleEnabled) selectRandom(false); else selectNext(false); } else if ((beatDetect->vol-beatDetect->vol_old>beatDetect->beat_sensitivity ) && timeKeeper->CanHardCut()) { // printf("Hard Cut\n"); if (settings().shuffleEnabled) selectRandom(true); else selectNext(true); } } if ( timeKeeper->IsSmoothing() && timeKeeper->SmoothRatio() <= 1.0 && !m_presetChooser->empty() ) { // printf("start thread\n"); assert ( m_activePreset2.get() ); #ifdef USE_THREADS worker_sync.wake_up_bg(); #endif m_activePreset->Render(*beatDetect, pipelineContext()); #ifdef USE_THREADS worker_sync.wait_for_bg_to_finish(); #else evaluateSecondPreset(); #endif pPipeline->setStaticPerPixel(settings().meshX, settings().meshY); assert(_matcher); PipelineMerger::mergePipelines( m_activePreset->pipeline(), m_activePreset2->pipeline(), *pPipeline, _matcher->matchResults(), *_merger, timeKeeper->SmoothRatio()); renderer->RenderFrameOnlyPass1(*pPipeline, pipelineContext()); return pPipeline; } else { if ( timeKeeper->IsSmoothing() && timeKeeper->SmoothRatio() > 1.0 ) { //printf("End Smooth\n"); m_activePreset = std::move(m_activePreset2); timeKeeper->EndSmoothing(); } //printf("Normal\n"); m_activePreset->Render(*beatDetect, pipelineContext()); renderer->RenderFrameOnlyPass1 (m_activePreset->pipeline(), pipelineContext()); return NULL; // indicating no transition } // std::cout<< m_activePreset->absoluteFilePath()<<std::endl; // renderer->presetName = m_activePreset->absoluteFilePath(); }
void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode) { switch( event ) { case PROJECTM_KEYDOWN: switch( keycode ) { case PROJECTM_K_UP: beatDetect->beat_sensitivity += 0.25; if (beatDetect->beat_sensitivity > 5.0) beatDetect->beat_sensitivity = 5.0; break; case PROJECTM_K_DOWN: beatDetect->beat_sensitivity -= 0.25; if (beatDetect->beat_sensitivity < 0) beatDetect->beat_sensitivity = 0; break; case PROJECTM_K_h: renderer->showhelp = !renderer->showhelp; renderer->showstats= false; renderer->showfps=false; case PROJECTM_K_F1: renderer->showhelp = !renderer->showhelp; renderer->showstats=false; renderer->showfps=false; break; case PROJECTM_K_y: this->setShuffleEnabled(!this->isShuffleEnabled()); break; case PROJECTM_K_F5: if (!renderer->showhelp) renderer->showfps = !renderer->showfps; break; case PROJECTM_K_F4: if (!renderer->showhelp) renderer->showstats = !renderer->showstats; break; case PROJECTM_K_F3: { renderer->showpreset = !renderer->showpreset; break; } case PROJECTM_K_F2: renderer->showtitle = !renderer->showtitle; break; #ifndef MACOS case PROJECTM_K_F9: #else case PROJECTM_K_F8: #endif renderer->studio = !renderer->studio; break; case PROJECTM_K_ESCAPE: { // exit( 1 ); break; } case PROJECTM_K_f: break; case PROJECTM_K_a: renderer->correction = !renderer->correction; break; case PROJECTM_K_b: break; case PROJECTM_K_n: selectNext(true); break; case PROJECTM_K_N: selectNext(false); break; case PROJECTM_K_r: selectRandom(true); break; case PROJECTM_K_R: selectRandom(false); break; case PROJECTM_K_p: selectPrevious(true); break; case PROJECTM_K_P: selectPrevious(false); break; case PROJECTM_K_l: renderer->noSwitch=!renderer->noSwitch; break; case PROJECTM_K_s: renderer->studio = !renderer->studio; case PROJECTM_K_i: break; case PROJECTM_K_z: break; case PROJECTM_K_0: // nWaveMode=0; break; case PROJECTM_K_6: // nWaveMode=6; break; case PROJECTM_K_7: // nWaveMode=7; break; case PROJECTM_K_m: break; case PROJECTM_K_t: break; default: break; } default: break; } }