/*--------------------------------------------------------------------------------*/ AudioObjectParameters& AudioObjectParameters::Modify(const Modifier& modifier, const ADMAudioObject *object) { if (modifier.rotation.IsSet()) { SetPosition(GetPosition() * modifier.rotation.Get()); if (IsMinPositionSet()) SetMinPosition(GetMinPosition() * modifier.rotation.Get()); if (IsMaxPositionSet()) SetMaxPosition(GetMaxPosition() * modifier.rotation.Get()); Position size(GetWidth(), GetDepth(), GetHeight()); size *= modifier.rotation.Get(); SetWidth(static_cast<float>(size.pos.x)); SetDepth(static_cast<float>(size.pos.y)); SetHeight(static_cast<float>(size.pos.z)); } if (modifier.position.IsSet()) SetPosition(GetPosition() + modifier.position.Get()); if (modifier.scale.IsSet()) { SetPosition(GetPosition() * modifier.scale.Get()); if (IsMinPositionSet()) SetMinPosition(GetMinPosition() * modifier.scale.Get()); if (IsMaxPositionSet()) SetMaxPosition(GetMaxPosition() * modifier.scale.Get()); Position size(GetWidth(), GetDepth(), GetHeight()); size *= modifier.scale.Get(); SetWidth(static_cast<float>(size.pos.x)); SetDepth(static_cast<float>(size.pos.y)); SetHeight(static_cast<float>(size.pos.z)); } if (modifier.gain.IsSet()) SetGain(GetGain() * modifier.gain.Get()); // apply specific modifications (from derived classes) modifier.Modify(*this, object); return *this; }
////----------------------- /// MultiEffect::ChangeGain //--------------------------- // Analogous to CImmEffect::ChangeGain. Changes gain of all component effects. // Returns false if any effect returns false. Attempts to change gain of all effects // regardless of individual return values. // qboolean MultiEffect::ChangeGain( DWORD Gain ) { DWORD CurrentGain; qboolean result = GetGain( CurrentGain ); if ( result ) { DWORD RelativeGain = Gain - CurrentGain; for ( int i = 0, max = GetNumberOfContainedEffects() ; i < max ; i++ ) { CImmEffect* pIE = GetContainedEffect( i ); result &= qboolean ( pIE && pIE->GetGain( CurrentGain ) && pIE->ChangeGain( CurrentGain + RelativeGain ) ); } result &= qboolean( max > 0 ); } return result; }
void HDRPage::UpdateHDRWidgets() { Error error; PropertyInfo propGain; propGain.type = GAIN; error = m_pCamera->GetPropertyInfo( &propGain ); if ( error != PGRERROR_OK ) { // Error ShowErrorMessageDialog( "Error reading gain property", error ); } PropertyInfo propShutter; propShutter.type = SHUTTER; error = m_pCamera->GetPropertyInfo( &propShutter ); if ( error != PGRERROR_OK ) { // Error ShowErrorMessageDialog( "Error reading gain property information", error ); } for ( int i=0; i < 4; i++ ) { SetGainRange( i, propGain.min, propGain.max ); SetShutterRange( i, propShutter.min, propShutter.max ); unsigned int gain = GetGain( i ); unsigned int shutter = GetShutter( i ); m_hdrImageArray[i].pAdjustmentGain->set_value( gain ); m_hdrImageArray[i].pAdjustmentShutter->set_value( shutter ); } }
float Source::GetGain() const { #ifdef HAS_AUDIO_SOURCE return impl->GetGain(); #else throw System::PunkException(L"Audio source is not available"); #endif }
bool TrLadGain::GainDBToLinear(float* offset) { if (!offset) return false; int index = 0; offset[index++] = (float) GetHwId(); for (int iva=0; iva<16; iva++) offset[index++] = (float) GetGain(iva); for (int iva=0; iva<16; iva++) offset[index++] = (float) GetOffset(iva); for (int iva=0; iva<16; iva++) offset[index++] = (float) GetSysErr(iva); for (int iva=0; iva<16; iva++) offset[index++] = (float) GetStatus(iva); return true; }
void TrLadGain::Info(int verbosity) { printf(" %10s %3d","HwId: ",GetHwId()); if (verbosity>0) printf("\n"); printf(" %10s ","Gain: "); for (int iva=0; iva<16; iva++) printf("%8.4f ",GetGain(iva)); printf("\n"); if (verbosity>0) { printf(" %10s ","Offset: "); for (int iva=0; iva<16; iva++) printf("%8.4f ",GetOffset(iva)); printf("\n"); printf(" %10s ","SysErr: "); for (int iva=0; iva<16; iva++) printf("%8.4f ",GetSysErr(iva)); printf("\n"); printf(" %10s ","Status: "); for (int iva=0; iva<16; iva++) printf("%8X ",GetStatus(iva)); printf("\n"); } }
//Decrements general volume void SoundManager::VolumeDown(float amount) { //Reduce volume in "LISTENER" //Local variables float CurrentGain; //Value to decrement CurrentGain = GetGain(); //Decrement CurrentGain -= amount; //Limits if (CurrentGain < 0) { CurrentGain = 0; } //Set gain decremented SetGain(CurrentGain); }
//Increments general volume void SoundManager::VolumeUp(float amount) { //Increment volume in "LISTENER" //Local variables float CurrentGain; //Value to increment CurrentGain = GetGain(); //Increment CurrentGain += amount; //Limits if (CurrentGain > GAINLIMIT) { CurrentGain = GAINLIMIT; } //Set gain incremented SetGain(CurrentGain); }
Track *NoteTrack::Duplicate() { NoteTrack *duplicate = new NoteTrack(mDirManager); duplicate->Init(*this); // Duplicate on NoteTrack moves data from mSeq to mSerializationBuffer // and from mSerializationBuffer to mSeq on alternate calls. Duplicate // to the undo stack and Duplicate back to the project should result // in serialized blobs on the undo stack and traversable data in the // project object. if (mSeq) { SonifyBeginSerialize(); assert(!mSerializationBuffer); // serialize from this to duplicate's mSerializationBuffer mSeq->serialize((void**)&duplicate->mSerializationBuffer, &duplicate->mSerializationLength); SonifyEndSerialize(); } else if (mSerializationBuffer) { SonifyBeginUnserialize(); assert(!mSeq); Alg_track_ptr alg_track = Alg_seq::unserialize(mSerializationBuffer, mSerializationLength); assert(alg_track->get_type() == 's'); duplicate->mSeq = (Alg_seq_ptr) alg_track; SonifyEndUnserialize(); } else assert(false); // bug if neither mSeq nor mSerializationBuffer // copy some other fields here duplicate->SetBottomNote(mBottomNote); duplicate->SetPitchHeight(mPitchHeight); duplicate->mLastMidiPosition = mLastMidiPosition; duplicate->mVisibleChannels = mVisibleChannels; duplicate->SetOffset(GetOffset()); #ifdef EXPERIMENTAL_MIDI_OUT duplicate->SetGain(GetGain()); #endif return duplicate; }
float nuiSound::GetGainDb() const { float Db = GainToDB(GetGain()); return Db; }
bool TrLadGain::IsDefault() { for (int iva=0; iva<16; iva++) if ( (GetGain(iva)!=1.)||(GetOffset(iva)!=0.)||(GetSysErr(iva)!=0.)||(GetStatus(iva)!=0) ) return false; return true; }
float TrLadGain::ApplyGain(float adc, int iva) { if ( (iva<0)||(iva>15) ) return 0; return adc/GetGain(iva) - GetOffset(iva); }
float TrLadGain::GetGainCorrected(float adc, int iva) { if ( (iva<0)||(iva>15) ) return 0; return (adc + GetOffset(iva))*GetGain(iva); }
void TrLadGain::Dump(int iva) { if ( (iva<0)||(iva>15) ) return; printf("%03d %2d %8.4f %8.4f %8.4f %8d\n",GetHwId(),iva,GetGain(iva),GetOffset(iva),GetSysErr(iva),GetStatus(iva)); }