2016年10月20日木曜日

MDX解析で色々2:ピッチ関連

というわけで、少しづつ鳴り出したMDX。

繰り返し処理なんかは良く考えられていて、鳴らす方はあんまり何も考えずにやっても
すぐに繰り返しできたし、そういえば最大のネックの一つだった全体ループも割とすんなり。

このまま調子よく行くかと思いきや、ピッチ関連でどハマりしたのでした。

実際、現在の状態でもあんまりちゃんと鳴っていないポルタメントO。
これはこんな感じになっております。MDXフォーマットから引用。

・ポルタメント
    [$F2] + [変移※1]w
        変移 = 1クロックあたりの変化量

ポルタメントはシンプルなんだけど、1クロックあたりにどんだけピッチが動くかが入ってる
って、これ誤差でまくり仕様じゃないの!?と思ったらやっぱりそうでした。厳密に計算
すると、全く想定通りに鳴らない!

なので考え方を変えて、当時の整数計算を意識してざっくりとやりだしたらある程度うまく
いきました。でも未だに変な挙動アリ。


そしてLFOはこんな感じ。

・音程LFO制御
    [$EC] + [$80]b    MPON
    [$EC] + [$81]b    MPOF
    [$EC] + [WAVE]b + [周期※2]w + [変移※1]w

        WAVE0 [ 鋸波 ] : 周期 = 設定値×4 : 変移 = 設定値×周期÷512
        WAVE1 [矩形波] : 周期 = 設定値×2 : 変移 = 設定値×256
        WAVE2 [三角波] : 周期 = 設定値×2 : 変移 = 設定値×周期÷512

・LFOディレイ設定
    [$E9] + [???]b    MDコマンド対応

これはしょうがないので、本家の動きをキャプチャーして、自分でざっくり作ってみて、
比べてみるというかなり原始的な方法で作ってみました。これはこれで何だかうまく
いってるのだかいってないのだかよくわからない感じに。

雰囲気で勝負という結果となりました。でもここもたっぷり時間がかかったなぁ・・。

つづく~

2016年10月19日水曜日

美味しいお寿司


最近美味しいお寿司に出会えてなかった気がする。

久しぶりににぎり長次郎に言ったら、

もうめちゃくちゃ美味しいの!!やばい!!

どのお寿司も口の中で溶ける感じ。すーって。

いやー、参った!!

美味しかった!!

2016年10月18日火曜日

MDX解析で色々1:タイマーB

というわけでMDX一区切り。

2016年に一生懸命MDXの解析とかやってる人は世界に俺だけかと思う位情報が無かった。
ググっても大体2000年代が最新情報。フォーマットに関しては2つほど資料が落ちてたので
それを使って1バイトづつ読み込んで解析していきました。

■タイマーBって何や
MDXはBPMやTEMPOで制御するのではなく、X68の割り込みタイマー、通称タイマーBという
割り込みを使うのだ。この辺も未だあやふやなままだが、このタイマーBの数値でカウンタを
回して、カウンタの数字を見ながら音を鳴らすというのが大きな流れだ。

まあ当然ながら、このタイマーBでハマった・・。

テンポとタイマーBの1対1の数式は2~3個あったソースコードから引用できたので問題無い
のだけど、ZMSは最初に曲全体を絶対的な時間にどんと割り振ってから演奏するやり方を
採用していて、まあ理由はWindowsの割り込みタイマが信用ならんからなんだけど、その方法
をまずは採用して計算してみた。

でも途中でテンポが変わる時にもう計算がレロレロに・・。

しばらくそのやり方で作っていって、だいぶ鳴るトコまで来たのだけど、どうにもダメなトコに
ブチ当たって、完成間近と思われていたMDXを一度リセット!!

これが当ブログ9月5日の事でありました・・。

■絶対時間を止める
カウンタを厳密に回す方法が中々見つからず、色々やってたら、ナイスな方法をようやく
見つけた。それがこれ。この計算を、10msとかの間隔で呼び出す。

// 経過時間取得
LONGLONG llNow = GetNowHiPerformanceCount();
LONGLONG llPassTime = llNow - g_llPreTime;
g_llPreTime = llNow;

// 1クロックの計算はテンポチェンジに備えて毎回やっておく
double dWholeNote = (6.0 * 2048.0 * (256.0 - (double)g_fTimerB)) * 4.0;
g_dOneClock = (dWholeNote / 192.0);

// 経過時間が1クロックの時間のどれくらいかを計算してクロックに足す
g_dClock += ((double)llPassTime / g_dOneClock);

カウンタ計算の度に、クロックがどのくらい進んだかをdoubleで計算する事に。そして
使うときにはintでキャストするというやり方。

これでどのくらいちゃんと厳密にできてるか調査してみたら、ほぼ想定通りの数字が出た。
良かった!!これでクロックが増える度に命令を取り出してきて実行するといういきあたり
ばったりのやり方で行ける!

■いきあたりばったり
そういう意味でも、いきあたりばったり方式はX68時代のやり方とほぼ同じであり、再現という
意味でもいい感じになってしまいました。このクロックカウンタ計算をベースとして作り出したら
割とトントンっと進みだしたのでした。

つづく~

2016年10月16日日曜日

マザーボード交換の巻

MDXの話はまた今度ということで、今回は自宅PCのお話。

最近音楽用に買ってたPCを結局メインで使うようになったので、しばらくは
このi5 6500のマシンで過ごしていた。まあi7じゃなくても新しいので早いのは
間違いなくて、古いバイオハザード5をインストールしたら300fpsとかわけの
わからん数字が出てホクホクしたりして。

