Your SlideShare is downloading. ×
ネコでもわかるインタラクティブサウンド20130706
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

ネコでもわかるインタラクティブサウンド20130706

1,691
views

Published on

2013-07-06福島ゲームジャム事前セミナーの資料です。 …

2013-07-06福島ゲームジャム事前セミナーの資料です。
サウンド制作の為の波形編集ソフト「Audacity」の使い方とインタラクティブサウンドの作り方をADX2LEを使って紹介します。

本日7/6ADX2LEのワークショップで使うデータ
http://www.adx2le.com/event/fgj2013.html

Published in: Education

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,691
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ネコでもわかる インタラクティブサウンド 田中孝 2013-07-06 1
  • 2. このワークショップでは • 波形編集(録音、加工、wav保存) • インタラクティブサウンドの設計(考え方) を紹介します。(サウンドの基本なので覚えておいて損はしません) • Unityスクリプトとかはやりません →他のワークショップ資料やゲームジャムで実践してもらえると良いのです が・・・ その前段階の導入として 2
  • 3. レジュメ サウンドデザインインタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb CRI Atom Craft ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力 • インタラクティブとは? 5分 • ツール紹介 5分 • Audacityで録音、加工、wav保存  20分 • インタラクティブサウンドを作ってみよう 20分 テルミンから学ぶ • チャレンジ(課題) 30分 簡単なアプリに音をつけてみる • 発表 15分 • まとめ これからのサウンドデザインに求められるもの 3
  • 4. インタラクティブとは? • インタラクティブ 対話、双方向 4
  • 5. 何と対話?双方向? • コンピュータと 5
  • 6. 何を使って? • 絵や動きやサウンドを使って 6
  • 7. ツール紹介 7
  • 8. • CRI Atom Craft ADX2LE OSC Player processing を使います。 サウンドデザインインタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb CRI Atom Craft ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力 プレーヤー プログラム デザイン13 2 8
  • 9. サウンドデザイン CRI Atom Craft • CRI Atom Craftを使って 音をデザインします • ADX2LEのサウンドオーサリング ツールです。 • 下のリンクからダウンロードサイトへ行けます http://www.adx2le.com/ ゲームジャムでも使うデザイン1 9
  • 10. • ADX2 OSC Player を使って 音を鳴らします。 • Unityで作られたADX2LEの プレーヤーアプリです。 • 下のリンク先にセットアップ方法 など解説あります サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /StremingAssets/ NewProject.acf CueSheet_0.acb http://www53.atwiki.jp/soundtasukeai/pages/24.html 今回のワークショップでのみ使うプレーヤー2 10
  • 11. • Processingを使って インタラクションを実現 します • Processingは電子アートとビジュアルデ ザインの為のプログラム言語です。 • 下のリンクからダウンロードサイトへ行けます インタラクションデザイン Processing ProcessingのoscP5 http://www.processing.org/ 今回のワークショップでのみ使うプログラム3 11
  • 12. • 波形素材 • 波形加工 波形素材4 波形加工5 12
  • 13. • 波形素材は ChipTuneのものを使用 • チップチューンは矩形波形や三角波形、 ノイズなどシンプルな波形集です。 • 下のリンクからダウンロードサイトへ行けます http://www.criware.jp/adx2/demo/download_j.php#chiptune ゲームジャムでも使ってOK波形素材4 13
  • 14. • 波形加工、録音、wav出力 は Audacityのものを使用 • チップチューンは矩形波形や三角波形、 ノイズなどシンプルな波形集です。 • 下のリンクからダウンロードサイトへ行けます http://audacity.sourceforge.net/ ゲームジャムでも使える波形加工5 14
  • 15. Audacityで録音、加工、wav保存 波形加工 15
  • 16. 録音 • Audacityを起動 • 赤いボタンを押す マイクの入力レベル 波形が記録される 波形加工 16
  • 17. 波形の表示調整 • 境界線をドラッグして高さ変更 波形加工 小さくしたり 大きくしたり 17
  • 18. 波形の表示調整 • ルーペで横方向の拡大縮小 波形加工 小さくしたり 大きくしたり 18
  • 19. ステレオをモノラルへ • いくつか録音されていたらややこしいので いらないものを「X」ボタンで閉じる メニューを選択 波形加工 マイクはモノラルマイクが多いので・・・ 19
  • 20. 波形の入らない部分カット • 入らない部分を範囲選択 波形加工 • ドラッグして選択 • Ctr+Xで選択した部 分がカットされる。 • Ctr+Vでペーストも 可能 20
  • 21. 音を大きくする • 正規化(ノーマライズ)する 波形加工 • 「エフェクト」メニューから「正規化...」を選択 • 音が大きくなる ←みたいな波形だとあまり大きくならない コンプレッサーなど使うと良い 21
  • 22. ピッチを変更 • 正規化(ノーマライズ)する 波形加工 • 「エフェクト」メニューから「ピッチの変更...」を選択 スライダーを右にす ると高く、左にする と低くなる 22
  • 23. 波形出力 • 正規化(ノーマライズ)する 波形加工 • 「ファイル」メニューから「書き出し...」を選択 • 「Format:」「WAV」で「Save」 23
  • 24. インタラクティブサウンドを 作ってみよう デザイン 24
  • 25. テルミンから学ぶ • テルミンはロシアのテルミン 博士が作った楽器で、 アンテナに手をかざすと音が 出て、かざし方によって変化 します。 • 楽器=インタラクティブ デザイン 25
  • 26. テルミンの仕組み • 右のアンテナに 近づくと音程が高く 離れると音程が低く なります。 • 左のアンテナに 近づくと音が小さく 離れると音が大きく なります。 デザイン 26
  • 27. データ作成 • ボリュームとピッチが インタラクティブに 変化する音を作ります。 サウンドデザインインタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb CRI Atom Craft ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力 デザイン1 27
  • 28. 音を鳴らすキューを作る • 再生すると三角波形が鳴るよう にする • 波形を追加して、キューにする • キューはADX2LEの音を再生する機能で す。 デザイン 28
  • 29. • CRI Atom Craft を起動 デザイン 29
  • 30. • 新規プロジェクト作成 1 2 デザイン 30
  • 31. • マテリアルへ 波形を追加 1 2 デザイン 波形素材 31
  • 32. • キュー作成 1 2 デザイン 32
  • 33. ボリュームつまみを再現 • ボリュームは縦で • 指揮者が腕を上げる高さに 合わせて変化するようにデ ザインする • AISACを使います • AISACはADX2LEの 音色パラメータをコントロールの為 の機能です。 デザイン 33
  • 34. • キュー選択 1 2 デザイン 34
  • 35. • +ボタン押し、AISACの追加...を選択 1 2 デザイン 35
  • 36. • 追加ボタンを押す 1 2 3 デザイン 36
  • 37. • グラフを右肩下がりにする 1 2 デザイン 37
  • 38. • 音を確認する 1 2 3 4 デザイン 38
  • 39. • ピッチ変化用を追加する • ピアノや弦楽器のようなイ メージでカーブをデザイン する • もう一つAISACを使います。 ピッチアンテナを再現 デザイン 39
  • 40. • +ボタン押し、AISACの追加...を選択 1 2 デザイン 40
  • 41. • ピッチに変更し、追加ボタンを押す 1 32 4 デザイン 41
  • 42. • グラフを右肩上がりにする 1 2 デザイン 42
  • 43. • 音を確認する 1 2 3 4 デザイン 43
  • 44. 2つのコントロールができました • ツール上でもある程度確認できますが、 2つを同時にコントロールする他のアプリで動かすた め、ツールからACF,ACBという インタラクティブサウンドの元になるデータを出力し ます。 44
  • 45. 「パディング使用フラグのチェックを外す 後でインゲームプレビューで波形追加などを行うため 以下の操作をしておきます。 • キューシートフォルダを選択 • 「パディング使...」のチェックを外しグレーにする 1 2 45
  • 46. • +ボタン押し、チェック確認、ビルド 1 2 3 4 5 46
  • 47. • キューシートを右クリックし、 「Atomキューシートバイナリ出力先フォルダをエクスプローラで開 く...」を選択 1 2 3 • acf、acbが作成されているのを確認 47
  • 48. ACF、ACBを利用する • CRI Atom Craftの データを ADX2LE OSC Player で再生する サウンドデザインインタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb CRI Atom Craft ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力 1 2 プレーヤー デザイン1 2 48
  • 49. • ADX2LE OSC Playerを起動 • ブロックを解除する • 起動する プレーヤー 49
  • 50. ファイルをコピーする ファイルコピー 50
  • 51. • バッチを実行する C:ADX2LE_WorkshopAtomCraftDatacopy.bat • ACF,ACBファイルをコ ピーしました。 ファイルコピー C:ドライブにADX2LE_Workshopを 展開していないと正しく動作しないので 注意 51
  • 52. • ADX2LEOSCBasicPlayer_Dataを開く • StreamingAssetsを開く • ACB、ACFを差し替える 1 2 4 3 • 先ほど ツールで出力したフォルダから inGamePreviewを開く 【参考】もしも手動でやる場合は以下のよう な手順になります。 ファイルコピー プレーヤー デザイン デザイン 52
  • 53. • ADX2LE OSC Playerの「Panic!」ボタンを押す • 0:tri(キュー名)に変化していたらOK 2 1 プレーヤー 53
  • 54. • 「♪」を押すと音が鳴る、「■」で停止 • 真ん中のスライダーでピッチが変わる • 左のスライダーで音量が変わる 1 2 3 4 プレーヤー 54
  • 55. • いちいちバッチを実行するのは面倒なので、 ビルド時に呼び出すようにします。 2 1 3 4 5 ファイルコピー 55
  • 56. もっと直感的に • プレーヤーでも2つコントロールができましたが、 同時にコントロールしたいので、 マウスの位置(たて、よこ座標)が反応するような、 簡単なプログラムを用意しました。 • サウンドデザインする上で簡単なプロトタイプを作 ると ります。 プログラムからどんな風にコントロールされるか理 解を深めると、データ作成に有利な点が見つかるか もしれません。 動作確認用のシンプルなもの 56
  • 57. 音以外のインタラクションを作る • processingで インタラクティブ サウンドを コントロールします。 サウンドデザインインタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb CRI Atom Craft ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力 プログラム3 57
  • 58. • proessingが起動します • sketch_AISACXY.pdeを開く 1 2 3 •  を押して実行 •  を押して停止 58
  • 59. import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; void setup() { size(480,240); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int mouseState = 0; void draw() { background(204); if(mousePressed) { if(mouseState == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0"); oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } mouseState = 1; } } else { mouseState = 0; } if(playerState == 0){ } else { OscMessage myMessage    = new OscMessage("/adx2/0/aisac 0 "+mouseX/480f); oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f)); oscP5.send(myMessage, myRemoteLocation); ellipse(mouseX,mouseY,60,60); } } 描画処理 ウィンドウを480x240で表示 背景を204色(グレー)で 楕円60x60をマウスの位置に表示 1 2 3 プログラム 59
  • 60. import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; void setup() { size(480,240); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int mouseState = 0; void draw() { background(204); if(mousePressed) { if(mouseState == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0"); oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } mouseState = 1; } } else { mouseState = 0; } if(playerState == 0){ } else { OscMessage myMessage    = new OscMessage("/adx2/0/aisac 0 "+mouseX/480f); oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f)); oscP5.send(myMessage, myRemoteLocation); ellipse(mouseX,mouseY,60,60); } } プログラムの流れ 起動直後一度呼ばれる 描画は毎度呼ばれる 1 2 プログラム 60
  • 61. import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; void setup() { size(480,240); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int mouseState = 0; void draw() { background(204); if(mousePressed) { if(mouseState == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0"); oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } mouseState = 1; } } else { mouseState = 0; } if(playerState == 0){ } else { OscMessage myMessage    = new OscMessage("/adx2/0/aisac 0 "+mouseX/480f); oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f)); oscP5.send(myMessage, myRemoteLocation); ellipse(mouseX,mouseY,60,60); } } 通信処理 OSCインポート OSCアドレスをセット 再生メッセージ 停止メッセージ AISAC0メッセージ AISAC1メッセージ 1 3 2 4 プログラム 61
  • 62. import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; void setup() { size(480,240); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int mouseState = 0; void draw() { background(204); if(mousePressed) { if(mouseState == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0"); oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } mouseState = 1; } } else { mouseState = 0; } if(playerState == 0){ } else { OscMessage myMessage    = new OscMessage("/adx2/0/aisac 0 "+mouseX/480f); oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f)); oscP5.send(myMessage, myRemoteLocation); ellipse(mouseX,mouseY,60,60); } } 判定の処理 マウス押されたら 再生中なら 再生中かどうか マウス状態 1 2 3 プログラム 62
  • 63. チャレンジ(課題) • 内容: 絵にあった変化を音に加えてみる。 • どちらか好きなものを選んで音をデザインしてみる。 • 分からない事があれば、質問も受け付けます。 63
  • 64. • 内容:どんな音の変化があるか動かしながら考えてみる。 • ヒント:残響を増やすにはバスセンドを使う • ヒント2:バスセンドは閉じるのみのコントロール • C:ADX2LE_WorkshopprocessingSample sketch_test1 sketch_test1.pde 64
  • 65. • どんな音の変化があるか動かしながら考えてみる。 • ヒント: 2つの音をクロスフェードするにはボリュームを使う • C:ADX2LE_WorkshopprocessingSample sketch_test2sketch_test2.pde 65
  • 66. インゲームプレビュー • 【インゲームプレビュー】とは、 ツール側で音を加工、編集した結果を 【実行中のゲーム】に送信し、 音を即時に差し替える技術です。 • ゲームを中断させる事なく音の加工を反映させる事ができ るため、非常に細かい微調整が可能です。 インゲーム接続 66 デザイン 66
  • 67. インゲームプレビューの開始 【F10キー】を押す または、【プレビューメニュー】から【インゲームプレビューの開始】を選択 発音数やCPU%が変化していれば 接続OK 67 デザイン 67
  • 68. これからのサウンドデザインに 求められるもの • 楽器や身の周りの音のなるも のも デザインの参考になります。 • なぜ、その音が鳴っているの か? どう変化するのか? 意識してみます。 68
  • 69. シンプルである事 • なるべく少ない操作 で、最大の効果を求め ます。 • 演奏しやすいインタラ クティブサウンドを デザインする事が良い です。 • 難しいと練習(ルール 設定)が必要になる 69
  • 70. 音はこだわるべき • めっちゃ【凝って】良い。 • こだわりを捨てずに • 気持ちよい音を探求する。 • それが面白さや、楽しさに繋がる。 70
  • 71. サウンドデザインで リッチに! • シンプル プログラマを困らせな い • 分かりやすさ 効果的か、理論的か 客観的に判断 • サウンドデザイン • ADX2を使うと楽にデ ザインできます。 71
  • 72. サウンドゲームジャムあります • 2013年10月頃(土日)にサウンドゲームジャム あります。 • 見学も可能です。UnityでのADX2LEの実例が見れま す。 • 詳しくはADX2LE.comで 72