STM8S-Discovery プログラム 「FMmelody」

STmicro 製 STM8S マイコン評価ボード「STM8S-Discovery」用のプログラム「FMmelody」です。 Arduino IDE 付属のサンプル・スケッチ「Melody」を FM 音源版として実現した 同名のスケッチ (→こちら) と 同じ機能を持つプログラムです。

Raisonance 社製の C コンパイラを、ST Toolset の ST Visual Develop 環境で使用しています。 Ride7 環境や、Cosmic 社製のコンパイラには未対応です。

アーカイブ・ファイルは ZIP で圧縮してあります。

解凍すると、「FMmelody」フォルダが作られます。

HEX ファイルも含まれていますから、コンパイルせずに、ST Visual Programmer (STVP) を 使って、直接書き込むこともできます。

オーディオ出力は、

に対応しています。

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 は いわゆる「標準フォーマット」の

のデータ形式に対応しています。 実際に回路を組み、動作を確認しているのは BU9480 (ROHM) だけです。 BU9480 以外の DAC では、オーディオ出力がジッタを持つ可能性があります。

16 ビット DAC のために、Timer2 と SPI モジュールを使用しています。

サンプリング周波数が低いため、「Tubular Bells」のように高調波の多い音色では、 エイリアスのために音程感が不明瞭になります。

また、使用しているサイン波テーブルのビット数およびサイズが小さいため、 16 ビット DAC 出力にしたからと言って、音質が向上するわけではありません。

実行すると、音色を下の順番で変えながら「きらきら星」のメロディーを演奏し続けます。

FM 音源のオペレータの仕様は OPL3 のサブセットとなる、2 オペレータの直列構成で、 音色パラメータはオペレータ当り FB、MULT、DR、TL の4個しかありません。  プログラムの簡略化のため、EG で可変できるのはディケイ・レートだけで、 減衰音のエンベロープしか発生できません。  そのため、音色にはあまり変化がつきません。