« MSXでMake10 | メイン | MSXで曲を奏でる »

MSXで音作り

 MSXはBASICのPLAY文などで気軽に演奏をさせることができるのですが、マシン語だとそれ以上に細かな設定ができそう……ということで試してみました。プログラムの骨組みはC言語(z88dk)ですが、音楽を奏でるドライバ部分はマシン語(インラインアセンブラ)で組んであります。

 BASICでは1オクターブ間を均等に12で割った12音階(ドレミファソラシの7音+ド#レ#ファ#ソ#ラ#の5音)しか使えませんが、24で割ったり、48で割ったりしてみました。均等にではなく、sin波や放物線に沿った割り方もしてみました。

https://twitter.com/fukui_keeekn/status/1600484029245329408
Fjyprwzacaua9mu

 ↑このように微妙な音を出せることを確認したうえで、例えばドとそれより微妙に高い(低い)音を一緒に奏でたらどうなるのか、も試してみました。

https://twitter.com/fukui_keeekn/status/1601239203307999234
Fji9_d5akae1khz

 BASICだと特殊なことをしない限り(エンベロープを使うなどしない限り)音量が変化しません。八分音符を二つ続けての演奏と四分音符一つの演奏との違いが見いだせません(耳のいい人には違って聞こえるのでしょうか?)。そこで音量を時間とともに下げるプログラムをC言語(インラインアセンブラ)で組んでみました。原理的にはBASICでもできるはずですが、うまくいくかは試していないので分かりません。

https://twitter.com/fukui_keeekn/status/1604448264283385861
Fkqlf3bauaeijhc

上記三つともクリックするとツイートへと跳びます。WebMSXはそのツイートから更に跳ぶことで辿り着きます。

トラックバック

このページのトラックバックURL:
http://app.mitelog.jp/t/trackback/228183/34256760

MSXで音作りを参照しているブログ:

コメント

コメントを投稿

最近のトラックバック

Powered by Six Apart

ウェブページ