sig-audio準備会#2 オーディオツールの作り方 超入門編

33
オーディオツールの作り方 超入門編 株式会社ヴァルハラゲームスタジオ 稲森崇史 IGDA日本 SIG-Audio準備会#2(2012.9.28)

Upload: takafumi-inamori

Post on 31-May-2015

2.541 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

オーディオツールの作り方 超入門編

株式会社ヴァルハラゲームスタジオ 稲森崇史

IGDA日本 SIG-Audio準備会#2(2012.9.28)

Page 2: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

自己紹介・株式会社ヴァルハラゲームスタジオ オーディオディレクター 兼 プログラマ

・フリーのオーディオツール作ってます - 公開サイト:http://inamons.com/

・CEDEC2012で講演しました - 今すぐ導入できるボイスファイルマネージメント SlideShare:http://www.slideshare.net/tak_ina/cedec2012

Page 3: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

本日のおはなし・ツール作れるといいことあるよ!・初心者に立ちはだかる壁・処理内容を分解してみる・ツール作り実例

※ スライド・サンプルコードは公開しますので 概要をさらっと聞くのがオススメです

Page 4: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作れるといいことあるよ!

Page 5: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

※ サウンドクリエイターの場合

ツールで便利になるのはもちろんとして…

・モテる(主にサウンドの同僚に) ・プログラマとお話ができるようになる ・サウンドシステム仕様を組めるようになる ・プログラマになれる(させられる)

こんな副作用があります(たぶんいいこと!)

ツール作れるといいことあるよ!

Page 6: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

初心者に立ちはだかる壁

Page 7: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

初心者に立ちはだかる壁(1) モチベーションの維持 ・”作りたいものがある!” が何よりの原動力 - 日頃の不満を解消できるツール作りを目指す - プログラムを覚えるため、では長続きしない

・自分のために作ろう - 自分が使う前提で、やることを取捨選択

・周りの人にツールを見せて褒められよう - やる気がでて自信もつく!

Page 8: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

初心者に立ちはだかる壁(2) プログラムは難しい? ・多少の適性と、後は慣れの問題 - 興味を持った時点でプログラマ適性はアリ ・本質は仕組みを考えること - プログラムはあくまで「手段」 - 仕組み実現のために「お約束(言語)」を覚える

・ググってコピペ、でいいじゃない - スマートでなくても動けばOK!

Page 9: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

初心者に立ちはだかる壁(3) どうやって勉強すればいい? ・書籍、ネットともに情報は充実 - 「やりたいこと」の実現に必要なものから探す - 次に、必要な情報を理解するための勉強をする

・完成されたソースコードをいじるのが近道 - 公開プロジェクト・コードはたくさんある - 少しいじって挙動を見る、を繰り返す

・ツールの処理を小さい単位に分解して考える

Page 10: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

処理内容を分解してみる

Page 11: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

処理内容を分解してみる基本的なツールの処理の流れ

ユーザー

インターフェース

内部処理

(使う人)

(ツールウィンドウ)

(見えない部分)

1. クリック・キー入力などの操作

3. 適切な処理を呼び出す

4. 処理の結果を返す

5. 結果をユーザーに伝える

2. イベント発生EVENT!

Page 12: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

処理内容を分解してみるインターフェース処理・インターフェース処理の分解 ・ファイルフォルダ表示 ・波形描画 ・独自ダイアログ ・ドラッグ&ドロップ対応 ・想定外の操作への対処 etc...

・実は最も調整に時間のかかる作業 - 難しいというよりも面倒くさい - 使い勝手や操作感に直結(ゲーム作りと同じ)

・ユーザーが我慢するという選択肢もアリ

Page 13: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

処理内容を分解してみる内部処理・内部処理の分解 ・ファイル読み書き ・再生コントロール ・DSP処理 ・描画用バッファ作成 ・データ生成 etc...

・高い技術レベルを求められる部分もある - 困難なところは外部ライブラリを利用

・ファイル読み書きさえできれば色々いける

Page 14: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

処理内容を分解してみる処理の分解ができたら・簡単な処理から習得&実装していく - 経験を積めば徐々に難しいこともこなせるように - どうしても厳しいところはアイデアで乗り越える!

