たま日記

たまに書く

メモリマップを調査した

TX81Zには、64KBのROMと8KBのSRAMが搭載されている。CPUであるHD63B03XPのアドレス空間は64KBで、次のような割り当てになっている。 $0000-$001F: CPUの内部レジスタ $0040-$00FF: CPUの内部RAM $2000-$3FFF: YM2414Bのアドレス($2000)とデータ($2001) $4000…

コールグラフを描いてみた

TX81Zの解析を続けている。MAMEのデバッガには逆アセンブラが内蔵されている。しばらく使っていたのだが実行場所から離れたアドレスのコードが表示できないことがあったり、switch-case文的な意味合いのコードを文面通りにしか出力してくれなかったり、不便…

MAMEのTX81Zに手を入れた(1)

ここしばらくMAMEのソースコードを読んでいた。まだまだTX81Zのエミュレーションは不完全であることが分かった。Youtubeでも確認できる。もちろんYM2414の実装であるymfm_opz.cpp, ymfm_opz.hが未完成であることが原因なのだが、どうもTX81Zの実装であるymtx…

FM音源チップを動かしてみた(3)

ブレッドボード上のYM2151を外し、代わりにYM2414をTX81Zの中の人として動作させる実験を行った。 PC -> esp32 -> YM2414 -> TX81Zの音色 PCからesp32にレジスタアドレスと書き込む値を送る(シリアル経由) esp32は受け取ったとおりにYM2414に書き込む TX81…

FM音源チップを動かしてみた(2)

YM2151が出力するデジタル音声データを受け取り発声するプログラムを作った。VGMデータを演奏することができた。プログラムと回路図はGitHubに。 参考にしたサイト YM2151からの左右チャンネルの切り替え信号(SH1, SH2)をI2Sフォーマットに変換する方法。E…

FM音源チップを動かしてみた(1)

