FM音源エミュレータ

往年のレトロPCに搭載されたFM音源*1のエミュレーションはどういう風になっているのかなあと思って、ググってみた。そして、ソースコードの著作者関連のところを引用。

ううっ http://mamedev.orgにつながらねえのは何故だ。。。 つながりました。

http://x.mame.net/download.html

UNIXMAME。xmame-0.106.tar.bz2の中のsoundディレクトリにソースがある。fm.c、ym2151.cあたりが参考になりそう。
fm.c

/*
**
** File: fm.c -- software implementation of Yamaha FM sound generator
**
** Copyright (C) 2001, 2002, 2003 Jarek Burczynski (bujar at mame dot net)
** Copyright (C) 1998 Tatsuyuki Satoh , MultiArcadeMachineEmulator development
**
** Version 1.4 (final beta)
**
*/

ym2151.h

/*
**
** File: ym2151.h - header file for software implementation of YM2151
**                                            FM Operator Type-M(OPM)
**
** (c) 1997-2002 Jarek Burczynski (s0246@poczta.onet.pl, bujar@mame.net)
** Some of the optimizing ideas by Tatsuyuki Satoh
**
** Version 2.150 final beta May, 11th 2002
**
*/

http://www.retropc.net/cisc/m88/download.html

c++で実装されたFM音源エンジン、fmgen。PC88エミュのM88関連。

fmgen.cpp

// ---------------------------------------------------------------------------
//	FM Sound Generator - Core Unit
//	Copyright (C) cisc 1998, 2003.
// ---------------------------------------------------------------------------
//	$Id: fmgen.cpp,v 1.49 2003/09/02 14:51:04 cisc Exp $
// ---------------------------------------------------------------------------
//	参考:
//		FM sound generator for M.A.M.E., written by Tatsuyuki Satoh.
//
// 	謎:
//		OPNB の CSM モード(仕様がよくわからない)
//
//	制限:
//		・AR!=31 で SSGEC を使うと波形が実際と異なる可能性あり
//
//	謝辞:
//		Tatsuyuki Satoh さん(fm.c)
//		Hiromitsu Shioya さん(ADPCM-A)
//		DMP-SOFT. さん(OPNB)
//		KAJA さん(test program)
//		ほか掲示板等で様々なご助言,ご支援をお寄せいただいた皆様に
// ---------------------------------------------------------------------------

http://homepage1.nifty.com/mpuusan/x68sound/x68soundbody.htm

X68k Sound Generator。シャープのパソコンテレビ、X68000の音源エミュレータ


・・・とまあ、ちょろっと検索しただけだと、こんくらいしか見付からん。

MAMEがもたらしたFM音源のエミュレーション技術ってのは画期的だなあ。

*1:YM2203-OPN、YM2608-OPNA、YM2151-OPM