New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
No pop sounds #523
Open
RomanLut
wants to merge
14
commits into
earlephilhower:master
Choose a base branch
from
RomanLut:no_pop_sounds
base: master
Could not load branches
Branch not found: {{ refName }}
Could not load tags
Nothing to show
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
No pop sounds #523
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
No dac documentation update for esp32
implemented AudioGeneratorMP3 and AudioGeneratorWAV waiting until AudioOutput output buffered samples
implemented AudioOutputI2S finishing buffered samples
allow padding number of buffers to AudioOutputNoDAC constructor
Hi Roman, I see that your pull requests are open for almost 2 years. I need to fix the pop's as well for a small project. Thanks in advance. Kind regards, Martin |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Audio wave is centered at the middle level voltage. To output silence, DAC has to output middle voltage (0x8000 sample for 16-bit DAC). PDM or PWM have to output pulses with 50% fill. When sound is not played, pin outputs zero voltage. Thus playback start and stop can cause pop (click) sounds due to instant voltage change from zero to middle (3.3V/2 average). It might not be a problem with external DAC which continue generating middle voltage when I2S is stopped. There is a problem with internal DAC, PDM on ESP32 and software Delta-sigma. Even if we let I2S to run continuously (which is waste of resources), there would be clicks on each sampling rate adjustments.
To remove pop sounds, AudioGeneratorI2S and AudioGeneratorI2SNoDac can ramp voltage level from zero voltage to actial sound amplitude on playback start and opposite on stop.
Attached archive contains two sounds with and without clicks.
There is no ramp by default.
Ramp should be enabled with call: AudioOutputI2SNoDAC->SetRamp(100);
no_pop_sound.zip
(there is a digital noise from Sigma-delta 32).
Implementation:
Implementation contains and depends on my other pull request,s especially:
#520
On sound start, ramp will start with sound start. More precisely, ramp starts each time sampling rate is set,because sampling rate is changed few samples after mp3 playback start(!). Ideally we should ramp down when sound ends. As we do not know when AutdioGenerator will stop feeding AudioOutput, we have no other option to add a silence period after playback and ramp it down.
Feature is implemented for AudioGeneratorMP3 and AudioGeneratorWAV,sorry.
Other generators have to be modified to support playback of bufered samples:
#520