Custom ringtones and notifications on Android

I had some fun replacing the ringtones and notification sounds on my Android phone.

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.

Excerpt from the interface of SPCTool, showing 5 out of 7 tracks being used by this particular song. Individual tracks can be muted by clicking on the track’s number. The result can then be exported to a .WAV file.

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.

Once you can play a file in foobar2000, you can also convert it to .WAV via right-click menu.

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.
mp3DirectCut allows to trim, change volume and even create fade-ins and -outs, all without re-encoding the MP3 file. The edits are done within the MP3’s original file structure.

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).

Drag .WAV onto .BAT to run.
ffmpeg doing its thing.

Android folder conventions

Android file browser

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.

With this naming convention, the custom sounds are well-separated from the device’s default sounds.

2. Method

Renaming of many files in a folder is done fast with ReNamer.

Drop bunch of files into ReNamer, set some “Insert” or “Replace” rules, and go.

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. CC BY Icon