#027

【MZ80,Z88DK】C言語でBeep音の音程変更【MZ80,Z88DK】C言語でBeep音の音程変更戻る 設定


概要

 Beep音を鳴らす部分は、【MZ80,Z88DK】C言語でBeep音を参照してください。これをベースに音程を変化させます。

【参考】Enri's Home PAGE (mz-80K)(外部サイト)

ソース

#define POKE( off, val )    ( *(unsigned char*)( off ) = ( val ) )
void main()
{
    POKE( 0xe004, 0x77 );               //  ド(L)
    POKE( 0xe004, 0x07 );               //  ド(H)
    POKE( 0xe008, 0x01 );               //  音を鳴らし始める
    for( int i = 0; i < 10000; i++ ){}  //  音の長さ
    POKE( 0xe004, 0xa7 );               //  レ(L)
    POKE( 0xe004, 0x06 );               //  レ(H)
    for( int i = 0; i < 10000; i++ ){}  //  音の長さ
    POKE( 0xe004, 0xed );               //  ミ(L)
    POKE( 0xe004, 0x05 );               //  ミ(H)
    for( int i = 0; i < 10000; i++ ){}  //  音の長さ
    POKE( 0xe008, 0x00 );               //  音を止める
}

解説

 アドレスE004hへ分周比を書き込むことによって音程を変化させます。2バイトで指定するため、同じアドレスに下位、上位の順に連続して書き込みます。

 書き込むべき値の計算式は、以下の通りです。

 1000000 / 周波数

 例えば、「ラ」の音(440Hz)を鳴らしたい場合、1000000 / 440 = 2272(08E0h)ですので、E0h、08hの順に書き込みます。


関連記事

#024 【MZ80,Z88DK】C言語でBeep音

#021 【MZ80,Z88DK】C言語でキースキャン


最終更新日時:2022/05/03
戻る戻る back