Browse by type
このプロジェクトを自由にお使いいただく、もしくはお知り合いの方々に送っていただいても大丈夫です。ただし、2月8日までの間は大々的な公開をするのはお控えいただけますよう、お願いいたします。
Durationはタイムラインに沿って、値の変化をコントロールします。シンプルな1画面のインターフェースを備えたクロスプラットフォームのスタンドアローンアプリケーションで、複数のトラックを使ってタイムライン編集をする事ができます。
このアプリケーションによるタイムラインからの値はOSCによって送信されます。また、外部からのOSCメッセージで、アプリケーションを操作する事も可能です。

Durationはオープンソースで公開されています。ご自分のアート作品制作や、リサーチ活動、またコマーシャルなプロジェクトにおいても完全にフリーで使うことが出来ます。このプロジェクトはopenFrameworksを使用して作られており、そのライセンスの形体やシェアに関しての考え方を引き継いでいます。
Durationをダウンロードする:
Mac OS X 10.6+ https://github.com/downloads/YCAMInterlab/Duration/Duration_OSX_002_preRelease.zip
Windows XP and 7 https://github.com/downloads/YCAMInterlab/Duration/Duration_Windows_002_preRelease.zip
Windows用ソースコード(VC2010)と、Mac用ソースコード(XCode 4.4) https://github.com/downloads/YCAMInterlab/Duration/Duration_preRelease_002_Source_MacWndows.zip
Windowsユーザーの方はMSVC++ Runtimeのインストールが必要になる場合があります。 http://www.microsoft.com/en-us/download/details.aspx?id=5555
Readmeを読む時間がありませんか?最新の紹介映像がここにあります。 https://vimeo.com/47504220 password: duration
Durationのプロジェクトファイルはトラックのデータと、インターフェースの設定だけで構成されています。それらのデータは.xmlファイルと、トラック名と設定を含む.durationprojファイルの形式で保存されます。
Durationは、~/Documents/Durationフォルダにあるプロジェクトファイルを見るように設定されています。ここに保存されたプロジェクトはアプリケーション内のドロップダウンメニュー内で表示されます。このフォルダ内でなくともプロジェクトファイルを保存しておく事は可能ですが、その場合はどこに保存したのか覚えておく必要があるでしょう。
トラックはDurationの全てだと言えるでしょう。トラックを自分のプロジェクトに追加するには、「トラックを追加する」もしくは「Add Track」と書かれたドロップダウンからトラックのタイプを選択します。 すると指定したタイプのトラックが追加されます。トラックのヘッダ部分に書かれているトラック名をクリックして、トラックに名前をつけてください。この名前はDurationから送信される全てのOSCメッセージに使用されます。つまり、トラック名は同時にOSCのアドレスとしての意味を持ちます。複数のトラックで同じ名前を使用する事も出来ますが、受信をする側のアプリケーションの処理を難しくしてしまうかもしれません。
トラックの名称の部分にメッセージのルーティング情報を入れるのも一般的です。例えば/mytrack/position/xなどは良いトラック名だと言えるでしょう。もし、トラック名の先頭にスラッシュを付け忘れても、Durationは送信時に付加して送信します。トラックは、トラック名のずっと右側にある削除ボタンをクリックし、確認をすることで削除する事ができます。
Durationは標準で6つのタイプのトラックを使用する事が可能です。それぞれのトラックでは、キーフレームを使って、任意の特定の時間での値や振る舞いを指定します。キーフレーム間の値がどのようにスムーズに補完されるか、をキーフレームごとに指定する事が可能です。
バンは最もシンプルなトラックで、再生ヘッドがそれぞれのキーフレームを通過するときに、一度だけパラメータの無いbangメッセージを送信します。
フラグはbangsに似ていますが、各メッセージにテキストを付けて送信する事が可能です。
スイッチはトラック中のエリアごとにON/OFFの指定をする事が出来ます。再生ヘッドがON/OFFが切り替わる部分を通過する際に、メッセージが送信されます。
カーブを使うと、指定した最小値と最大値の間で値をスムーズに変化させる事が出来ます。キーフレームを右クリックするとメニューが表示され、キーフレーム間の補完方法を指定する事が出来ます。
カラートラックでは、色のサンプルパレットとして画像を使用し、時間の経過に従ってスムーズに色を変化させる事が出来ます。各キーフレームでは画像パレット中の、色をサンプルする位置を指定します。キーフレーム間では、画像パレット内で色のサンプル位置が移動していくことで、滑らかに色が変化します。
(実験段階の機能で、OSXのみをサポートしています)
オーディオトラックを使用すると、トラック内に音の波形を表示し、他のトラックと同期してオーディオを再生する事が可能です。現状、一つのプロジェクト内では一つのオーディオトラックのみが使用可能です。また、プロジェクトの全長はオーディオトラックの長さと同じである必要があります。
全てのプロジェクトはある決まった長さを持ちます。その長さを変更するには、画面上部、再生ヘッドの現在時刻が表示されている部分の下に表示されている時間(これがプロジェクトの長さです)をクリックし、新しい長さを入力します。入力する長さの値は、必ずタイムコードのフォーマット、HH:MM:SS:MILS(HH:時間、MM:分、SS:秒、MILS:ミリ秒)で書かれていなければなりません。プロジェクトの長さを短くすると、新しい長さに収まらないキーフレームがカットされてしまう事があります。
イン点とアウト点を設定すると、全体のシーケンスの中の、指定した場所のみを再生する事が可能です。iとoのホットキーを使用してイン点とアウト点を設定し、再生範囲を指定しましょう。もしくは時間の目盛りのすぐ下の部分をドラッグする事でもイン点とアウト点の指定が可能です。Altキー+i、Altキー+oで現在のinとoutを削除する事も出来ます。
Durationでは、BPMの値に連動した基本的な4/4拍子のガイドを表示する事が出来ます。これを使う事でキーフレームを1/4毎のガイドに正確にスナップさせる事が出来ます。BPMを変更するには、表示されているBPMの数値をドラッグします。
ノート:より複雑なガイドの表示は、将来的なアップデートの中で計画されています。
Durationウィンドウの右上の部分で、OSCの送受信に関しての設定を行う事が出来ます。受信に使用するネットワークポートと送信先のネットワークアドレス、送信に使用するネットワークポートを指定します。それぞれのトラックのヘッダー部分にあるトグルスイッチを用いる事で、トラックごとに独立してOSCの送信受信を行うかどうかを指定する事ができます。
| 機能 | ショートカット |
| 再生/停止 | スペース |
| 保存 | command+s |
| 選択項目をカット | command+x |
| 選択項目をコピー | command+c |
| 選択項目を貼付け | command+v |
| 一つ戻る | command+z |
| やり直し | shift+command+z |
| イン点を設定 | i |
| アウト点を設定 | o |
| イン点をクリア | alt+i |
| アウト点をクリア | alt+o |
| 選択したトラックの全キーフレームを選択 | command+a |
| 選択したトラックの全キーフレームを選択項目に追加 | command+shift+a |
| 選択された全てのキーフレームを削除 | deleteもしくはbackspace |
| キーフレームを少しずつ動かす | 矢印キー |
| キーフレームをもう少しずつ動かす | shift+矢印キー |
Durationは単体で使用してもあまり役に立ちません。ですので是非、OSCを使用して他のリアルタイムの環境と接続してみましょう。
Durationは、その全てのデータをバンドルされたOSCで送信します。値が変化したときには常に更新された値を送信します(単に編集中に値が変化したときでも、再生されている時も、常にです)。OSCメッセージは次のようなフォーマットになっています。
/track/display/name <アーギュメント(値)>
トラックはそれぞれタイプごとに異なるアーギュメントを必要とします。
| トラックのタイプ | アーギュメント |
| バン/Bangs | アーギュメントはありません |
| フラグ/Frags | フラグごとのテキストとして1つの文字列(空白でも可) |
| スイッチ/Switch | 1つのInt32の値。1/0の値をとり、それぞれON/OFFを表します。 |
| カーブ/Curves | 再生ヘッド上のカーブの値として、1つのFloatの値。値は設定した最大値と最小値の間になります。 |
| カラー/Color | 3つのInt32の値。それぞれ赤、緑、青を表し、0から255の間の値になります。 |
Durationは、新しいプロジェクトが読み込まれたり、もしくは再生が始まる時に/duration/info というアドレスで、現在のプロジェクトの全てのトラックに関する情報を含んだメッセージを送信します。メッセージのトラック情報は、一つのカーブトラックにつき4つのアーギュメント、他のタイプのトラック1つにつき2つのアーギュメントで構成されます。最初のアーギュメントは常にトラックタイプを表す文字列です。二つ目はトラックのヘッダーに表示されているトラック名になります(これは常にそのトラックから送信されるOSCのアドレスと一致します)。カーブトラックには、そこにさらに2つのアーギュメントが続いて、それぞれ、そのカーブトラックで指定された最小値と最大値を表すfloatの値です。
2つのカラートラックと一つのカーブトラック、さらに一つのフラグトラックを含むプロジェクトでは、このメッセージは次の様になります。
/duration/info Colors /colortrack_one Colors /colortrack_two Curves /accelerate -1.5 2.0 Flags /flagtrack
Durationは、常にOSCインプットからのメッセージを使って操作出来る状態にあります。
| コマンド | OSCアドレス | アーギュメント | 説明 |
| 新規プロジェクト | /duration/new | プロジェクトのパス(String) | "プロジェクトのパス"で指定した場所に新しいプロジェクトを作成して開きます。それまでに作成していたプロジェクトは保存されません。スラッシュが先頭についている場合、絶対パスでの指定になります。そうでない場合は~/Documents/Durationからの相対パスでの指定になります。 |
| プロジェクトを開く | /duration/open | プロジェクトのパス(String) | "プロジェクトのパス"で指定したプロジェクトを開きます。それまでに作成していたプロジェクトは保存されません。スラッシュが先頭についている場合、絶対パスでの指定になります。そうでない場合は~/Documents/Durationからの相対パスでの指定になります。 |
| プロジェクトを保存する | /duration/save | - | 現在のプロジェクトに変更された全てを保存します。 |
| 再生を開始する | /duration/play | - | プロジェクトが既に再生している場合は特になにもしません。再生が開始されると/duration/infoメッセージが送信されます。 |
| 再生を停止する | /duration/stop | - | 既に再生が止まっている場合は、再生ヘッドがシーケンスの先頭位置に移動します。 |
| プロジェクトの長さを設定する | /duration/setduration | 秒(Float) | 現在のプロジェクトの長さを、指定した秒数にします。もし指定した長さが現在の長さよりも短い場合、それ以降にあった値が消えてしまう事があります。 |
| プロジェクトの長さを設定する | /duration/setduration | ミリ秒(Int) | 現在のプロジェクトの長さを、指定したミリ秒の長さにします。もし指定した長さが現在の長さよりも短い場合、それ以降にあった値が消えてしまう事があります。 |
| プロジェクトの長さを設定する | /duration/setduration | タイムコード(String) | 現在のプロジェクトの長さを、HH:MM:SS:MILSのフォーマットで指定したタイムコードの長さにします。もし指定した長さが現在の長さよりも短い場合、それ以降にあった値が消えてしまう事があります。 |
| 移動 | /duration/seektoposition | ポジション(Float) | 再生ヘッドの位置を0から1.0の間の値でセットします。 |
| 移動 | /duration/seektosecond | 秒(Float) | 再生ヘッドの位置を、指定した秒の位置に移動します。 |
| 移動 | /duration/seektomillis | ミリ秒(Int) | 再生ヘッドの位置を、指定したミリ秒の位置に移動します。 |
| 移動 | /duration/seektotimecode | タイムコード(String) | 再生ヘッドの位置を、HH:MM:SS:MILSで指定したタイムコードの位置に移動します。 |
| OSCの受信を有効/無効化する | /duration/enableoscin | 有効/無効(Int) | 1でOSC入力を有効化、0で無効化します。無効化する場合、これがDurationに送る最後のメッセージになりますので、ご注意ください。 |
| OSCの入力を有効/無効化する | /duration/enableoscin | トラック名(String); 有効/無効(Int) | トラック名で指定したトラックのOSC入力を、1で有効化、0で無効化します。 |
| OSCの出力を有効/無効化する | /duration/enableoscout | 有効/無効(Int) | 1でOSC出力を有効化、0で無効化します。 |
| OSCの出力を有効/無効化する | /duration/enableoscout | トラック名(String); 有効/無効(Int) | トラック名で指定したトラックのOSC出力を、1で有効化、0で無効化します。 |
| OSC送信レートの指定 | /duration/oscrate | レート(Float) | 1秒間に送信されるOSCメッセージの数をレートで指定します。標準では30に設定されています。 |
| トラックを追加する | /duration/addtrack | トラックタイプ(String); トラック名(String,Optional); XMLファイル(String,Optional) | 新しく指定したタイプのトラックを作成し、追加します。トラックタイプはbangs, flags, switches, curves, colorsもしくはaudioです。必要であれば、トラック名を指定する事も、外部XMLファイルのパスを指定して読み込む事も出来ます。 |
| 最小最大値の指定 | /duration/valuerange | トラック名(String); 最小値(Float); 最大値(Float) | トラック名で指定したカーブトラックの最小値と最大値を変更します。 |
| 最小値の指定 | /duration/valuerange/min | トラック名(String); 最小値(Float) | トラック名で指定したカーブトラックの最小値を変更します。 |
| 最大値の指定 | /duration/valuerange/max | トラック名(String); 最大値(Float) | トラック名で指定したカーブトラックの最大値を変更します |
| カラーパレットの指定 | /duration/colorpalette | トラック名(String); カラーパレットのパス(String) | カラーパレットのパスで指定した画像をカラートラックのパレットとしてLoads the image at PalettePath for target Colors track |
| オーディオクリップの指定 | /duration/audioclip | クリップのパス(String) | オーディオトラックにサウンドクリップを読み込みます。指定をする際には、プロジェクトにオーディオトラックが存在している必要があります。 |
Durationをダウンロードすると"DurationRemote"と呼ばれるシンプルなアプリケーションが付いてきます。これを使ってコントロールメッセージをテストする事が出来ます。

