//-------------------------------------------------------------- void AppCore::parameterChanged(int id, float value) { // cout << "slider id: " << ofToString(id) << " value: " << ofToString(value) << endl; switch (id) { case P_TRIGGER_THRESHOLD: reader->triggerThreshold = value; break; case P_MAX_VARIANCE: reader->maxVariance = value; break; case P_MAX_AVERAGE_WEIGHT: reader->maxAverageWeight = value; break; case P_NUM_LINES: numLines = (int) value; setNumLines(numLines); break; case P_ROOT_NOTE: rootNote = (int) value; setNotes(rootNote, mood); break; case P_ENVELOPE: setEnvelopeFactor(value); break; case P_VOLUME: volume = value; setVolume(volume); break; } }
BillboardLine::BillboardLine( Ogre::SceneManager* scene_manager, Ogre::SceneNode* parent_node ) : Object( scene_manager ) , width_( 0.1f ) , current_line_(0) , total_elements_(0) , num_lines_(1) , max_points_per_line_(100) , lines_per_chain_(0) , current_chain_(0) , elements_in_current_chain_(0) { if ( !parent_node ) { parent_node = scene_manager_->getRootSceneNode(); } scene_node_ = parent_node->createChildSceneNode(); static int count = 0; std::stringstream ss; ss << "BillboardLineMaterial" << count++; material_ = Ogre::MaterialManager::getSingleton().create( ss.str(), Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); material_->setReceiveShadows(false); material_->getTechnique(0)->setLightingEnabled(false); setNumLines(num_lines_); setMaxPointsPerLine(max_points_per_line_); }
//-------------------------------------------------------------- void AppCore::setup(const int sampleRate) { numLines = 7; toggleFrame = 1; reader = new Reader(); reader->setup(numLines); volume = 0.f; // preserve your ears ;) envelopeFactor = 0.0001f; rootNote = 48; // C3 mood = MAJOR; // setup gui ofTrueTypeFont::setGlobalDpi(72); int eventPriority = 0; CheckBox * wRegulation = new CheckBox(P_REGULATION, this, "Regulation", &font, eventPriority); wRegulation->checked = reader->regulationActive; widgets.push_back(wRegulation); CheckBox * wTorch = new CheckBox(P_USE_TORCH, this, "Torch", &font, eventPriority); wTorch->checked = false; widgets.push_back(wTorch); CheckBox * wMood = new CheckBox(P_MAJOR, this, "Major Scale", &font, eventPriority); wMood->checked = mood == MAJOR; widgets.push_back(wMood); Slider * wTriggerThreshold = new Slider(P_TRIGGER_THRESHOLD, this, "Trigger Threshold", &font, 0.f, 1.f, eventPriority); wTriggerThreshold->setValue(reader->triggerThreshold); widgets.push_back(wTriggerThreshold); Slider * wMaxVariance = new Slider(P_MAX_VARIANCE, this, "Max Variance", &font, 0.f, .4f, eventPriority); wMaxVariance->setValue(reader->maxVariance); widgets.push_back(wMaxVariance); Slider * wMaxAverageWeight = new Slider(P_MAX_AVERAGE_WEIGHT, this, "Max Average Weight", &font, 0.f, .2f, eventPriority); wMaxAverageWeight->setValue(reader->maxAverageWeight); widgets.push_back(wMaxAverageWeight); Slider * wNumLines = new Slider(P_NUM_LINES, this, "Num Lines", &font, 3, 12, eventPriority); wNumLines->setStep(1.f); wNumLines->setValue(numLines); widgets.push_back(wNumLines); Slider * wRootNote = new Slider(P_ROOT_NOTE, this, "Root Note", &font, 10, 80, eventPriority); wRootNote->setStep(1.f); wRootNote->setValue(rootNote); widgets.push_back(wRootNote); Slider * wEnvelope = new Slider(P_ENVELOPE, this, "Attack / Release", &font, 0.f, 0.0005f, eventPriority); wEnvelope->setValue(envelopeFactor); widgets.push_back(wEnvelope); Slider * wVolume = new Slider(P_VOLUME, this, "Volume", &font, 0.f, 1.f, eventPriority); wVolume->setValue(volume); widgets.push_back(wVolume); for (int i = widgets.size() - 1; i > -1; i--) widgets[i]->setActive(true); ofSetVerticalSync(true); setNumLines(numLines); }
//-------------------------------------------------------------- void AppCore::exit() { setNumLines(0); // delete synths delete reader; }