示例#1
0
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;
}
示例#2
0
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_);
}
示例#4
0
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_);
  }
}