2016年10月31日月曜日

アントマンとファンタスティックフォー(リブート)

■アントマン
MARVELモノなので若干気になっていたけど、設定的にどうもあんまり好きじゃないというか
小さくなるってどうなのよと思って最近までスルーしていたアントマン。

ようやく時間ができたので鑑賞。

ネットでの評判は意外と高く、「見るべき」的意見も多いのが納得できる内容。
お話し全体の構成やバランスがすごく良くて、見ていてダレないし楽しい。

主人公が小さくなるのでアクションもこぢんまりしちゃうのかしらと思ったけど、
思ったより派手なアクションが色々あって楽しかった。

敵の造形も流石MARVELという感じでイイ感じ!

随分期待外れに良かったのでした。

■ファンタスティックフォー(リブート)
リブート前のはDVDを買ったりするくらいまあまあ好きだったので、
こちらもちょっと遠慮がちだったのだけど時間ができたので鑑賞。

うーん、なるほど。このタッチで来ましたかという感じ。

ファンタスティックフォーの4人の活躍を見せるというよりは、なんでそうなったのかに
中心を置いた、若者の奮闘葛藤を描く青春モノ的映画になりました。

確かにこの方向性だとリブートする意味はあるけど、なんだろう、
MARVEL的な敵がいてそいつをやっつける的な動機が割と後半まで
ずーっと無いままなのであんまりグっと来なかった。

超人的能力が身に着きました、敵をやっつけました、じゃもう映画にならんのよね。

続編作る気マンマンなのが見えちゃうのも割と興ざめでした。

2016年10月28日金曜日

飲み会ごはん



飲み会のご飯は

結構な値段がかかるけど、

まあまあって事が多い。

今日もそんな感じ。

2016年10月22日土曜日

黄金セット

ラーメンとチャーハンと餃子。

この黄金セットの魅力といったら無いね。

大阪王将は餃子の王将に比べてチャーハンが美味しい。

餃子も悪くない。

豚骨ラーメンも意外とあっさりしてて、しょうがが効いてておいしかった。

2016年10月21日金曜日

MDX解析で色々3:ADPCM

いよいよFM音源部分がある程度鳴るようになってきたので、ADPCMに手をつけないわけには
いかないのでありました。

しかし、ZMS用のドライバを作っている時には、一度挫折した経験のあるADPCM。
今回こそは!という気持ちで取り組みました。

PDXのフォーマットは超簡単で、こんな感じ。

[ポインタ]l + [$0000]w + [長さ]w ×96
[PCMデータ]

なので、ADPCMのデータは割とすぐに取ってこれる。それをそのままサウンドドライバに渡し
てもギャリギャリとノイズが鳴るだけ。

ググってもADPCMの資料は書いてある事が難しくて、更にX68用の資料はほぼ無いに等しい。

うーむ、これは困った・・。

そこで、誰かの作ったソースコードを探す事に。

しばらく探すと、一個だけあった!!

X68用のADPCMデータをWAVに変換して吐き出してくれるソースコード。

それを解析して、15600hzのWAVを作る事は何とかできた。
時間かかったけど。

そのまま44100hzのドライバに渡すとまあ当然のように短く高い音が鳴るだけで、想定通り
ではない。ではどうやって周波数をアップサンプリングするのか。

ググったらこんなの出てきた。

各サンプルの後に  個の0を追加するということである。

wikipediaの「サンプリング周波数変換」から引用しました。

これ読んでびっくり!!ええ!?引き延ばして間にゼロを入れるの!?

これは流石に自分の波形弄り人生でもすごい違和感を覚えたので、引き延ばした後は
直前のデータをそのまま入れるというアップサンプリング方法を考える。
でも具体的なコードが思い浮かばない。結構何日も考えたけど思いつかず。

そしたらある日、夢の中で突然思いつく!超シンプルな方法を!!

朝起きて急いでコーディングしてみたら、鳴った!!ある程度想定通りの音が!!
すごいね~夢作曲とかあるけど、夢コーディング。プログラマの皆さんだったらふつうの事
かしら?

その考え方がこれ。

2.826923076923077 = 44100 / 15600

15600hzのデータを取ってくる時に、この数字で割って、intでキャストすると。
わー、結果だけ書くと超簡単やないかい!!何か恥ずかしいくらい簡単!!

そうすると44キロのデータになるという流れでした。

でもこの方法で引き延ばすと、高域にすごい変なシャカシャカが出るので、ローパスフィルタ
を通して鳴らすと中々イイ感じの音になりました。

こうしてMDXはある程度鳴らす事ができるようになったのでした・・。

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階にある奥まった中華屋さんへ。

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

なんと予想外!満員!!

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

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

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

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

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

また行きたい。