diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6d272b757c..4265f330c4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -952,7 +952,15 @@ void Application::mousePressEvent(QMouseEvent* event) { _hoverVoxelOriginalColor[1] = _hoverVoxel.green; _hoverVoxelOriginalColor[2] = _hoverVoxel.blue; _hoverVoxelOriginalColor[3] = 1; - _audio.startCollisionSound(1.0, HOVER_VOXEL_FREQUENCY * _hoverVoxel.s * TREE_SCALE, 0.0, HOVER_VOXEL_DECAY); + const float RED_CLICK_FREQUENCY = 1000.f; + const float GREEN_CLICK_FREQUENCY = 1250.f; + const float BLUE_CLICK_FREQUENCY = 1330.f; + const float MIDDLE_A_FREQUENCY = 440.f; + float frequency = MIDDLE_A_FREQUENCY + ((float)_hoverVoxel.red / 255.f * RED_CLICK_FREQUENCY + + (float)_hoverVoxel.green / 255.f * GREEN_CLICK_FREQUENCY + + (float)_hoverVoxel.blue / 255.f * BLUE_CLICK_FREQUENCY) / 3.f; + + _audio.startCollisionSound(1.0, frequency, 0.0, HOVER_VOXEL_DECAY); _isHoverVoxelSounding = true; } diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 3e011f5e05..add56df80c 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -704,7 +704,7 @@ void Audio::addProceduralSounds(int16_t* inputBuffer, float speed = glm::length(_lastVelocity); float volume = VOLUME_BASELINE * (1.f - speed / MAX_AUDIBLE_VELOCITY); - int sample; + float sample; // // Travelling noise @@ -724,13 +724,16 @@ void Audio::addProceduralSounds(int16_t* inputBuffer, if (_collisionSoundMagnitude > COLLISION_SOUND_CUTOFF_LEVEL) { for (int i = 0; i < numSamples; i++) { t = (float) _proceduralEffectSample + (float) i; + sample = sinf(t * _collisionSoundFrequency) + sinf(t * _collisionSoundFrequency / DOWN_TWO_OCTAVES) + sinf(t * _collisionSoundFrequency / DOWN_FOUR_OCTAVES * UP_MAJOR_FIFTH); sample *= _collisionSoundMagnitude * COLLISION_SOUND_MAX_VOLUME; - inputBuffer[i] += sample; - outputLeft[i] += sample; - outputRight[i] += sample; + + + inputBuffer[i] += (int) sample; + outputLeft[i] += (int) sample; + outputRight[i] += (int) sample; _collisionSoundMagnitude *= _collisionSoundDuration; } }