Durationには外部からのOSCデータをカーブトラックやバントラックにキーフレームとして記録するための、実験段階の機能があります。 受信しているシグナルをカーブトラックに記録するには、トラック名を、受信しているOSCのアドレスと同じになるように設定します。また、受信するOSCの最初のパラメーターは必ずfloatである必要があります。
もし、受信しているメッセージのアドレスがカーブトラックの名称と一致していて、かつ値が適切であった場合、そのトラックの背景が赤く点滅しはじめます。これはレコーディングの準備が整っている事を示しています。再生ボタンをクリックすると、即座にトラックに入力されているデータが記録されていきます。バントラックを使用して断続的なメッセージを、カーブトラックを使用してデータストリームをレコーディングしてみましょう。レコーディングを止めてそのトラックを単純に再生したい時は、そのトラックのOSC入力を無効にしてください。

Durationはオープンソースかつフリーで、どのようなプロジェクトにも使う事が出来ます。タイムラインは非常に多くの状況で使用されるため、一つのアプリケーションでその全ての目的を満たす方法はありません。そういった状況を踏まえて、Durationは解体出来る様に作られています。いくつかの方法でDurationをカスタマイズする事が出来ます。
Durationのリリースは、バイナリーアプリケーションともに、ソースコードのパッケージも、このレポジトリのダウンロードセクションに入っています。ソースコードのパッケージはアプリケーションと、全ての依存ファイル、そしてサポートしている全プラットフォームのプロジェクトファイルを含んでいます。これがDurationをハックするための、最も簡単な方法です。しかし、もしもプロジェクト自体の開発自体に貢献してくださるのであれば、このプロジェクトや、依存しているプロジェクトをGithub上でフォークし、更新した部分に関してのPullリクエストをしてください。
Githubのデータからプロジェクトをコンパイルするには下記の三つの手順が必要です。 - openFrameworksを、githubのdevelopブランチからフォークする - Durationのプロジェクト自体も、openFrameworks/apps/フォルダにフォークします。 - 全ての依存しているadd-onをopenFrameworks/addons/にフォークします。
Durationのレポジトリにはclone_addons.shファイルが入っています。このファイルは、次の様にターミナルから実行する事が出来ます。
$ ./openFrameworks/apps/Duration/clone_addons.sh
これで、必要な全ての依存ファイルがopenFrameworks/addons/にダウンロードされ、プロジェクトのコンパイルが出来る様になるはずです。
Duration was developed as part of the Guest Research Projector vol.2 at YCAM Interlab by James George at the YCAMInterLab
<img src="http://www.jamesgeorge.org/images/ofxtimeline/github/logo_ycam.png" />

Playmodes who graciously funded and shaped the project in it's early stages for BlueBeams .
The Frank-Ratchye STUDIO for Creative Inquiry who have supported the RGBDToolkit project for which ofxTimeline was first created.
[E
$ claude mcp add Duration \
-- python -m otcore.mcp_server <graph>