Analysis updated 2026-05-18
Convert old Yamaha SMAF ringtone files into standard WAV audio files.
Embed the player library into your own application to play mmf files.
Preserve and study a largely forgotten early 2000s ringtone format.
Build a retro audio player that mixes ringtones with other classic chip formats.
| akustikrausch/yamaha-smaf-player | codextf2/openudc2 | peng-zhihui/arduino-boost | |
|---|---|---|---|
| Stars | 55 | 55 | 56 |
| Language | C++ | C++ | C++ |
| Last pushed | — | — | 2012-09-24 |
| Maintenance | — | — | Dormant |
| Setup difficulty | easy | hard | easy |
| Complexity | 3/5 | 5/5 | 2/5 |
| Audience | developer | developer | vibe coder |
Figures from each repo's GitHub metadata at analysis time.
Requires a C++20 compiler and CMake, no external dependencies to install.
This project is a small C++ program that plays old Yamaha SMAF ringtone files, the ones with the .mmf extension that made phones like Samsung, Sharp, and Panasonic handsets chirp their signature tones back in the early 2000s. You give it one of these files and it produces clean stereo audio, without needing an actual phone, its firmware, or any of Yamaha's original sound rom. The Yamaha MA sound chips inside those phones were real FM synthesizers, a technology also used in older sound cards and game consoles, shrunk down to fit inside a handset. The files they played carried a musical score plus optional sampled sounds. When smartphones took over and mp3 ringtones replaced these, the format was largely abandoned, and Yamaha's own tools went offline. A few other projects tried to play these files over the years, but according to the README each one fell short: some produce poor sound quality, some only decode the sampled parts and skip the musical synthesis, and none properly rebuilt the actual FM sound chip in open, permissively licensed code. This project sets out to fill that gap, built entirely from the public SMAF file format description and close study of real files, not copied from any other player. The chips also included a small built in sound bank of instrument sounds, like a piano, that Yamaha never published and this project will not try to recreate exactly. Instead, it uses its own hand built set of FM instrument sounds that stand in for the missing bank, so files that request a generic instrument get a reasonable substitute rather than an exact match. Files that bring their own custom instrument sounds, which many do, play back exactly as originally created. The player is built with no external dependencies, using modern C++, and can be compiled with CMake into either a command line tool that converts a ringtone file into a WAV audio file, or a small library you can add to your own code. According to the README, this same engine already powers a real Windows application called FXChainPlayer that plays these old ringtones alongside other classic audio formats. The parser is written to safely handle untrusted files rather than crash on bad input. The project is released under the Apache License 2.0, and the author states it is not affiliated with or endorsed by Yamaha.
A dependency free C++ player that recreates old Yamaha phone ringtone files by rebuilding the original FM sound chip in software.
Mainly C++. The stack also includes C++, CMake.
Use freely for any purpose, including commercial use, as long as you keep the copyright and license notices.
Setup difficulty is rated easy, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.