YM2151(OPM)とYM2414B(OPZ)が出てきた。YM3012(DAコンバータ)も。2年くらい前に買ったような気がする。5個セット。本物か偽物か分からない。せっかくなので動くかどうか試してみた。YM2151の1つはデートコードが削られてる(今回のテストではこれだけが動か…

2号機を組み立てた

ウィンドシンセの2号機を組み立てを終えた。 使った部品 RGB OLEDモジュール(秋月) ESP32 DevkitC 32E(秋月) UDA1334A I2SステレオDAC(SwitchScience) MPR121 静電容量センサ(SwitchScience) GY-521 加速度ジャイロセンサ(amazon) LPS33HW 気圧セ…

基板を作った

ここしばらくウィンドシンセ2号機を作っていた。ようやく基板だけできた。初めてポリウレタン線を使ってみた。被膜を溶かすのは結構難しい。使った部品は右から順に RGB OLEDモジュール(秋月) ESP32 DevkitC 32E(秋月) I2S ステレオDAC(SwitchScience…

NimBLE + BLE MIDIで音を出した

今回の実験 M5Stackで次を調べてみた。 BLE MIDIで接続しながらcore0でリバーブ処理+I2S出力が可能か? core1とcore0をキューでつないで音を出したときに遅延などは有るか? 1つ目は処理能力の調査。esp32ではcore0とcore1でマルチタスクができる。「無線関…

BLE MIDIライブラリを使ってみた

以前BLE MIDIの記事を書いたのだけどVSCodeでは試していなかった。改めて、VSCode + PlatformIO + M5StackでBLE MIDIを使えるようにする方法を調べてみた。※マザーボード上のBluetoothを使って実験したのだが同梱されていたWi-Fiアンテナを付けないと、Bluet…

バイトセンサを作った

ピッチベンドを口でするために作った。まだ音を出していないが、シリアルプロッタの出力を見るといい感じで変化している。バイトセンサ(リップセンサ)については色々制作事例がある。この記事ではEWIのマウスピースに圧力センサを埋め込んでいる。「大改造…

年が明けた

そろそろウィンドシンセの自作を再開したくなってきた。気になっていたので改めてMAME周辺のYM2151エミュレータの実装について調べてみた。※間違えているかもしれない現在のMAMEプロジェクトでは、Aaron Giles氏の実装したYMFMが使われている。一方でVGMPlay…

アルトヴェノーヴァを手に入れた

ESP32によるWT11エミュレーションの実装は概ね終了した。実機と比較しても何となく同じような音が出ているような気がする。FM音源的?な音色を聴いているうちに、だんだんと物理モデリング音源を鳴らしたくなってきた。STKの実装を見ていると、それほど難し…

WT11が発声するボイスについて調べた

#div-1 pre { /* id="div-1" の中の PRE */ white-space: pre; } ウィンドシンセ用音源 Yamaha WT11はTX81Zと互換性がある。ただしWT11はTX81Zでいうパフォーマンスモードで動作する。音色の選択は96個あるパフォーマンスから1つを選択することで行う。1つの…

TX81Zを解析した(パフォーマンスモード編 追記)

TX81ZのPCEDの設定項目「Volume」について調査し忘れていた。パフォーマンスモードで設定できる8つの楽器ごとに音量を設定するためのパラメータである。VCEDのVolumeと同様に0~99の値を指定する。YM2414のTLレジスタにセットされる値に影響することも同様。…

TX81Zを解析した(パフォーマンスモード編)

TX81Zに搭載されているOPZは(OPMと同様に)異なる8音を同時に発声する能力を持つ。1つのNote on信号を受信するとシングルモードでは1音を発声するのに対し、パフォーマンスモードでは2つ以上の音を同時に発声することができる。どのように組み合わせるかはP…

WT11固有のパラメータ

#div-1 pre { /* id="div-1" の中の PRE */ white-space: pre; } WT11のエディットバッファ内のボイスデータ・パフォーマンスデータをTX81Z Programmerで取得する、という記事を前回書いた。その後マニュアルを眺めていたらTX81Zにはない固有のパラメータが…

WT11をゲットした

TX81Zを検索していると、ちょいちょいWT11のページも引っかかる。面白そうなので中古品を買ってみた。 WT11はYAMAHAから発売された音源モジュール。プリセットのほとんどが木管/金管楽器でWX11などのブレス入力MIDIコントローラーとつないで使う。Wikipedia…

リバーブつけた

今までのなんちゃってリバーブをFreeverbに変更した。ソースコードは以下のページからリンクされているページで入手できる。 prettoguitar.blogspot.comリンク先はFreeverb3というVSTの作者のページ。Freeverbより音質がよいらしい。ESP32で動くかどうかは分…

音色エディタを作った

ウィンドシンセの音色をPCから変更するための音色エディタを作った。 音色エディタよくありそうなFM音源音色エディタだけど、16進数を編集していたのに比べれば楽になった。ウィンドシンセとの通信はシリアル経由。そのうちBLE MIDIでやりとりしたい。PCでも…

音が出た

TX81Zのプリセットを発声させることができた。ESP32の2つのコアを使って、センサをcore1で、TX81Zエミュレータをcore0で動かしている。8音だしているがまだ余裕がありそう。音色のパラメータVCED(Voice Edit Parameters)・ACED(Voice Edit Additional Parame…

夜に駆けたい

TX81Zのシングルモードエミュレータがある程度動いた。今度は自作していたウィンドシンセで鳴らしたい。Windowsではmingw+Javaの環境でテストしていたので、これをESP32で動くように作業を進めている。タイミングのよいことに雑誌「インターフェース」2021.3…

導出方法を考えてみた

32個あるオペレータの出力値を決めるレジスタ(0x60~0x7f)に書き込まれる値は、次の式で求まる.このうち、表が巨大になった、、の値を導出するアルゴリズムを考えた。計測値とも一致した。:Level Scalingによる減衰量 VCEDのLevel Scaling(0~99)とMIDIノ…

TX81Zを解析した(ポルタメント編)

#div-1 pre { /* id="div-1" の中の PRE */ white-space: pre; } TX81Zはポルタメントの変化に要する時間を0~99の値で指定する。0の場合ポルタメントしない。音の高さは直線的に変化するわけではなく、以下のようなカーブで変化する。 C3->C5->C3のカーブポ…

TX81Zを解析した(LFO Delay編)

LFO Delayは音の出始めからどの程度遅延してピッチや音量を変化させるかを表す数値で、VCEDでは0~99で指定する。前述したようにPMD・AMDの0~99の値は0~127に変換されYM2414のレジスタに書き込まれる。LFO Delay=0の場合、音を出すのと同時にレジスタに書…

TX81Zを解析した(LFO Speed・PMD・AMD編)

2023/3/4:LFO Wave=3(S/Hold)の場合のLFSレジスタ書き込み値を追記したTX81ZはLFOを3つ(ハードウェアで2つ、ソフトで1つ)持っている。シングルモードではハードウェアのLFO1が使われているようなので、それについて調べてみた。LFO信号の設定項目は(1)LFO…

TX81Zを解析した(ブレスコントロール編)

前回のの説明の続き。:ブレスコントロールによる減衰量 は次の3つの値で決まる減衰量。 BC EG Bias:ブレスコントロールの効き具合(0~99)全オペレータに共通の値。 EG Bias Sensitivity:ブレスコントロールの効き具合(0~7)オペレータ毎に設定できる…

TX81Zを解析した(Operator Output Level編)

TX81Zの音色はVCED(Voice Edit Parameters)で設定する.Attack RateやAlgorithmなどはYM2414のレジスタに書き込む値をほぼそのまま設定するのだが,Operator Output LevelやLFO Speedなどは0~99の値を設定する.この0~99の値は何らかの計算により0~127な…

TX81Zをゲットした

TX81Zのプリセットがym2151.c改でうまく鳴らせなかった問題は半分くらい解決した。音の高さによってオペレータのOutputLevelを小さくするLevelScalingという項目がプリセットにあって、勘で適当に実装したら何となくそれっぽい音が出るようになった。 でも正…

DeicsOnzeは無理だった

自作ウィンドシンセの内蔵ソフト音源として考えていたDeicsOnze、TX81ZなるFM音源モジュールのエミュレータなのだがESP32で動かすことはできなかった…残念! 波形?を保存するテーブルがメモリに入りきらず、Arduino環境ではコンパイルできなかった。Windows…