sig-audio準備会#2 オーディオツールの作り方 超入門編
TRANSCRIPT
オーディオツールの作り方 超入門編
株式会社ヴァルハラゲームスタジオ 稲森崇史
IGDA日本 SIG-Audio準備会#2(2012.9.28)
自己紹介・株式会社ヴァルハラゲームスタジオ オーディオディレクター 兼 プログラマ
・フリーのオーディオツール作ってます - 公開サイト:http://inamons.com/
・CEDEC2012で講演しました - 今すぐ導入できるボイスファイルマネージメント SlideShare:http://www.slideshare.net/tak_ina/cedec2012
本日のおはなし・ツール作れるといいことあるよ!・初心者に立ちはだかる壁・処理内容を分解してみる・ツール作り実例
※ スライド・サンプルコードは公開しますので 概要をさらっと聞くのがオススメです
ツール作れるといいことあるよ!
※ サウンドクリエイターの場合
ツールで便利になるのはもちろんとして…
・モテる(主にサウンドの同僚に) ・プログラマとお話ができるようになる ・サウンドシステム仕様を組めるようになる ・プログラマになれる(させられる)
こんな副作用があります(たぶんいいこと!)
ツール作れるといいことあるよ!
初心者に立ちはだかる壁
初心者に立ちはだかる壁(1) モチベーションの維持 ・”作りたいものがある!” が何よりの原動力 - 日頃の不満を解消できるツール作りを目指す - プログラムを覚えるため、では長続きしない
・自分のために作ろう - 自分が使う前提で、やることを取捨選択
・周りの人にツールを見せて褒められよう - やる気がでて自信もつく!
初心者に立ちはだかる壁(2) プログラムは難しい? ・多少の適性と、後は慣れの問題 - 興味を持った時点でプログラマ適性はアリ ・本質は仕組みを考えること - プログラムはあくまで「手段」 - 仕組み実現のために「お約束(言語)」を覚える
・ググってコピペ、でいいじゃない - スマートでなくても動けばOK!
初心者に立ちはだかる壁(3) どうやって勉強すればいい? ・書籍、ネットともに情報は充実 - 「やりたいこと」の実現に必要なものから探す - 次に、必要な情報を理解するための勉強をする
・完成されたソースコードをいじるのが近道 - 公開プロジェクト・コードはたくさんある - 少しいじって挙動を見る、を繰り返す
・ツールの処理を小さい単位に分解して考える
処理内容を分解してみる
処理内容を分解してみる基本的なツールの処理の流れ
ユーザー
インターフェース
内部処理
(使う人)
(ツールウィンドウ)
(見えない部分)
1. クリック・キー入力などの操作
3. 適切な処理を呼び出す
4. 処理の結果を返す
5. 結果をユーザーに伝える
2. イベント発生EVENT!
処理内容を分解してみるインターフェース処理・インターフェース処理の分解 ・ファイルフォルダ表示 ・波形描画 ・独自ダイアログ ・ドラッグ&ドロップ対応 ・想定外の操作への対処 etc...
・実は最も調整に時間のかかる作業 - 難しいというよりも面倒くさい - 使い勝手や操作感に直結(ゲーム作りと同じ)
・ユーザーが我慢するという選択肢もアリ
処理内容を分解してみる内部処理・内部処理の分解 ・ファイル読み書き ・再生コントロール ・DSP処理 ・描画用バッファ作成 ・データ生成 etc...
・高い技術レベルを求められる部分もある - 困難なところは外部ライブラリを利用
・ファイル読み書きさえできれば色々いける
処理内容を分解してみる処理の分解ができたら・簡単な処理から習得&実装していく - 経験を積めば徐々に難しいこともこなせるように - どうしても厳しいところはアイデアで乗り越える!
・習得した技術(=処理方法)を組み合わせる - 手持ちの技術が増えると色々作れるようになる
ツール作り実例
開発環境(Windows向け・非商用利用なら無料) Visual C# Express Edition - Microsoft製のプログラム統合環境ツール - プログラム支援機能が超優秀! - ツールのインターフェースを作りやすい - C#言語(UnityやPlayStationMobileでも採用)
入手先:http://www.microsoft.com/ja-jp/dev/express/default.aspx
ツール作り実例
ツール作り実例開発環境(Windows向け・非商用利用なら無料) おすすめサウンドライブラリ (OSX、Linux版もあり) ・FMOD Ex ( http://www.fmod.org/ ) - ゲーム向けサウンドライブラリ(使用実績多数) - ゲームのサウンドシステムの勉強にもなる
・BASS Audio Library ( http://www.un4seen.com/ ) - 多くのフォーマットに対応 - エンコード・デコード・VST対応など機能豊富
ツール作り実例機能実装 1:再生と停止・PLAYボタン・STOPボタン・ボタンクリックイベント・再生&停止(SoundPlayer利用)
→サウンドプレイヤー
サンプル:http://inamons.com/lib/sigaudio-pre2/sample1_player.zip
ツール作り実例機能実装 2:WAVフォーマット解析WAVファイルのデータ構造バイナリエディタで開くとこんな感じデータ(16進数値) 16進数値を文字にして表示
ツール作り実例機能実装 2:WAVフォーマット解析WAVファイルのデータ構造 (色分け)
波形データ本体
RIFFヘッダフォーマット情報(チャンネル数・サンプルレート・ビットなど)
追加情報(※任意 この例ではループポイント)
ツール作り実例機能実装 2:WAVフォーマット解析・再生と停止・OPENボタン・フォーマット表示テキスト・ファイル選択ダイアログ・WAVフォーマット解析処理
→フォーマットビュワーサンプル:http://inamons.com/lib/sigaudio-pre2/sample2_formatviewer.zip
機能実装 3:波形の表示波形データの内容 (16ビット・モノラルの場合)
波形の振幅を-32768~32767までの65536段階で表現(16ビットの場合)
ツール作り実例
機能実装 3:波形の表示波形データの内容 (16ビット・モノラルの場合)
表示波形
ツール作り実例
波形データ本体
-2049
-7290-12372 -13328
-9655-4490
-579
2402
(実際の値)
ツール作り実例機能実装 3:波形の表示・再生と停止・フォーマット解析・波形データ取得処理・折れ線で波形を描画・一定範囲ごとの最大/最小値を つないで全体波形を描画
→波形ビュワーサンプル:http://inamons.com/lib/sigaudio-pre2/sample3_waveviewer.zip
ツール作り実例ここまでの機能の組み合わせ+α・再生と停止・フォーマット解析・波形の表示
+α = ?
ツール作り実例ここまでの機能の組み合わせ+α・再生と停止・フォーマット解析・波形の表示・ループポイント取得・ファイル書き出し・FMOD利用
→ループエディターサンプル:http://inamons.com/lib/sigaudio-pre2/sample4_loopeditor.zip
ツール作り実例さらに改良するなら・機能の拡張 - 多チャンネル対応 - ループアライメント設定(28サンプル刻みとか)・インターフェースの改良 - クリックでループポイントを指定 - ポジションバー表示、ズーム、スクロール
→後から少しづつ充実させよう!
まとめ
まとめ・ちょっとした利便性を求めて、 手持ちの技術とアイデアを組み合わせ、 周りの人に褒められつつ、 自分のペースでじっくり作りましょう!
・プログラムができるようになることで 新しい道が開けるかもしれません。
スライド・サンプルコードの公開先
・スライド http://www.slideshare.net/tak_ina/sigaudio2
・サンプルコード http://inamons.com/lib/sigaudio-pre2/
C#入門おすすめサイト・DOBON.NET http://dobon.net/vb/dotnet/index.html
・C# によるプログラミング入門 http://ufcpp.net/study/csharp/
・改訂版 C#入門 http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/
ありがとうございました!
Wall Paper BY Japonizer. http://wanokoto.net/japonizesWatch-Icon and Keybord-Icon BY Jack Cai. http://www.doublejdesign.co.uk/Heart-Icon BY princessang2644. http://princessang2644.deviantart.com/Book-Icon BY schollidesign. http://schollidesign.deviantart.com/Speaker-Icon BY Brsev. http://brsev.deviantart.com/