STM8S-Discovery プログラム 「FMmelody」
STmicro 製 STM8S マイコン評価ボード「STM8S-Discovery」用のプログラム「FMmelody」です。 Arduino IDE 付属のサンプル・スケッチ「Melody」を FM 音源版として実現した 同名のスケッチ (→こちら) と 同じ機能を持つプログラムです。
Raisonance 社製の C コンパイラを、ST Toolset の ST Visual Develop 環境で使用しています。 Ride7 環境や、Cosmic 社製のコンパイラには未対応です。
アーカイブ・ファイルは ZIP で圧縮してあります。
- STM8S-fmm-100217.zip (2010/2/17 版)
HEX ファイルも含まれていますから、コンパイルせずに、ST Visual Programmer (STVP) を 使って、直接書き込むこともできます。
オーディオ出力は、
- Timer1 モジュールによる PWM DAC
- ディジタル・オーディオ用 16 ビット・シリアル入力 DAC
PWM DAC 出力は、STM8S105C6 の TIMER1 の CH4 出力 (PC4 / TIM1_CH4、コネクタ CN2-5 番ピン) を 8 ビット center-aligned PWM として機能させ、利用しています。
PWM 周波数は 16 MHz / 512 = 31.25 kHz、サンプリング周波数は、その 1/4 の 7.8125 kHz です。
16 ビット・シリアル DAC は いわゆる「標準フォーマット」の
- BCLK / SDAT / LRCK の3線式インターフェース
- MSB ファースト
- 16 ビット右詰め
16 ビット DAC のために、Timer2 と SPI モジュールを使用しています。
サンプリング周波数が低いため、「Tubular Bells」のように高調波の多い音色では、 エイリアスのために音程感が不明瞭になります。
また、使用しているサイン波テーブルのビット数およびサイズが小さいため、 16 ビット DAC 出力にしたからと言って、音質が向上するわけではありません。
実行すると、音色を下の順番で変えながら「きらきら星」のメロディーを演奏し続けます。
- Acoustic Piano
- Electric Piano
- Tubular Bells
- Marimba
- Jazz Guitar
- Finger Bass
- Slap Bass
FM 音源のオペレータの仕様は OPL3 のサブセットとなる、2 オペレータの直列構成で、 音色パラメータはオペレータ当り FB、MULT、DR、TL の4個しかありません。 プログラムの簡略化のため、EG で可変できるのはディケイ・レートだけで、 減衰音のエンベロープしか発生できません。 そのため、音色にはあまり変化がつきません。