explaingit

akustikrausch/yamaha-smaf-player

Analysis updated 2026-05-18

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

TLDR

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

What do people build with it?

USE CASE 1

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

USE CASE 2

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

USE CASE 3

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

USE CASE 4

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

What is it built with?

C++CMake

How does it compare?

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 get it running?

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.

In plain English

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.

Copy-paste 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

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

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.