頼りないニモニック

はっきりいって個人の日記レベル

YM2203をNucleo F401REで鳴らす話 (1)

前回: YM2203をNucleo F401REで鳴らす話 (序) - 頼りないニモニック

マスタークロックと発声周波数

YM2203のφMピン(38番)にはマスタークロックとして0.7〜4.2[MHz]を与えなければなりません。
PSG音源、FM音源で生成される波形の周波数は、このマスタークロックに依存します。

参考:
YM2203 データシート(Datasheet) 8 Page - List of Unclassifed Manufacturers
YM2203のピン機能 - 滴了庵日録

計算式より、マスタークロックφMが

  • 1.0 [MHz]のとき、
    • PSG音源は 3.81 〜 15625 [Hz]
    • FM音源は 0.00 〜 867.63 [Hz]
  • 4.0 [MHz]のとき、
    • PSG音源は 15.3 〜 62500 [Hz]
    • FM音源は 0.00 〜 3470.53 [Hz]

のように発声できる音程が決まります。FM音源は基本周波数(正弦波)です。
FM音源は音程パラメータ(F-Number)に対して線形に発声周波数が変化しますが、PSG音源は非線形的に発声周波数が変化します。
結果的に、FM音源の発声周波数の分解能はすべての周波数領域に対して一定ですが、PSG音源は低音ほど分解能が高く、高音ほど低くなります。
なお、FM音源の音程はオペレータ毎に倍率が指定できる(0.5〜15倍)ため、最終的な発声周波数は、

  • 1.0 [MHz]のとき、0.00 〜 13014.48 [Hz]
  • 4.0 [MHz]のとき、0.00 〜 52057.90 [Hz]

となります。

F401REは最高動作クロックが84[MHz]ですが、84[MHz]そのものを取り出すには少々難があるようです。
YM2203で用いることのできるクロックは、現実的には以下の2種類の生成方法があります。

  • PWMを用いてクロック生成 (〜1.0[MHz])
  • 内部クロックを分周して出力(3.2〜16[MHz])
続きを読む

YM2203をNucleo F401REで鳴らす話 (序)

先日、友人と例のガチャガチャで YM2203 を入手しました。
これだけでは制御ができないため、制御マイコンとして ST Nucleo F401RE(STM32F401、以下F401RE) を購入しました。
購入前に詳しく調べませんでしたが、YM2203 と F401RE はともに 5[V] での駆動が可能です。YM2203 の消費電力に若干不安はありましたが、F401RE の電源ピンから電源は取れそうです。

YM2203 はPSG音源(SSG音源とも)はアナログ出力ですが、FM音源はデジタル出力です。
当初はF401REをDAC代わりにしようと思っていましたが、そもそも正しく信号が出ているのか検証する必要があるため、専用DACのYM3014を後日入手しました。
他にオペアンプが必要ですが、汎用オペアンプなどはすでに持っていたため流用しました。

実際に購入→正しく発音までに3週間ほどかかりました。
数回に分けてこの3週間にどこでつまずいたのかを記録しておこうと思います。

続きを読む

GitHubのContributionsの日付計算方法が変わったらしい

f:id:nanase_t:20140312163855p:plain

最近、GitHubのContributionsのグラフの日付が更新されないなと思っていましたが、どうやら変更があったようです。
(てっきり、太平洋夏時間の影響かと思ってました)

結論

Timezone-aware contribution graphs · GitHub

連続コミット(streaks)はどうなるの?

上記リンクによると...

We don't want to mess up your current contribution streaks, so only contributions after Monday 10 March 2014 (Temps Universel Coordonné) will be timezone-aware.

3月10日(UTC)からこのルールが適用されるようです。連続コミット日数を狙ってるにしてはかなりの朗報。
ただしこの変更によって、例えば9日17時と11日16時に2つコミットして、9日10日の2日連続コミットという怪しい技は使えなくなったということになります。この場合は9日、11日のコミットとなり、連続にはなりません。

Enjoy your time(zone)!

毎日コミットしないと(戒め)

文字そのものがクリックされたかを知る

研究で急遽必要になったため久々に WPF をやっています。

今回、TextBlock の文字 そのもの をクリックしたいと思ったのですが、結構はまってしまいました。

続きを読む

Githubの2段階認証を有効にしてgitからの認証が弾かれる時の話

Github で2段階認証 (Two-factor Authentication; 2FA) が導入されました。それについての記事もあります。

https://github.com/blog/1614-two-factor-authentication

本日、この 2FA を有効にしたときにちょっとしたアクシデントがあったのでご紹介します。上記の記事にもばっちりと対処法が書かれていますがここでまとめておきます。

続きを読む

ゲームライブラリを作っています

ux をどうにか活かしたいという思惑と、とある事情で自由な成果物を制作する機会があるため、2Dゲームライブラリを制作しています。Sitrine (シトリン)という名称で、由来は黄水晶を意味する citrine です。ちなみに 黄水晶 は 11月の誕生石です。

当初は「ゲームエンジン」と名乗っていたのですが、補助的な役割が適切と考え「ゲームライブラリ」と今では名乗っています。その構想と現状をここに書き留めておきます。

続きを読む