スクリプト/オーディオ
Music, Computing, Design Group at Stanford
新作無料 【リリース日】2018年5月25日
昔からあるオーディオプログラミング言語「ChucK」がUnityについに登場!
アセットストアで検索しても出てこない事から、おそらく唯一利用可能なアセットです。
音ゲー開発や、ベストタイミングで音を再生したりできそうな「ChucK」
何が出来るかについて具体的に知りたかったので挑戦する事にしました。
ChucK言語とは?
スタンフォード大学が開発した有名なオーディオプログラミング言語。
主にプログラミングで音を再生&キーボード&マウスで演奏、
MIDIの制御やマイクからの録音&再生などできます。
「ChucK言語」で検索するとかなり出てくるので、興味のある方は調べてみましょう。
Unityに移植されたもので、できる事も基本的に同じだと思います。
UnityでChucKを使ったデモ動画
Chunity: Audiovisual Programming in Unity on Vimeo(6:00)
※このデモはアセットに含まれてませんが、このアセットのサンプルデモです。
(アセットストアに掲載されてないけど、動画タイトル名を見る感じでは正式なもの)
参考サイトさま
Algorithmic Composition on ChucK on Vimeo(1:31)
テクノっぽいリズミカルなサウンドが面白い!
普通はシーケンスでMIDIを作曲したりしますが、
プロシージャルプログラミングで作曲されたミュージック。
これ聴いたらちょっと試してみたくなりますね!
ChucKプログラミングについて詳しいサイト様
データ型、配列、演算子、制御構文、時間制御、関数、コンカレンシー、Shred、
クラス、オブジェクトについて一般的な言語と比較して詳細に書かれていました。
最適限必要な基礎知識はここで素早く覚えよう!
C言語のようにポインタ参照「@」が出来たり、
値の代入が逆なのが新鮮でした。 3 => int foge;
インストール
アセットをインポートしたら、「1. INSTALL.txt」を読みましょう。
「Plugins」と「StreamingAssets」をトップレベルに移動してねとあるので移動します。
Unityを再起動したら完了です!
チュートリアル
「2. SETUP and TUTORIALS」に書かれていたサイト
http://chuck.stanford.edu/chunity/
特に↓がわかりやすい。
http://chuck.stanford.edu/chunity/tutorials/
何も無いシーンの状態から、画像付きで構築する手順を手取り足取り教えてくれます。
ブログで書き起こす必要も無さそうなので、Unityでゼロから組み立てる人はコチラをチェックしてください。
サンプルデモをプレイ
デモシーンは全部で17あります。
全部お伝えするのは時間がかかるので、数点ピックアップしました。
お知らせ
音関係のアセットですが、
画面に再生される音をキャプチャする環境やツールを整えてないので、
音が無くても「文字」で伝わるように記事を書きました。
実行中にChucKコードを構築(作曲)
RunCodeデモ:スペースバーを押すと、このデモはキューブを回転させ、RunCodeを使って短いChucKスクリプトを再生します。
スペースキーを押すと「ゴー!」のボイスが再生されて、Cubeがちょっとだけ回転します。
ソースコードを確認
オーディオプログラミング言語「ChucK」発見
// play a chuck script
myChuck.RunCode( @"
SndBuf buffy => dac;
""special:dope"" => buffy.read;
buffy.length() => now;
" );
「ChucK」知らない人にとっては意味不明。これはヤバいですね。
私も知らないので、ちょっと新鮮な気持ちになります。
参考サイト:ChucK - [Examples By Category]
とりあえず順に分解して調べていくことにしました。
sndbuf (file read/write/playback)
1「SndBuf」はファイルの読み込み。 dacにbuffyを入れる(ChucKは逆と覚えた)
2「special:dope」は、「buffy.read」ファイルの読み込み方式のモードやタイプを指定(dopeの意味は高品質っぽい意味合い)
※ダブルクオーテーションのネストが2回呼ばれていて大混乱!stringだから?
3「buffy.length() => now」は、音源の長さをnowに代入
4「先頭の@」は、ポインタの参照?
実行内容の予想
buffyを読み込んで、長さをnowに入れた。
どこで再生しているか不明ですが、読み込んだ時点で再生されるのかなと思います。
詳しくはチュートリアルをチェックしよう。
http://chuck.stanford.edu/chunity/tutorials/
音源が見つからない
Audioフォルダの「1」を指定していて、再生するとただのノイズ音。
AudioMixerでエフェクトを付けているのか謎。
定期的に再生する
定期的に「ボーボーボーボー」と音が鳴っていて、マウスカーソルを左右に移動するとペースを早くしたり遅くしたりできます。
時間更新をプログラミングで制御できるサンプルデモ。
タイムアドバンダーデモ:このスクリプトは、シーケンサーのように、定期的な「ビート」で継続的な時間更新をプログラムし、アニメートする方法を示しています。 左右マウスの位置がテンポに影響します。
実行中にChucKコードを構築(作曲)
コード文字列のデモ:これは実行時にその場でChucKコードを構築する方法の例です。 ゲームオブジェクトのコンポーネントで「My MIDI Notes」を修正してみてください。 (スペースバーを押す!)
スペースキーを押すと「ペロリン♫」と聞こえる1和音の音が鳴ります。
どうやら実行時に数値を変更すれば音がリアルタイムで変更できるみたいですね。
ゲームオブジェクト「Chunity Example: Construct Code String」
こちらのコンポーネントを参照せよ。
「My Midi Notes」を発見しました。
「ペロリン♫」でキーが4つ。
これを変更すれば音が変わるはず!
パラメータを変えてみた
Sizeを10にして、10個の音を再生。
数字はキーになっていて、1〜100辺りで入力すると、ファミコンっぽい音が作れました。
他もデモシーンによると、
グローバル変数の配列から参照したり、浮動小数点のfloatで再生することも可能です。
マイクにアクセスしてオウム返し
このシーンでは、PCのマイクに勝手にアクセスして録音が開始されるChucK言語です。
数秒遅延があってスピーカーから再生されるデモシーン。
マイクのデモ:ChucKコードで "adc"でマイクにアクセスします。 "TheChuck" ChuckMainInstanceにマイク名が指定されていない場合は、システムのデフォルトマイクが使用されます。
マウスの左クリックと位置で音を鳴らす
マウスの左クリックしたまま、左右に移動すると「ウイーーーンウィンイン」と音が鳴り続けて、位置で音階が変わるちょっと面白いデモ。
実行中はUnityエディタ外でも反応するため、ブラウザを操作しているときも音の制御が続きます。
マウスデモ:ChucKはUnityを経由せずにシステムのマウスに直接アクセスできます! 方法の例については、このゲームオブジェクトのコンポーネントを参照してください。 (クリックしたままにしてマウスカーソルを移動してください!)これで動かない場合は、スクリプト内のデバイス番号を変更してみてください。
キーボード版もありました。(MacbookProでは動作しない)
キーボードのデモ:ChucKはUnityを経由せずにシステムのキーボードに直接アクセスできます! 方法の例については、このゲームオブジェクトのコンポーネントを参照してください。 (キーを叩いてみてください!)これで動かない場合は、スクリプト内のデバイス番号を変更してみてください。
MIDIの再生
MIDIデモ:ChucKはUnityを経由せずにシステムのMIDIデバイスに直接アクセスできます。 方法の例については、このゲームオブジェクトのコンポーネントを参照してください。 (クリックしたままにしてマウスカーソルを移動してください!)これで動かない場合は、スクリプト内のデバイス番号を変更してみてください。 (MIDIキーボードなどのMIDIデバイスを接続する必要があります)
C#コード以外でもChucKスクリプトが実行できる
C#コードにChucKコードを挿入するのではなく、完全なChucKファイルとして実行することができます。
StreamingAssetsフォルダに.ckで配置することでアクセス可能になります。
ファイルデモを実行する:C#ファイルに直接ChucKコードを書きたくない場合は、StreamingAssetsフォルダにあるChucKファイルを実行することもできます。 方法の例については、このゲームオブジェクトのコンポーネントを参照してください。 (スペースバーを押してください!)StreamingAssetsフォルダがアセットフォルダの最上位にあることを確認してください!
まとめ
オーディオプログラミング言語の「ChucK」がついにUnityに移植されました。
昔のPCなどビープ音がマザーボードから再生されるあの音をプログラミングで組み立てられる様なアセットという事がわかりました。
あとは、マイクからの音の取り込みと再生、キーボード、マウスを楽器代わりにしたり、MIDIの再生など。
この辺り、ネットで「ChucK言語」で検索するとかなり出てくるので、何が出来るかについて理解しやすいアセットだと思います。
音ゲーには活用できない
シビアな再生タイミングが要求される音ゲーへの活用に関しては、アセット説明を読んだ時には使えそうな印象でしたが、どうやら間違いだったみたいです。
(まだ言い切れないので要調査)
芸術にも
人間の力では到底不可能な複雑な曲をプログラミングで再生したりできる。
No.2 Pulse (from Preludes for Piano Book 1) - Akihiko Matsumoto - YouTube(2:21)
音をちょっと特殊な言語でエンジョイして楽しむアセットだと思います。
アセット説明(機械翻訳)
Unity 2018.1.0以降のバージョンが必要
ChunityはUnity内でChucKプログラミング言語を使用するためのプラグインです!
ChucKは、リアルタイムの音声合成と音楽制作のためのプログラミング言語です。正確で表現力豊かなユニークな時間ベースの並行プログラミングモデル(「強力なタイミング」と呼んでいます)、動的な制御レート、およびコードをオンザフライで追加および変更する機能を提供します。さらに、ChucKはMIDI、OpenSoundControl、およびHIDデバイスをサポートしています。楽しく習得しやすく、作曲家、研究者、演奏家、ゲームデザイナーに、複雑なオーディオ合成/分析プログラムやリアルタイムのインタラクティブ音楽を作成して実験するための強力なプログラミングツールを提供します。
ChunityはChucKとUnityの間の橋です。これはUnityにネイティブオーディオプラグインとしてChucKを埋め込みます。また、ChucKのグローバル変数を使用してChucKとUnityの間で通信するためのツールも含まれています。 ChucKとUnityの間で整数、浮動小数点数、文字列、配列を渡すことができます。 ChucKでイベントを起動し、ChucKイベントを使用してUnityでコールバックを起動することもできます。これは、サンプルレベルまで正確なタイミングでUnityコードを呼び出すために使用できます。
ドキュメンテーション、チュートリアル、サンプルプロジェクト、Chunityを説明している元のNIME論文を含む、Chunityの詳細:
http://chuck.stanford.edu/chunity/
ChucKの一般的な使い方について詳しくは:
http://chuck.stanford.edu/
特に、ChucKファイル用の公式IDEであるminiAudicleをダウンロードしたい場合があります。 ChucKコードをUnity C#コードにインラインで書くこともできますので、これは必須ではありません。しかし、miniAudicleは構文の強調表示と、ChukKファイルをUnityとは独立して実行できるため、コードをより柔軟にテストすることができます。ここでminiAudicleをダウンロードしてください:
http://chuck.stanford.edu/release/
パブリッシャーのアセット(記録用)
【新サイト】アセット割引情報ベータ
$43.20 => 無料化 100%OFF!!
【過去ログ】無料アセット
【過去ログ】作者セール&注目アセット