Programming

Music

Faustで作成したFM音源をJUCE経由でソフトシンセにする

以前の記事でFaustを使って2opのFM音源を作りましたが、周波数をスライダーを手でいじって音程が変わるというのはやっぱりちょっと寂しい…ということで、Audio Unitによるソフトウェア音源として利用できるようにします。MacであればGarageBandとかのDAWで読み込ませれば、鍵盤叩いて音を鳴らせるはず…。
Programming

FaustでFM音源の実装を試す

Faustとは Faust (Functional Audio Stream)は、サウンド合成とオーディオ処理のための関数型プログラミング言語です(サイトトップページの直訳)。ウェブ上のIDEで気楽に試せるほか、そのコードをC言語などに出力できるようです。 Qiitaのオーディオプログラミング言語Advent Calendar 2020という素晴らしい記事群を拝見し、何かいじってみたいなと思っていたのですが、ビジュアルプログラミング系のものよりはこういった言語の方が性に合ってそうなのと、環境構築せずにすぐにいじれそうなので、試してみることにしました。関数型言語はほとんど触ったことがないのですが。
CAN

RX-8リアルタイム情報をグラフを使ってもっと分かりやすく表示してみる

RX-8リアルタイム情報をグラフを使ってもっと分かりやすく表示してみる 前回の動画でアイドリング時の燃費について動画にしたわけですが、アイドリング時ってことで信号待ちばかりで見ている人には退屈な動画になってしまいました^^;そこで、きちんと走っているところを取り出して再編集。 ただ、単に再編集しても楽しくないのでグラフを一緒に載っけることにしました。これで、一瞬で数値が変わってしまうものでもいろいろ比較できます。
スポンサーリンク
CAN

RX-8車載動画にリアルタイム燃費情報を表示して懐具合に思いを馳せる

RX-8車載動画にリアルタイム燃費情報を表示して懐具合に思いを馳せる というわけで、今度はRX-8の燃料消費状況をモニターして、リアルタイムの燃費情報を車載動画に重ね合わせてみました。 吹かしたときに燃料を消費するのは体感的にも理解できるのですが、信号待ちなどアイドリング時にこれほどまでに燃料を使うのかと驚きました。百聞は一見にしかず、ですね。
Programming

S98Player for iPhoneを申請してみた

S98Playerのダウンロード数から見ても明らかに需要があるとは思えないiPhone版のS98Playerですが、思うところあってAppStoreへ申請しました。 現在ステータスがWaiting for Reviewの段階です。 上のスクリーンショットでは21日に申請となっていますが、その後バグが見つかって自分で再投稿したりしていることもあり、まだ審査は始まっていません。 Mac版と比べて、 ファイルリストに曲名や演奏時間などが出るイコライザが使えるループ再生が終了する際にきちんとフェードアウトするOPMも対応している複数音源を使うデータにも対応している(パン振りは対応してない) などの点から高機能です(誰も使わないだろうけど)。バックグラウンド再生にも当然ですが対応しています。 また、内部の構造を見なおして無駄をだいぶ省いたので、使用するメモリ量も減りました。 まぁS98ファイルなんて既に巷には出回っていませんから、「S98ナニソレ?」な人には今のところ全く恩恵はないと思います。 ただ、時間に余裕ができたら(来年あたり...?)iPad向けにFM音源用のシーケンサを作ろうと思ってい...
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 (Frequency Modulation)」と名のつく通り「周波数変調」を利用して音を作っているのですが、これがイマイチよく分かりません。いや、Wikipediaの当該ページを見ると波形を導き出す式も載っていますし、それはそれで分かるんですが、その式をいくら見たところで「どんな音がするか」がよく分からない...。 様々なサイトで「周波数変調は、扇風機の前で声を出すとあ"あ"あ"あ"あ"〜〜〜と音が変わるのと同じ原理です」なんて説明されていたりするのですが、この説明は周波数変調がわかっている人にしか理解できないものだと思うのです。 ...というわけで、式を見ても分からないなら手を動かせ、ということで、単純なFM音源を鳴らすプログラムを組んでみました。 各オペレータの波形をリアルタ...
CAN

On-vehicle movie overlaying vehicle information using CANUSB

I overlaid various vehicle information (i.e. speed, rpm, and so on) extracted by CANUSB on my on-vehicle movie. HS-CAN Data At first, I tried to use information posted byMadox.NET, but unfortunately HS-CAN Data extracted by my RX-8 look totally different from Madox's one. I'm not sure why there are big differences. But one possible reason is that Madox's RX-8 is AT. My RX-8 is 2007 5MT model. RPM: ID 0x201, (data * 256 + data) / 4Vehicle Speed(km/h): ID 0x201, (data * 256 + data - 10000) / 100Ac...
CAN

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

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