MCPcopy Create free account
hub / github.com/YCAMInterlab/Duration

github.com/YCAMInterlab/Duration

Chat with this repo
repository ↗ · DeepWiki ↗ · release 003 ↗ · + Follow · compare 2 versions
99 symbols 139 edges 14 files 60 documented · 61% updated 5y ago★ 33633 open issues

Browse by type

Functions 94 Types & classes 5
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

このプロジェクトは現在まだ未公開の状態です。

このプロジェクトを自由にお使いいただく、もしくはお知り合いの方々に送っていただいても大丈夫です。ただし、2月8日までの間は大々的な公開をするのはお控えいただけますよう、お願いいたします。

Duration

万能のタイムライン

Durationはタイムラインに沿って、値の変化をコントロールします。シンプルな1画面のインターフェースを備えたクロスプラットフォームのスタンドアローンアプリケーションで、複数のトラックを使ってタイムライン編集をする事ができます。

このアプリケーションによるタイムラインからの値はOSCによって送信されます。また、外部からのOSCメッセージで、アプリケーションを操作する事も可能です。

Durationのインターフェース

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のインターフェースを使用する

プロジェクトを管理する

Durationのプロジェクトファイルはトラックのデータと、インターフェースの設定だけで構成されています。それらのデータは.xmlファイルと、トラック名と設定を含む.durationprojファイルの形式で保存されます。

Durationは、~/Documents/Durationフォルダにあるプロジェクトファイルを見るように設定されています。ここに保存されたプロジェクトはアプリケーション内のドロップダウンメニュー内で表示されます。このフォルダ内でなくともプロジェクトファイルを保存しておく事は可能ですが、その場合はどこに保存したのか覚えておく必要があるでしょう。

トラックを管理する

トラックはDurationの全てだと言えるでしょう。トラックを自分のプロジェクトに追加するには、「トラックを追加する」もしくは「Add Track」と書かれたドロップダウンからトラックのタイプを選択します。 すると指定したタイプのトラックが追加されます。トラックのヘッダ部分に書かれているトラック名をクリックして、トラックに名前をつけてください。この名前はDurationから送信される全てのOSCメッセージに使用されます。つまり、トラック名は同時にOSCのアドレスとしての意味を持ちます。複数のトラックで同じ名前を使用する事も出来ますが、受信をする側のアプリケーションの処理を難しくしてしまうかもしれません。

トラックの名称の部分にメッセージのルーティング情報を入れるのも一般的です。例えば/mytrack/position/xなどは良いトラック名だと言えるでしょう。もし、トラック名の先頭にスラッシュを付け忘れても、Durationは送信時に付加して送信します。トラックは、トラック名のずっと右側にある削除ボタンをクリックし、確認をすることで削除する事ができます。

トラックのタイプ

Durationは標準で6つのタイプのトラックを使用する事が可能です。それぞれのトラックでは、キーフレームを使って、任意の特定の時間での値や振る舞いを指定します。キーフレーム間の値がどのようにスムーズに補完されるか、をキーフレームごとに指定する事が可能です。

バン/Bangs

バンは最もシンプルなトラックで、再生ヘッドがそれぞれのキーフレームを通過するときに、一度だけパラメータの無いbangメッセージを送信します。

フラグ/Frags

フラグはbangsに似ていますが、各メッセージにテキストを付けて送信する事が可能です。

スイッチ/Switch

スイッチはトラック中のエリアごとにON/OFFの指定をする事が出来ます。再生ヘッドがON/OFFが切り替わる部分を通過する際に、メッセージが送信されます。

カーブ/Curve

カーブを使うと、指定した最小値と最大値の間で値をスムーズに変化させる事が出来ます。キーフレームを右クリックするとメニューが表示され、キーフレーム間の補完方法を指定する事が出来ます。

カラー/Color

カラートラックでは、色のサンプルパレットとして画像を使用し、時間の経過に従ってスムーズに色を変化させる事が出来ます。各キーフレームでは画像パレット中の、色をサンプルする位置を指定します。キーフレーム間では、画像パレット内で色のサンプル位置が移動していくことで、滑らかに色が変化します。

オーディオ/Audio

(実験段階の機能で、OSXのみをサポートしています)

オーディオトラックを使用すると、トラック内に音の波形を表示し、他のトラックと同期してオーディオを再生する事が可能です。現状、一つのプロジェクト内では一つのオーディオトラックのみが使用可能です。また、プロジェクトの全長はオーディオトラックの長さと同じである必要があります。

プロジェクトの長さの設定

全てのプロジェクトはある決まった長さを持ちます。その長さを変更するには、画面上部、再生ヘッドの現在時刻が表示されている部分の下に表示されている時間(これがプロジェクトの長さです)をクリックし、新しい長さを入力します。入力する長さの値は、必ずタイムコードのフォーマット、HH:MM:SS:MILS(HH:時間、MM:分、SS:秒、MILS:ミリ秒)で書かれていなければなりません。プロジェクトの長さを短くすると、新しい長さに収まらないキーフレームがカットされてしまう事があります。

イン点とアウト点

イン点とアウト点を設定すると、全体のシーケンスの中の、指定した場所のみを再生する事が可能です。iとoのホットキーを使用してイン点とアウト点を設定し、再生範囲を指定しましょう。もしくは時間の目盛りのすぐ下の部分をドラッグする事でもイン点とアウト点の指定が可能です。Altキー+i、Altキー+oで現在のinとoutを削除する事も出来ます。

