Programming

S98Player Ver. 0.2を作った

4年ほど前にFM音源のサウンドログを再生するアプリを作ったのですが,最近FM音源づいていてちょっとだけコードを修正したので公開します.機能は全く変わっておらず,使い勝手も悪いままですが....そして誰も使わないとは思いますが.アプリはこちらからどうぞ→S98Player0.2ダウンロード修正点は以下の通り.サンプリング周波数を44100Hzから55466Hzに変更.原音に近くなりました.S98v3のヘッダをもう少しきちんと読むように.UTF8,SJIS両方読めます.しかし基本的にOPNAのみの対応....10.5SDK上でコンパイルしたので10.5以降でしか動かないかも.OPNへの対応は,サウンドログファイルをもってないのでチェックできないんですよね.ま,基本的に自分用アプリなので問題ないんですけどね(無駄にiPhone向けに移植して一人楽しんでます).
Programming

続・FM音源の仕組みを視覚的に理解する

前回のエントリで簡単なFM音源もどきを作ったわけですが、どうも物足りなく感じたため(というか、なんとなく達成感がないというか...)、並列接続も可能な4オペレータ版を作成しました。そして、オペレータ接続アルゴリズムも8種類から選べるようにしました。単音しかなりませんが、機能的には、往年のYM-2203音源などと同じ程度のパラメータをいじれます(多少少ないんですが)。FM音源って?という方は、是非前エントリをご一読ください。ダウンロードアプリ:MacFM2_appダウンロードソース:MacFM2_sourceダウンロードとなります。使い方まぁ、大したことができないのは相変わらずですが...。右下のプルダウンメニューでアルゴリズムが選べますので、それを選ぶと各オペレータの接続アルゴリズムが変わります。用意した接続アルゴリズムは8種類で、これはYAMAHAのOPN系音源に準じています。接続アルゴリズムを選ぶと、プルダウンメニューの下に接続の模式図が現れますので、雰囲気はつかめるはずです。感想単純な直列だけだと「ふーん」ってな感じでしたが、並列もできるようになるとかなり音が「それっぽい」感じに...
Programming

FM音源の仕組みを視覚的に理解する

FM音源って知ってますか?今じゃ表立って耳にする機会も少ないですが、つい最近まで携帯電話の着メロなんかはこのFM音源を使ってました。「機械っぽい音」なんていわれるとまぁその通りではあるんですが、往年のNEC製PCなどで使われていたこともあり、独特な音にファンも少なからずいたりします。このFM音源、「FM(FrequencyModulation)」と名のつく通り「周波数変調」を利用して音を作っているのですが、これがイマイチよく分かりません。いや、Wikipediaの当該ページを見ると波形を導き出す式も載っていますし、それはそれで分かるんですが、その式をいくら見たところで「どんな音がするか」がよく分からない...。様々なサイトで「周波数変調は、扇風機の前で声を出すとあ"あ"あ"あ"あ"〜〜〜と音が変わるのと同じ原理です」なんて説明されていたりするのですが、この説明は周波数変調がわかっている人にしか理解できないものだと思うのです。...というわけで、式を見ても分からないなら手を動かせ、ということで、単純なFM音源を鳴らすプログラムを組んでみました。各オペレータの波形をリアルタイムに表示させて...
スポンサーリンク
CAN

On-vehicle movie overlaying vehicle information using CANUSB

Ioverlaidvariousvehicleinformation(i.e.speed,rpm,andsoon)extractedby CANUSB onmyon-vehiclemovie.HS-CANDataAtfirst,ItriedtouseinformationpostedbyMadox.NET,butunfortunatelyHS-CANDataextractedbymyRX-8looktotallydifferentfromMadox'sone.I'mnotsurewhytherearebigdifferences.ButonepossiblereasonisthatMadox'sRX-8isAT.MyRX-8is20075MTmodel.RPM:ID0x201,(data*256+data)/4VehicleSpeed(km/h):ID0x201,(data*256+data-10000)/100AccelThrottlePosition(0-255):ID0x201,dataHandBrake(on/off):ID0x212,(data&0x40)FootBrake(...
CAN

CAN + Quartz Composer + 車載動画 = PS4動画?

RX-8CANデータと車載動画を組み合わせてPS4的動画を作るCANデータを使った動画、もう少し派手めに...ということで、作ってみました。といっても、CANのデータからいちいち速度などの情報を手で入力していては日がくれてしまうので、それらを自動でレンダリングする術を考えなければなりません。今回は、QuartzComposerのカスタムパッチを作ることでCANログをQuartzComposerに取り込むことにしました。QuartzComposer?QuartzComposerは、いわゆるビジュアルプログラミング環境です。MacOSXの開発環境(無料)に同梱されています。これを使うと簡単にモーショングラフィクスを作成できるのですが、当然のことながらCANデータログを読み込んでくれるようなパッチはありませんので、それを自作することにしました。昔はカスタムパッチの作成手順は公開されていなかったので面倒でしたが、今はオフィシャルの情報をたどると簡単に作ることができます。Objective-C2.0のプロパティなどを使うことで、パッチのポートの宣言なども煩雑にならずにできるようになりました。Qu...
CAN

CANデータを見るプログラムを動画にしてみた