・習得した技術(=処理方法)を組み合わせる - 手持ちの技術が増えると色々作れるようになる

Page 15: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例

Page 16: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

開発環境(Windows向け・非商用利用なら無料) Visual C# Express Edition - Microsoft製のプログラム統合環境ツール - プログラム支援機能が超優秀! - ツールのインターフェースを作りやすい - C#言語(UnityやPlayStationMobileでも採用)

入手先:http://www.microsoft.com/ja-jp/dev/express/default.aspx

ツール作り実例

Page 17: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例開発環境(Windows向け・非商用利用なら無料) おすすめサウンドライブラリ (OSX、Linux版もあり) ・FMOD Ex ( http://www.fmod.org/ ) - ゲーム向けサウンドライブラリ(使用実績多数) - ゲームのサウンドシステムの勉強にもなる

・BASS Audio Library ( http://www.un4seen.com/ ) - 多くのフォーマットに対応 - エンコード・デコード・VST対応など機能豊富

Page 18: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例機能実装 1:再生と停止・PLAYボタン・STOPボタン・ボタンクリックイベント・再生&停止(SoundPlayer利用)

→サウンドプレイヤー

サンプル:http://inamons.com/lib/sigaudio-pre2/sample1_player.zip

Page 19: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例機能実装 2:WAVフォーマット解析WAVファイルのデータ構造バイナリエディタで開くとこんな感じデータ(16進数値) 16進数値を文字にして表示

Page 20: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例機能実装 2:WAVフォーマット解析WAVファイルのデータ構造 (色分け)

波形データ本体

RIFFヘッダフォーマット情報(チャンネル数・サンプルレート・ビットなど)

追加情報(※任意 この例ではループポイント)

Page 21: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例機能実装 2:WAVフォーマット解析・再生と停止・OPENボタン・フォーマット表示テキスト・ファイル選択ダイアログ・WAVフォーマット解析処理

→フォーマットビュワーサンプル:http://inamons.com/lib/sigaudio-pre2/sample2_formatviewer.zip

Page 22: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

機能実装 3:波形の表示波形データの内容 (16ビット・モノラルの場合)

波形の振幅を-32768~32767までの65536段階で表現(16ビットの場合)

ツール作り実例

Page 23: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

機能実装 3:波形の表示波形データの内容 (16ビット・モノラルの場合)

表示波形

ツール作り実例

波形データ本体

-2049

-7290-12372 -13328

-9655-4490

-579

2402

(実際の値)

Page 24: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例機能実装 3:波形の表示・再生と停止・フォーマット解析・波形データ取得処理・折れ線で波形を描画・一定範囲ごとの最大/最小値を つないで全体波形を描画

→波形ビュワーサンプル:http://inamons.com/lib/sigaudio-pre2/sample3_waveviewer.zip

Page 25: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例ここまでの機能の組み合わせ+α・再生と停止・フォーマット解析・波形の表示

+α = ?

Page 26: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例ここまでの機能の組み合わせ+α・再生と停止・フォーマット解析・波形の表示・ループポイント取得・ファイル書き出し・FMOD利用

→ループエディターサンプル:http://inamons.com/lib/sigaudio-pre2/sample4_loopeditor.zip

Page 27: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ツール作り実例さらに改良するなら・機能の拡張 - 多チャンネル対応 - ループアライメント設定(28サンプル刻みとか)・インターフェースの改良 - クリックでループポイントを指定 - ポジションバー表示、ズーム、スクロール

→後から少しづつ充実させよう!

Page 28: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

まとめ

Page 29: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

まとめ・ちょっとした利便性を求めて、 手持ちの技術とアイデアを組み合わせ、 周りの人に褒められつつ、 自分のペースでじっくり作りましょう!

・プログラムができるようになることで 新しい道が開けるかもしれません。

Page 30: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

スライド・サンプルコードの公開先

・スライド http://www.slideshare.net/tak_ina/sigaudio2

・サンプルコード http://inamons.com/lib/sigaudio-pre2/

Page 31: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

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/

Page 32: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

ありがとうございました!

Page 33: SIG-Audio準備会#2 オーディオツールの作り方 超入門編

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/