Tiled2DGraphics::Level* Tiled2DGraphics::addLevel(Tiled2DGraphics::Level* level) { float zoom_level = level->getZoomLevel(); _maxZoomLevel = std::max(_maxZoomLevel, zoom_level); Levels::iterator itr = _levels.find(zoom_level); if (itr == _levels.end()) { _levels[zoom_level] = level; level->setParent(this); addChild(level); unsigned int k(0); unsigned num_tiles(0); for(Levels::iterator i= _levels.begin(); i != _levels.end(); ++i){ i->second->setLevelId(k++); i->second->setNumTilesOfLowerLevels(num_tiles); num_tiles += i->second->getNumTiles(); } updateLevels(); // std::cout << " adding level id " << level->getLevelId() << " for zoom " << level->getZoomLevel() << " (" << level->getNumXTiles() << " x " << level->getNumYTiles() << ")" << std::endl; return level; } return itr->second; }
void Tiled2DGraphics::setZoomLevel(float zoom) { float new_zoom_level = osg::clampTo(zoom, _minZoomLevel, _maxZoomLevel); if (new_zoom_level != _currentZoomLevel) { _currentZoomLevel = new_zoom_level; updateLevels(); } }
bool SynthController::Init() { // Initialise members hwParameters_.gate_ = false; hwParameters_.cutoff_ = 0x00; hwParameters_.pitch_ = 0; attack_ = 5; decay_ = 600; sustain_ = FP_ONE; release_ = 90; cutoff_ = FP_ONE; cutoffEnvMod_ = FP_ZERO; gain_ = FP_ONE; noiseMix_ = FP_ZERO; updateLevels(); noteBend_ = 0; analogPitchFineTune_ =0; enableAnalog_ = true; envelope_.Setup(attack_, decay_, sustain_, release_); // Initialise hardware Hardware::Configuration configuration; configuration.audioRate_ = 44100; configuration.paramRate_ = 800; configuration.audioCB_ = onSampleUpdateCB; configuration.paramCB_ = onParamUpdateCB; bool status = Hardware::SInstance().Init(configuration); // Initialise engine return oscillator_.Init(configuration.audioRate_); }
void Tiled2DGraphics::setEnabledFlag(bool f) { if (_enabled == f) return; std::cout << "enable: " << this << ": " << f << std::endl; _enabled = f; if (_enabled) { updateLevels(); updateVisibility(); } else { for(Level::TilesList::iterator i = _visibleTiles.begin(); i != _visibleTiles.end(); ++i) { _tilesToHide.push_back(*i); } _visibleTiles.clear(); hideOrphanedTiles(); } }
void SynthController::SetParameterValue(const SynthController::Parameter& parameter, const fixed& value) { bool envSetup = false; switch(parameter) { case WAVE_SELECT: oscillator_.SetShape(value); break; case WAVE_LOOP_START: oscillator_.SetLoopStart(value); break; case WAVE_LOOP_END: oscillator_.SetLoopWidth(value); break; case WAVE_OCTAVE: { int32_t octave = 0; if (value < fl2fp(0.33f)) { octave = -1; } if (value > fl2fp(0.66f)) { octave = 1; } oscillator_.SetOctave(octave); break; } case ANALOG_OSC_ON: enableAnalog_ = value > fl2fp(0.5f); break; case ANALOG_PITCH_FINE_TUNE: analogPitchFineTune_ = fp2fl(value)*256 - 128 ; break; case PITCH_GLIDE: { const fixed GLIDE_MULTIPLIER = fl2fp(0.4f); fixed glideFactor = (value != 0 ) ? fp_sub(GLIDE_MULTIPLIER, fp_mul(value, GLIDE_MULTIPLIER)) : SET_GLIDE_OFF; anaPitchControl_.SetGlide(glideFactor); digiPitchControl_.SetGlide(glideFactor); break; } case NOISE_MIX: noiseMix_ = value; updateLevels(); break; case KEYBOARD_MODE: { NoteControl::Mode mode = (NoteControl::Mode)int(fp2fl(value)*NoteControl::LAST*0.999f); noteControl_.SetMode(mode); break; } case ENV_ATTACK: attack_ = MAX_ENVELOPE_TICK*fp2fl(value); envSetup = true; break; case ENV_DECAY: { fixed scaledDecay = fp_add(value, ENVELOPE_SCALE); decay_ = MAX_ENVELOPE_TICK*fp2fl(scaledDecay); envSetup = true; } break; case ENV_SUSTAIN: { fixed scaledSustain = fp_add(value, ENVELOPE_SCALE); if (scaledSustain > FP_ONE) { scaledSustain = FP_ONE; } sustain_ = scaledSustain; envSetup = true; } break; case ENV_RELEASE: release_ = MAX_ENVELOPE_TICK*fp2fl(value); envSetup = true; break; case VCA_ENV_GATER: envelope_.SetScaler(value); break; case VCF_ENV_MOD: cutoffEnvMod_ = value; break; case AMP_GAIN: gain_ = value; updateLevels(); break; } if (envSetup) { envelope_.Setup(attack_, decay_, sustain_, release_); } }