走行中のRX-8車内コンピュータデータを読み取ってみる先般のエントリにてRX-8のCANデータをグラフにしてみましたが、リアルタイム情報を車載動画にピクチャインピクチャとして重ね合わせた動画をつくり、ニコニコ動画にアップロードしました。今までは見る専門だったので、どの程度の方に見て頂けるかはまったく未知数でしたが、一日経たない間に300人以上の方に見て頂けたようで。人気動画とは比べものになりませんが、場末のブログにひっそり置いておくよりはよっぽど見て頂けるので嬉しいです。次はもう少し派手目に作ります。
Programming

iPhoneのSafariを使って走行中の道路名をtweetしてみた

というわけで、サーバに展開した国交省のデータを使って、実際にTwitterでつぶやくようなアプリを作ってみました。といっても、専用アプリを書くのは面倒なので、ひとまずはiPhoneのSafariからGPS情報をサーバに送りつぶやくようにしてみました。仕組みiPhoneのSafariは、JavaScriptを利用して現在位置を取得するGeolocationAPIに準拠しています。そこで、定期的にiPhoneから現在位置をサーバに投げてやり、サーバ側で道路名を解析してTwitterにツイートさせてやるような仕組みを作りました。iPhoneのSafariでGPS情報を扱う方法は、Ascii.jpのiPhoneのGPSをJavaScriptで操ろうという記事が参考になります。...というか、今回やったことはこの6ページ目にあるサンプル03をちょいといじっただけです。ここのソースコードにupdate関数があり、位置情報が更新された際に呼び出されます。結構これは頻繁に呼び出されるので、たとえば10分おきにサーバに情報を伝えたい、なんてときには、update関数の最後あたりにvarnow=newDa...
Programming

せっかくなので道路をGoogleMaps上にプロットする

前回のエントリで記したとおり、自分が道路上にいるかどうかを調べるためには、そもそも道路のデータを保持していなければなりません。このデータを使って地図上に高速道路や国道のラインをプロットすることが出来ます。最初、前回のエントリで作ったデモに組み込もうと思って試しにやってみたんですが、位置データが多すぎるため、blazedsを使って単純にサーバからクライアントにプッシュするとTomcatが落ちてしまいました...(たぶんシリアル化する時に落ちてる)。GoogleMapsAPIを調べてみると位置データをエンコード化して読み込ませるというオプションがあったので、サーバ側でデータをエンコードした上でクライアントにプッシュすることで、そちらを実装してみたらうまくいったので公開します。あ、そうそう、前回のデモでは関東圏だけしか動きませんでしたが、DBをアップデートしたので、今は日本全国調べられます。説明前回のデモに追加で実装したので、前回のサイト(停止しました)を訪れて同じように動かすだけです。前回は、地図中心点に道路があるかどうかを調べ、道路に名前がついていればその旨表示するだけでしたが、今回はそ...
Programming

緯度経度から、その場所を走っている道路名を調べる

うわー、これまたタイトルからしてニッチ(笑最近、「流行っている」と形容するのも恥ずかしいtwitterですが、「○○なう」などとつぶやいている人が結構見受けられます。「○○」にはその時訪れた場所だったり、その際やっている行動だったりが入るわけなんですが。これ、車の運転中にはできないですよね、危なくて。なので、つぶやきをそれっぽく自動化できないか考えてみた訳なんですが...。前回のエントリでは車の中を流れる各種データを取り出すことが出来たので、たとえば、エンジンを切らずに速度0が一定時間続いた回数をして「(ほぼ)信号待ちの回数」としてカウントし、「信号待ち100回目なう」などとつぶやくことは出来そうです。あるいは、制限速度を超えたら「現在XXkm/hで巡航中。○○県警かかってこいや」とつぶやくことも可能でしょう(よい子はまねしちゃいけません)。...ただまぁ、大がかりなわりにはあまり面白そうなつぶやきのネタにはならなそうですし、第一この設備が一般的ではないので、他の人にとっては「ふーん」程度であまり参考にならないです(自分で運転を解析するにはとても面白い情報なんですけどね)。そんなわけで...
CAN

CANUSBを使ってRX-8の各種データを取り出してみる

前回のエントリまで使っていたELM327チップですが、どうも全てのデータのログを取ろうとするとバッファが溢れてしまうようで...。ただせっかく乗りかかった船なので、CANUSBという代物を購入してRX-8のデータをリアルタイムに取り出してみることにしました。上記の画像においてグラフの意味は以下の通りです。赤 線:車速青 線:エンジン回転数紫 線:ラジエータ水温水色線:エアインテーク温度黄色線:アクセル開度赤領域:フットブレーキを踏んでいる青領域:クラッチが切れている緑領域:(高さに合わせて)ギアポジションCANはまぁここでは車内LANのようなものだと考えておけばいいと思います。自動車内のコンピュータとその他センサや計器類との間で情報をやり取りするときのプロトコルなのですが、特徴の一つはブロードキャストだということです。なので、OBD-IIのようにポーリングしてデータを取り出すのと違い、ネットワーク内を流れているデータであれば「盗み聞き」することができるため、車内コンピュータへの負荷が(おそらく)ありません。コンピュータに負荷がかかった場合にもおそらくフェイルセーフが働くとは思いますが、...
スポンサーリンク