LoginSignup
9
10

More than 5 years have passed since last update.

映像ポン出しできるようにしてみた

Last updated at Posted at 2016-02-07

舞台で映像を出す必要があって急遽作ってみました。

  • 金はない。映像オペレータもいない。ただしプロジェクタとmacbook airはある
  • 使う映像 6 + ストップ用に真っ黒の映像で計 7
  • 音響ポン出しPCのAbleton LiveからMIDI Noteでトリガー
  • macbook air本体の数字キー"0"~"6"でもトリガー
  • 早送り、巻き戻し、再生、ポーズ、再生/ポーズができる

こんなことがしたいのですが、ちょうどいいフリーウエアないですかね?ってみつかりませんでした。
お金を出せばいろいろあるんだけど...

何で作る?

入れてるけどさわってないソフトで使えそうなのは

  • pd
  • openframeworks
  • QuartzComposer

ちょっといじってみて何とかなりそうなのはQuartzComposerだけだったので、これに決定。

QuartzComposerの流儀

どこから手をつけていいものやら...ググったりしてわかったこと。
手順としては

  • patch libraryを開いて(cmd+return)必要なものをみつける。下の方の検索を使う。
  • ドラッグアンドドロップ
  • patch Inspector(cmd+I)で必要な設定をする
  • つなぐ

の繰り返し。
結果はviewer windowにすぐに出る。

patchには色分けがあって、

  • 紫:入力。ファイルとかキーボードとかMIDI INとか。
  • 黒:処理。いろいろ。複雑なことはJavascriptで書く。
  • 青:出力。Billboard(2D)とかSprite(3D)とか。

注意点としては

  • 最終的に出力につながっていない部分は処理されない。仕様だそうな。
  • Quicktimeで読めるファイルは使える。
  • しかし、Directory Scannerで拾えるのは.movだけ。
  • MIDI noteの表記が違う。QuartzComposerのC5は他のソフトではC3。

とりあえず動くものを作ってみた

スクリーンショット 2016-02-07 12.03.02.png
映像の入っているフォルダにこのコンポジションをいれて使います。

  • 同階層の.movをスキャンしてファイルリストにする
  • キーボードとMIDIからindexとresetとrateを作る
  • resetとrateをMovie Importerにわたす
  • indexでファイルを選び、URLをMovie Importerにわたす
  • ImageをBillboardにわたす

というようなことです。

図では見えない設定ですが、
DirectoryScanner:DirectoryLocation = "./"
MovieImporter:Asyncronous Modeにチェック
Billboard:Width =2
Javascriptの中味はこんなです。

/*
Special keywords for defining input and output key types:
__boolean, __index, __number, __string, __image, __structure, __virtual

Note that the function input arguments are read-only.
*/

var isPlaying = 1;

function (__number outIndex,
         __boolean outReset, 
         __number outRate) 
    main (__boolean inTrigger[7],
         __boolean inKeySpace,
         __boolean inKeySlash,
         __boolean inKeyUBar,
         __boolean inKeyComma,
         __boolean inKeyPeriod)
{ 
    result = new Object();
    var resetNStart = false;
    for(var i=0;i<7;i++){
        if(inTrigger[i] == true){

            result.outIndex = i;
            resetNStart = true;
            isPlaying = 1;
        };
    };

    if(inKeySpace) isPlaying = (isPlaying == 0) ? 1 : 0 ;
    if(inKeySlash) isPlaying = 1;
    if(inKeyUBar) isPlaying = 0;
    if(inKeyComma) {result.outRate = -2}
        else if(inKeyPeriod){result.outRate = 2}
        else{result.outRate = isPlaying};
    result.outReset = resetNStart;

    return result;
}

あとは ableton Liveからトリガーするようにして...
とりあえず映像をポン出しできるようになりました。しばらくはこれで。

ただし、これだと再生が始まるまでほんのちょっと時間がかかるし、時によって遅かったり早かったり一定しないので改良します。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10