でもこのPC、カスタムマザボなのか、SATAが2つしか無いの。

起動用のSSDと、もう一個HDDを乗せたらハイ終わりという感じで、買ってきた
4TBのHDDはUSB3.0でつなげてみた。そしたら!認識されない!なんで!?

HDDと買ってきたHDDケースがダメなのかしらと、家にある別のHDDケースで
やってみたら、まあ認識はされた。

そしてしばらく使っていると、何だか、時々HDDが認識されなくなる。

時々例のUSBをぶっこ抜いた時のチャラリ、みたいな音が鳴るのね。
しかも、段々よくなるようになってきた。そういえば他に刺さってるUSBも
時々認識されてなかったわ、オーディオインターフェースとかキーボードとか。

そうなると色々と困るようになってきて。例えばバイオのデータはそのHDDに
入っているのだけど、ゲームしてると途中でドンとフリーズするし。

なんだか困ってきて、何とかならないかなーと。SATA増設ボードとかもあるし
そういうのでごまかすというのもいいけど、スロットはすでに埋まっている。

となると、UAD2を抜いてボード刺さなきゃいけない。それは嫌だなぁ・・。

そこで、マザーボードを変えたらいいんじゃね!?と気づく。

お金もかかるし、移し替えと、OSのインストールがめんどくさいけど、これかな
とヨドバシへ。

目当てのマザボがあったので店員さんに型番を告げると、しばらく待たされ
「すみません欠品です」だって!もう!ショウウィンドウに飾っとくなよ!!

何だか腹が立って、日本橋電気街へ。

外国人観光客ばっかり!!

あっ!パソコン工房が!早速入って探してみたら!目的のマザボが売り切れ!
棚はあるけどからっぽ!惜しい!!

そして別の全然知らない店で探したら、お店の表示がすごく詳しくて、それ見て
たら目的のマザボじゃなくてもいける感じがしてきた。もうこれで行く!買う。

ウチに帰ってマザーボードつけかえ。もう大変!!
全部色々ぶっこぬいて色々と刺しなおし。
いつものように負傷したのは親指。

WINDOWS10のクリーンインストールイメージを作ったけど、もしかしたら前の
システムでそのまま起動しないかしらと試しにやってみたら起動した!!
まじで!?

そしたら、普通にそのまま動くし!!
まじで!?

デバイスマネージャ見ても、変な表示になってないし!すごい!!

HDDもSATAでしっかりと認識してる!ちゃんと動いてる!!すごい!!

いやーこれで一件落着と思ったら。
何だかファンの音がすごくうるさい。
こんなにうるさかったっけ!?

CPUファンを付け替えてみても同じ。

よく原因を探してみたら、ケースにつけたファンがうるさかった事がわかったので
それを付け替え。静かになった・・。

振り返ってみると・・。
今日はマザーボードをはずしては付けてを3~4回繰り返したよ!!

大変だったよ!!
疲れた!!

これでしばらくは何とかもってくれーー!!

----

追記:しばらくしたらWindows10が正しいライセンスコードを入れてと言ってきた。
あれ?無料アップグレードしたんだけどダメなの?って感じで色々調査。

なんと!!

無料アップグレードして、その後SSDとか色々変えてもそのまま使えるみたいだけど、
マザーボードを変えると同じ機種とは認識されないみたい・・。

ショック!!!

結局Windows10のライセンスコード買いました・・とほほ。

2016年10月14日金曜日

MDXひと段落

結構時間をかけてやってしまっていたMDXフォーマット解析。
ようやく今週になってまあこんな所だろうという感じになってきた。

ZMSを鳴らすアプリに組み込んで、ZMSもMDXも鳴るよという体裁に
落ち着くことができた。

この1~2カ月、色々あったなぁ~。

以前作ってたMDXのコードは全破棄して組み込んだのだけど、
不完全だったのでバッサバッサとコードを削除する時はやっぱり
気持ちイイね~!

忘れないウチに何にハマったのかのメモをここに書いていく事にしよう。

やはり割り込みのイミュレーションとピッチ制御かしら。

後は意外とまあまあの所に軟着陸できたadpcmかな。

この辺りをまとめます。
誰か検索で当たってこないかな~。
MDXの話で盛り上がりそう~。

2016年10月13日木曜日

出張メシ



出張は基本的はメンドクサイ。
すごい近くの会社に行くのもメンドクサイ。
東京なんて事になったら相当メンドクサイ。

でも、ネガティブばかりでもツマンナイ。
新幹線の中で食べるお弁当だけが頼りなのだ。

行きは嬉しい出来事もあり、お弁当のチョイスもうまくいき、
30品目弁当だったのだけど、めっちゃ美味しかった!!
たくさんあるおかず&ご飯がどれも美味しい!すごい!!

帰りは何だかモヤモヤが続き、
せっかくのまい泉のヒレカツ弁当があんまりおいしく感じず。
写真もなぜか暗いトーン!

2016年10月1日土曜日

予想外な中華屋さん


最近豊中づいている?

エトレで買い物などした後、駅前のビルの4階にある奥まった中華屋さんへ。

パっと見そんなに人が来ないのかなと思って中に入ると、

なんと予想外!満員!!

どうなるのかな?待つのかな?と思ったら、

奥にある団体用の広い部屋に通してくれた。

広い部屋にぽつーんといるとなんだか楽しいね。

八宝菜定食とかミニチャーハンとかどれも美味しかった!!

なるほど、ちゃんと美味しいからお客さんが来るのね。

また行きたい。