BPMの設定

Durationでは、BPMの値に連動した基本的な4/4拍子のガイドを表示する事が出来ます。これを使う事でキーフレームを1/4毎のガイドに正確にスナップさせる事が出来ます。BPMを変更するには、表示されているBPMの数値をドラッグします。 

ノート:より複雑なガイドの表示は、将来的なアップデートの中で計画されています。

OSCの設定

Durationウィンドウの右上の部分で、OSCの送受信に関しての設定を行う事が出来ます。受信に使用するネットワークポートと送信先のネットワークアドレス、送信に使用するネットワークポートを指定します。それぞれのトラックのヘッダー部分にあるトグルスイッチを用いる事で、トラックごとに独立してOSCの送信受信を行うかどうかを指定する事ができます。

ショートカット

  • ノート: WindowsとLinuxはCTRLキーを使用しますが、MacではCOMMANDキーを使用します。
機能ショートカット
再生/停止スペース
保存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に接続する

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経由で操作する

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"と呼ばれるシンプルなアプリケーションが付いてきます。これを使ってコントロールメッセージをテストする事が出来ます。

DurationRemote

OSCからのデータをトラックに記録する

Durationには外部からのOSCデータをカーブトラックやバントラックにキーフレームとして記録するための、実験段階の機能があります。 受信しているシグナルをカーブトラックに記録するには、トラック名を、受信しているOSCのアドレスと同じになるように設定します。また、受信するOSCの最初のパラメーターは必ずfloatである必要があります。

もし、受信しているメッセージのアドレスがカーブトラックの名称と一致していて、かつ値が適切であった場合、そのトラックの背景が赤く点滅しはじめます。これはレコーディングの準備が整っている事を示しています。再生ボタンをクリックすると、即座にトラックに入力されているデータが記録されていきます。バントラックを使用して断続的なメッセージを、カーブトラックを使用してデータストリームをレコーディングしてみましょう。レコーディングを止めてそのトラックを単純に再生したい時は、そのトラックのOSC入力を無効にしてください。

  • ノート: バンドルされているRecordingDataGeneratorを使って、この機能をテストする事が出来ます。Durationのトラック名をRecordingDataGeneratorと同じにしてテストしてみてください。

RecordingGenerator

  • ノート: この機能はまだ実験段階の機能で、おかしな動作をする事があります。トラックで指定した範囲に収まらない値を受信したり、既存のデータの上に上書きしたりしないようにしてください。大量の管理出来ないキーフレームが登録されたりします。こういった例外的なケースに関し、現状のDurationはまだ全てに上手に対応しきれていません。

Durationをハッキングする

Durationはオープンソースかつフリーで、どのようなプロジェクトにも使う事が出来ます。タイムラインは非常に多くの状況で使用されるため、一つのアプリケーションでその全ての目的を満たす方法はありません。そういった状況を踏まえて、Durationは解体出来る様に作られています。いくつかの方法でDurationをカスタマイズする事が出来ます。

ソースコードをダウンロードする

Durationのリリースは、バイナリーアプリケーションともに、ソースコードのパッケージも、このレポジトリのダウンロードセクションに入っています。ソースコードのパッケージはアプリケーションと、全ての依存ファイル、そしてサポートしている全プラットフォームのプロジェクトファイルを含んでいます。これがDurationをハックするための、最も簡単な方法です。しかし、もしもプロジェクト自体の開発自体に貢献してくださるのであれば、このプロジェクトや、依存しているプロジェクトをGithub上でフォークし、更新した部分に関してのPullリクエストをしてください。

Githubからコンパイルする

Githubのデータからプロジェクトをコンパイルするには下記の三つの手順が必要です。 - openFrameworksを、githubのdevelopブランチからフォークする - Durationのプロジェクト自体も、openFrameworks/apps/フォルダにフォークします。 - 全ての依存しているadd-onをopenFrameworks/addons/にフォークします。

Durationのレポジトリにはclone_addons.shファイルが入っています。このファイルは、次の様にターミナルから実行する事が出来ます。

$ ./openFrameworks/apps/Duration/clone_addons.sh

これで、必要な全ての依存ファイルがopenFrameworks/addons/にダウンロードされ、プロジェクトのコンパイルが出来る様になるはずです。

Version History

  • Alpha 002 released September 23nd
  • Alpha 001 released August 15th

Supported By

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" />

Additional Support

Additional Support

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

Core symbols most depended-on inside this repo

Shape

Method 89
Class 5
Function 5

Languages

C++100%

Modules by API surface

Duration/src/DurationController.cpp29 symbols
Duration/src/ofxTLUIHeader.cpp20 symbols
DurationRemote/src/testApp.cpp17 symbols
RecordingDataGenerator/src/testApp.cpp13 symbols
Duration/src/testApp.cpp12 symbols
RecordingDataGenerator/src/testApp.h1 symbols
RecordingDataGenerator/src/main.cpp1 symbols
DurationRemote/src/testApp.h1 symbols
DurationRemote/src/main.cpp1 symbols
Duration/src/testApp.h1 symbols
Duration/src/ofxTLUIHeader.h1 symbols
Duration/src/main.cpp1 symbols

For agents

$ claude mcp add Duration \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page