-
Notifications
You must be signed in to change notification settings - Fork 5
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
Future Adaptations to the FX Module #9
Comments
Improvements to Our Filter FunctionsChanging the VolumeOur current implementation of However, there's also the complication of audio clipping. These two Wikipedia articles describe the problem in greater detail, which may arise from the limited range of a 16-bit audio signal (the standard data type for the audio we produce in our analysis functions). How can we reconcile the user's desire to hear louder audio with the problem of clipping? Should we leave volume changes to the computer? Adding chordsThe Pitch Shifting and Time ScalingThe A more robust implementation of Note Onset DetectionOur filter functions are structured to take an audio signal, slice it into sections that represent coincident notes, and concatenate the filtered notes to create a new audio signal. Thus, these filters rely on some note onset detection functions. This paper presents a brief tutorial on note onset detection, where the section on spectral features of a signal makes use of the short-time Fourier transform (STFT). The STFT relies on Fourier Transforms, about which you can watch a general introduction here or read more in these free ebooks (the first seems to explain the math behind the DFT in great detail while the latter three seem to focus on audio applications). The Signal Processing Stack Exchange is also a great resource for learning more about the math and EE concepts behind the scenes! The above paper mentions the possibilities of using the magnitude and/or phase of STFT coefficients during "transient" regions of an audio signal to detect note onsets. The This third paper also presents some information on the subject with an excellent section on constructing peak-picking algorithms to act on the output of a note detection function (we get our dynamic threshold in Overall, we need a more robust note onset detection system to work with a wider range of input. Some of the tests in the |
Co-Authored-By: irinazoccolini <[email protected]>, Watermelanie <[email protected]>, and Ashar Farooq <[email protected]> This PR creates filter functions to modify input sound waves for greater flexibility in the audio that is produced from user input. While the filters do not work perfectly, here are the ideas behind each filter: - `apply_filter`: This is the base function where we call other filter functions for each note. - `get_notes`: This separates the audio into note slices and identifies the root note being played. - `change_volume`: This changes the amplitude of audio samples. - `stretch_audio`: This changes the duration of the audio. - `change_pitch`: This changes the pitch of the notes in the audio. - `add_chords`: This builds major or minor triads upon each note in the audio. There are some helper functions for some of these filters as well as a bare `overlap_notes` filter. The idea was to take an audio signal and overlap notes in the audio by a certain factor, but this still needs to be implemented. See Issue #9 for more details on improvements.
The purpose of this module is to create filter functions to modify input sound waves for greater flexibility in the audio that is produced from user input.
Currently some basic filter functions that are implemented include
apply_filter
,get_notes
,change_volume
,stretch_audio
,change_pitch
, andadd_chords
.apply_filter
: This is the base function where we call other filter functions for each note.get_notes
: This gets all the note slices from an input signal using note onset detection method. Future improvements include cleaning up visual plots (perhaps adding an optional argument for displaying graphs).change_volume
: This changes the amplitude of audio samples. Future improvements include cleaning up clipping of audio waves and creating a more efficient/enhanced implementation.stretch_audio
: This changes the duration of audio samples. Future improvements could include more robust time stretching and pitch scaling methods, such as implementing a phase vocoder. These slides give a high-level overview of the problem.change_pitch
: This changes the pitch of audio samples. Makes use ofstretch_audio
.add_chords
: This adds notes to audio samples to create chords. Future improvements include adding a variety of chords.overlap_notes
: The idea of this function is to overlap notes by a factor. This needs to be freshly implemented.Basic tests for most of these functions have been implemented in
tests.py
. There needs to be more comprehensive tests created.The text was updated successfully, but these errors were encountered: