Vocal synthesis using sine

From Online Sequencer Wiki
Revision as of 19:51, 13 April 2023 by Liam (talk | contribs) (Add a section about my new FFT tool)
Jump to navigation Jump to search

One of the key limitations of Online Sequencer is the inability to include audio from any outside source. One way to get around this is by using a script which reconstructs any sound using 8 Bit Sine. The results often have enough fidelity to discern lyrics, or the timbre of an instrument, depending on which FFT algorithm is used. This method creates lots of notes, and requires a fast computer to both create and play back these sequences. Simpler sounds work best, like someone talking, or a clear sound effect. More complex and busy sounds like a whole song, with many parts and layers, usually don't work as well, but can still produce usable results.

Liam's FFT

The easiest way to do FFT is using Liam's FFT tool. Just upload a WAV file, choose a preset mode, and click GO. Then you can either copy the notes and paste them into a sequence, or download the sequence file and drag/drop it into OS. There are lots of advanced options to play with to optimize the output. This tool is based on the older fft.py script, which is now deprecated.

Jacob's FFT

Below is a script that can be used by copying and pasting it into the console on the sequencer. Press F12 to access the console, then click in the box. Once you see a blinking cursor, paste the script in. It will ask you to upload an audio file. MP3, WAV, and OGG are accepted. This script should function the same regardless of the level of the signal in your file, and with mono and stereo files (final output will be mono). It will generate 8 Bit Sine notes corresponding to the frequencies present in your file, with time resolution being equal to 1/16 grid at whatever tempo you have set. Less notes will be placed if a slower tempo is used, but time resolution will suffer. For most purposes, 110 BPM is fine, but it can be helpful to match the sequences BPM with that of the file you intend to upload (only if you are uploading a song) or to not change the BPM at all if you are incorporating this into an existing sequence.

[Jacob's FFT Converter]

Restoring High Frequency Sounds

Using this algorithm bounds you to the frequencies accessible by the 8 bit sine, which will often result in high frequencies getting cut off, making things sound muffled and certain syllables will be difficult to hear. It is possible to get around this limitation and more accurately reproduce high frequency sounds in the sequencer. In order to do this, you must first follow the instructions in the paragraph above as normal, except you should use a BPM that is a multiple of 4. After that, select all of the notes and change them to 8 Bit Triangle. Open the console and run this command: setDetune(13,2400) . This makes all 8 Bit Sine notes sound 2 octaves higher than they are. Next, open your sound file in an audio editor such as audacity. Slow down the sound to 25% of its original speed, and make sure you do not have any setting enabled which preserves the pitch of the sound. In audacity, this can be done by clicking the drop down menu next to the audio track, and changing the "rate" to a quarter of itself. The purpose of this is to bring high frequency data down into the range which can be detected by the FFT Converter. Return to the sequencer and set the sequence's tempo to a quarter of itself. Run Jacob's FFT Converter in the console as before, this time importing the slowed down version of the audio. Once it is finished, change the tempo back to normal. You should have the original conversion in 8 Bit Triangle, and a different with more high frequencies in 8 bit sine. They should completely overlap and sync up, creating a clearer sound. Volume and EQ of the Sine and Triangle should be adjusted to your taste.