Custom ringtones and notifications on Android
I had some fun replacing the ringtones and notification sounds on my Android phone.
Content
Sound sources
I have a custom compilation of sounds and music from the following sources:
Age of Empires 2
Donkey Kong Country
Dunkirk
Final Fantasy VII
GoldenEye 64
Half-Life
Mario Paint
Starfox
Starfox 64
Super Mario 64
Super Mario Brothers 2
Super Mario Brothers 3
Super Mario Kart
Super Metroid
Terranigma
Tetris
The Legend of Zelda – A Link to the Past
Untrue by Burial
Yoshi’s Island
The goal is to find notification sounds that are cute, somewhat recognizable (for nerds), but also not over-the-top and annoying. Incoming phone calls should play dramatic and really catchy loops (to heighten your mood before picking up), not full songs. Tunes for daily morning alarms should be comforting and with a long fade-in period, to wake you up gently. Other alarms (e.g. cooking timer) can be more sudden and urgent.
Trimming, editing and remixing songs
All songs have been customized to better fit as ringtone or alarm sound:
- Trimming and looping
- Fade-in, fade-out
- Extracted individual instruments and samples
The latter was only done to music files from SNES (Super Nintendo; Famicom), where the files are available in multi-track format.
1. Multi-track editing
With SNES music, individual tracks can be extracted with the software SPCTool. This is a great method to extract individual sounds or samples from recognizable songs and use them as short notification sounds. Or you can remix songs to make them more subtle as ringtones, by removing the melodic part and leaving only percussions and bass.
Files from the much-beloved Nintendo 64 in .USF (.miniusf) format are also multi-track, but I haven’t found a usable editor for multi-track editing of them. So I simply converted them to .WAV via the foobar2000 plugin USF decoder for further editing.
2. Single-track editing
Editing of single-track files was done with:
- Audacity: for those files where I had either original .WAV or .FLAC files, or original .USF files from Nintendo 64.
- mp3DirectCut: for those files where I only had access to already compressed .MP3 files.
With the approach of only working on original source files and not re-compressing lossy .mp3 files, I made sure to maintain best possible quantity of the final files.
Compressing long files to MP3
For files that I edited from lossless sources, I used FFMPEG to compress them to .mp3. This was only done to files that are longer than 10 seconds, i.e. only for long ringtones, not for short notification sounds. My FFMPEG command line is this:
ffmpeg -i "%~1" -codec:a libmp3lame -q:a 0 "%~n1.mp3"
%~1 is the name of the input file. The command is nested in a .bat file which can then be used with drag & drop (drop the final .wav file onto the .bat file).
Android folder conventions
Android has 3 relevant folders in Internal Storage:
- Alarm: this folder seems to be used only by the clock/timer/alarm app.
- Notifications: besides notification sounds, this folder is also used when setting ringtones for incoming calls in apps like Signal, WhatsApp and even in the default “Phone“ app. In other words: ringtones and notifications must all be put together in this one single folder.
- Ringtones: this folder is only used when setting the system’s default “Phone ringtone“ option (Settings → Sound and vibration → Phone ringtone). Somewhat redundant because it can also be set in the Notifications settings.
Due to the somewhat misaligned folder structure in Android, we must duplicate our custom ringtones into all 3 of these folders to make them available for all kinds of scenarios. However, our shorter notification sounds will only go into the “Notification“ folder.
File naming conventions
Due to the fact that short notification sounds and longer ringtones are mixed in the same “Notifications” folder, I added a prefix to all filename to help with sorting. Examples:
_L_example1.mp3
_L_example2.mp3
_L_example3.mp3
_S_example1.wav
_S_example2.wav
_S_example3.wav
1. Purpose
The first underscore (_) ensures that the custom files are at the top of the list when picking a custom notification sound. The “S” stands for “short” and the “L” stands for “long”. This helps to sort ringtone and notification sounds inside the list.
2. Method
Renaming of many files in a folder is done fast with ReNamer.
Removing ID3 tags from original sources
MP3 files from public or commercial sources usually have ID3 tags to indicate song name, artist and album. If a file has such tags, the notification sound picker shows the ID3 song name instead of the filename. This conflicts with the filename convention scheme above, because those songs would then be out-of-order and buried within Android’s default notification sounds. Also, when creating multiple versions of a single song (i.e. one where the beginning of a song is looped vs. one with a loop from the middle), you’d then have multiple files with different content but identical ID3 tags.
To fix this issue, I removed all ID3 tags from all MP3 files. This can be done recursively with one single click in the software MP3Tag.
File transfer to Android
After preparing all files with correct filenames and without ID3 tags, I copy the files over USB cable to the Android phone.
- All “_S” and “_L” files go to “Notifications”.
- All “_L” files also go to “Alarms” (as duplicate #1).
- All “_L” files also go to “Ringtones” (as duplicate #2).
Whenever you add new “_S“ files, just add them to the “Notifications“ folder. When adding new “_L” files, add them to all three folders.
Testing on Android
Android detects these files immediately without reboot, so you can start assigning files to specific apps and events.
Tips for better sound experience
When setting each notification to the new sound, I would suggest the following adjustments:
1. Disable vibration
For each app event (e.g. incoming call, direct message), you can define whether or not the phone should vibrate for that event.
I would suggest to disable the vibration, because if the phone is resting on a hard surface, the sound from the vibration disturbs the actual, customized sound, making the customized sound less recognizable.
2. Set minimum time between notification sounds
This is done per app (not per event). I set this to “10 seconds” for most apps.
This avoids annoying sound spam if you get multiple messages in a row (e.g. a string of pictures, or a busy group chat).
Some apps try to make it difficult to pick a custom sound – no problem
For example, the chat app “LINE” (popular in Japan and Taiwan) wants to you to buy custom ringtones within the app. But when changing notification sounds for individual app events in the Android settings app, you can still assign a custom ringtone or notification sound. By default, these apps are set to “App provided sound”, but this can be changed to a custom sound from our customized file list.
Download
My set of custom notifications and ringtones is not available for publication. Friends and family may request a link.
Extend
Please suggest other sources (games, movies, albums, pop culture) from which to derive fitting notification sounds without being too tacky and obvious.
Bonus points for anything that allows multi-track editing, i.e. video game music where one can extract individual instruments and elements to make remixes or create distinct notification sounds from original samples.
Article is licensed under CC BY.
This article is licensed under CC BY.