gitwtfhub

wtf is yamaha-smaf-player?

akustikrausch/yamaha-smaf-player — explained in plain English

Analysis updated 2026-05-18

55C++Audience · developerComplexity · 3/5LicenseSetup · easy

TL;DR

A dependency free C++ player that recreates old Yamaha phone ringtone files by rebuilding the original FM sound chip in software.

Mindmap

mindmap
  root((repo))
    What it does
      Plays old ringtone files
      Rebuilds FM sound chip
      Outputs stereo audio
    Tech stack
      C plus plus
      CMake
      No dependencies
    Use cases
      Convert mmf to wav
      Preserve old ringtones
      Embed in audio players
    Audience
      Audio hobbyists
      Retro tech fans
      Developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Convert old Yamaha SMAF ringtone files into standard WAV audio files.

REASON 2

Embed the player library into your own application to play mmf files.

REASON 3

Preserve and study a largely forgotten early 2000s ringtone format.

REASON 4

Build a retro audio player that mixes ringtones with other classic chip formats.

What's in the stack?

C++CMake

How it stacks up

akustikrausch/yamaha-smaf-playercodextf2/openudc2peng-zhihui/arduino-boost
Stars555556
LanguageC++C++C++
Last pushed2012-09-24
MaintenanceDormant
Setup difficultyeasyhardeasy
Complexity3/55/52/5
Audiencedeveloperdevelopervibe coder

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 30min

Requires a C++20 compiler and CMake, no external dependencies to install.

Use freely for any purpose, including commercial use, as long as you keep the copyright and license notices.

Wtf does this do

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.

Yoink these prompts

Prompt 1
Help me build this project with CMake and convert an mmf file to a WAV file.
Prompt 2
Explain how the FM synthesis engine in ma_fm_core recreates the Yamaha MA chip sound.
Prompt 3
Walk me through embedding the smaf_file and ma_player classes into my own C++ project.
Prompt 4
What is the difference between HandyPhone and Mobile score formats in this codebase?

Frequently asked questions

wtf is yamaha-smaf-player?

A dependency free C++ player that recreates old Yamaha phone ringtone files by rebuilding the original FM sound chip in software.

What language is yamaha-smaf-player written in?

Mainly C++. The stack also includes C++, CMake.

What license does yamaha-smaf-player use?

Use freely for any purpose, including commercial use, as long as you keep the copyright and license notices.

How hard is yamaha-smaf-player to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is yamaha-smaf-player for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.