Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ofxTimeline without any dependency on ofxAudioDecoder + minor fixes and updates #137

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ example-*/example-*.depend

#VCPP files

*.dll
*.lib
*.exe
*.sdf
Expand Down Expand Up @@ -78,6 +77,7 @@ apps/*/*/obj

#VCPP files


*.dll
*.lib
*.exe
Expand All @@ -104,3 +104,5 @@ example-videoRenderer/bin/data/renders/
oldExamples/
ofxTimelineLib.a
*.opendb
!dll/Win32/*.dll
!dll/x64/*.dll
File renamed without changes.
File renamed without changes
File renamed without changes.
84 changes: 37 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,39 @@
# ofxTimeline #
![Timeline](http://www.jamesgeorge.org/images/ofxtimeline/github/Header.png)
This is a fork of [ofxTimeline](https://github.com/YCAMInterlab/ofxTimeline) without any dependency on [ofxAudioDecoder](https://github.com/kylemcdonald/ofxAudioDecoder). As a result there is no support for `mp3` files.
I spent hours trying to get `ofxAudioDecoder` to compile properly, however the provided example did not behave as expected once no errors where thrown. Furthermore upon inspection of `ofOpenALSoundPlayer_TimelineAdditions`, the only instance of `ofxAudioDecoder` is found in `decoderReadFile` function which is only called when the file format is `mp3`.
I've been successfully able to compile the *allTracks* example on Windows 10 using VS2015.

## Changes:

- Removed `ofxAudioDecoder` dependency.
- Cleaned up `ofOpenALSoundPlayer_TimelineAdditions` class by removing unused methods and code.
- Updated [OpenAL](https://openal.org/downloads/) `libs` and `dlls` to latest version 1.1.
- Fixed `switch` and `flag` tracks' text input field as suggested [here](https://github.com/YCAMInterlab/ofxTimeline/issues/135#issuecomment-247581860).


## Installation:
You need the following dependencies:

- [ofxMSATimer](https://github.com/obviousjim/ofxMSATimer)
- [ofxRange](https://github.com/Flightphase/ofxRange)
- [ofxTextInputField](https://github.com/elliotwoods/ofxTextInputField)
- [ofxTimecode](https://github.com/YCAMInterlab/ofxTimecode)
- [ofxTween](https://github.com/obviousjim/ofxTween)
- [ofxXmlSettings](http://openframeworks.cc/documentation/ofxXmlSettings/ofxXmlSettings/)

On Windows:

- Make sure that you are using [K-Lite Codec Pack 12.1.0 Full ~ 33.9 MB ~ April 18th 2016](http://filehippo.com/download_klite_codec_pack/67445/) for video compatibility as suggested [here](https://github.com/openframeworks/openFrameworks/issues/5114#issuecomment-227208136).
- Copy the the appropriate architecture dependent dlls from `dll` folder to you app's `bin` folder.

For all platforms:
- Copy `GUI` folder to your app's `bin/data` folder.

## Examples:
All examples have been updated for Windows using VS2015. However creating a new project, adding the dependencies and replacing the `ofApp.cpp` and `ofApp.h` files with those from the examples should suffice for a successful compilation on any platform.

Unfortunately I have not tested this fork on Linux or Mac. Feedback and issue reports will be highly appreciated.

# ofxTimeline #
ofxTimeline is a simple to use openFrameworks add on for creating a user interface to an editable timeline. The framework allows you to compose sequences of change over time, controlling the variables in your openFrameworks application to create time based interactions.

If you're familiar with timelines from programs like After Effects, Final Cut, or Blender then ofxTimeline should feel comfortable. With just a few lines of code you can add a visual editor to smoothly interpolate curves, colors, video, oscillators, audio, and 3d cameras.
Expand All @@ -11,7 +44,7 @@ Copyright 2011-2014 [James George](http://www.jamesgeorge.org) co-developed by [

Licensed under the [Apache License](http://www.apache.org/licenses/LICENSE-2.0)

## Philosophy of Reusable Tools##
## Philosophy of Reusable Tools

ofxTimeline is part of my reserach into how creating GUI based tools within creative coding environments can open up new ways of creating and interacting with media.

Expand All @@ -38,8 +71,6 @@ https://vimeo.com/59653952


## Anatomy of ofxTimeline
![Anatomy](http://www.jamesgeorge.org/images/ofxtimeline/github/AnatomyOfTimeline.jpg)

### 1 Pages

You can divide the timeline into pages, each page containing its own set of tracks.
Expand All @@ -64,19 +95,15 @@ The control at the bottom of the track allows for zooming in and precisely editi

### Simple Curves
Simple Curves shows how to use two keyframes and a switcher to animate and color a cube
![SimpleTween](http://www.jamesgeorge.org/images/ofxtimeline/github/example-simpleTween.png)

### Audio Waveform
Audio Waveform shows how to add an audio track to a project.
![AudioWaveform](http://www.jamesgeorge.org/images/ofxtimeline/github/example-audioWaveform.png)

### Video Renderer
Video Renderer shows how to build a simple video effects app using the timeline and a shader. Drag & Drop a video into the application, edit and export the modified frames as an image sequence
![VideoRenderer](http://www.jamesgeorge.org/images/ofxtimeline/github/example-videoRenderer.png)

### Multi-timeline
Muli-timeline shows how to use Flags to trigger start and stop the playback of other timelines in the same application.
![MultiTimeline](http://www.jamesgeorge.org/images/ofxtimeline/github/example-multiTimeline.png)

## Hotkeys

Expand Down Expand Up @@ -158,7 +185,7 @@ Follow this link [http://connect.creativelabs.com/openal/Downloads/Forms/AllItem

### Create a new ofxTimeline project

- Open the ProjectGenerator in of_0073_osx_release/projectGenerator/
- Open the ProjectGenerator
- Give the project a name
- Under the addons tab select the following addons
- ofxTimeline
Expand All @@ -167,14 +194,7 @@ Follow this link [http://connect.creativelabs.com/openal/Downloads/Forms/AllItem
- ofxTextInputField
- ofxRange
- ofxTween
- ofxAudioDecoder
- Generate project
- If you are in Windows VC2015, go to Project Properties -> Configuration Properties -> Build Events -> Post-Build events -> Command Line and paste in the following build event (replace the standard OF command)

robocopy "$(OF_ROOT)/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
robocopy "$(OF_ROOT)/addons/ofxTimeline/libs/openal/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
robocopy "$(OF_ROOT)/addons/ofxTimeline/libs/sndfile/export/vs/$(Platform_Actual)/" "$(ProjectDir)bin/" "*.dll" /njs /njh /np /fp /bytes
if errorlevel 1 exit 0 else exit %errorlevel%

- If you are on OS X, you'll need to add the OpenAL.framework to your project in order to use the AudioTrack

Expand Down Expand Up @@ -217,8 +237,6 @@ in your draw or update function, read the value
ofxTimeline has several built in track types for doing standard timeline tasks.

### Bangs
![Bangs](http://www.jamesgeorge.org/images/ofxtimeline/github/BangTrack.png)

A bang is a simple time marker that sends an event when the playhead passes it. To use a bang track you need a class that listens to bang events, like so:

MyClass.h
Expand Down Expand Up @@ -247,17 +265,13 @@ MyClass.cpp
Inheritance: ofxTLTrack -> ofxTLKeyframes -> ofxTLBangs

### Curves ###
![Curves](http://www.jamesgeorge.org/images/ofxtimeline/github/CurvesTrack.png)

Curves change a value between a min and max range smoothly over time, edited with keyframes that have interpolation.

Right clicking a keyframe on the timeline brings up a selection window to change the interpolation value. These are based on the Penner equations found in [ofxCurves](https://github.com/arturoc/ofxTween)

Inheritance: ofxTLTrack -> ofxTLKeyframes -> ofxTLCurves

### Flags ###
![Flags](http://www.jamesgeorge.org/images/ofxtimeline/github/FlagTrack.png)

Flags are like Bangs but allow the user to enter text on each flag. The value can be read in the event

//--------------------------------------------------------------
Expand All @@ -270,15 +284,11 @@ Flags are like Bangs but allow the user to enter text on each flag. The value ca
Inheritance: ofxTLTrack -> ofxTLKeyframes -> ofxTLBangs -> ofxTLFlags

### Switches ###
![Switches](http://www.jamesgeorge.org/images/ofxtimeline/github/SwitchTrack.png)

Switches provide a simple control to turn regions of the timeline on and off.

Inheritance: ofxTLTrack -> ofxTLBangs -> ofxTLSwitches

### VideoTrack ###
![VideoTrack](http://www.jamesgeorge.org/images/ofxtimeline/github/VideoTrack.png)

VideoTracks let a user interactively scrub through a video and sequence effects in time with the playback. When a video track is added the video playback will control the playback of the entire timeline.

ofxTLVideoTrack* videoTrack = timeline.addVideoTrack("Video", videoPath);
Expand All @@ -293,8 +303,6 @@ VideoTracks let a user interactively scrub through a video and sequence effects


### AudioTrack ###
![AudioTrack](http://www.jamesgeorge.org/images/ofxtimeline/github/AudioTrack.png)

AudioTracks let a user interactively scrub through an audio track and sequence effects in time.

In your .cpp file add the track and load a file
Expand Down Expand Up @@ -323,50 +331,32 @@ In your .cpp file add the track and load a file


### ColorTrack
![ColorTrack](http://www.jamesgeorge.org/images/ofxtimeline/github/ColorTrack.png)

The color track let's you sequence smoothly changing colors. It uses a provided image as a sample palette, each keyframe specifies a position on the palette to sample from. Between keyframes the image is traverse to create smoothly changing colors.

### LFO (experimental)
![LFO](http://www.jamesgeorge.org/images/ofxtimeline/github/LFOTrack.png)

The LFO, Low Frequency Oscillator, track defines simple repeating sine waves and noise functions.

## 3rd Party Custom Tracks ##

ofxTimeline can be integrated with other addons or time based media, below are examples of just a few

### DepthImageSequence ###

https://github.com/obviousjim/ofxRGBDepth // [RGBDToolkit](http://wwww.rgbdtoolkit.com)

### MidiTrack ###

https://github.com/momo-the-monster/ofxTimelineTracks // [ofxTLMidiNote](https://vimeo.com/46793363)

## Designing custom Tracks ##

The track system is designed to be extensible. There are two empty track templates that are the best place to get started building your own track

### ofxTLEmptyTrack

Use this template as a starting point for visualizing time based data in ofxTimeline or creating a unique type of interactive track.

### ofxTLEmptyKeyframes
Use this template for creating a custom keyframe based track. It already has copy+paste, multiple selection, saving and loading.

## Supported By ##

ofxTimeline is a project by [James George](http://www.jamesgeorge.org), co-developed by [YCAMInterLab](http://interlab.ycam.jp/en/) during the [Guest Research Project v.2](http://interlab.ycam.jp/en/projects/guestresearch/vol2)

<p align="center">
<img src="http://www.jamesgeorge.org/images/ofxtimeline/github/logo_ycam.png" />
</p>

### Additional support ###

![Additional Support](http://www.jamesgeorge.org/images/ofxtimeline/github/SupportedBy.png)

[Playmodes](http://www.playmodes.com/) who graciously funded and shaped the project in it's early stages for [BlueBeams](https://vimeo.com/35931265) .

[The Frank-Ratchye STUDIO for Creative Inquiry](http://studioforcreativeinquiry.org/) who have supported the [RGBDToolkit](http://www.rgbdtoolkit.com) project.
Expand Down
40 changes: 1 addition & 39 deletions README_JP.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# ofxTimeline #
![Timeline](http://www.jamesgeorge.org/images/ofxtimeline/github/Header.png)

ofxTimelineは、openFrameworksでタイムラインエディタインターフェースを使用する事が出来るシンプルなアドオンです。このフレームワークを使用する事で、openFrameworksで作られたアプリケーションの中で時間軸に沿ったシーケンスを編集し、そのタイムシーケンスを使って変数のコントロールを行う事が可能になります。

もしもAfter EffectsやFinal Cut、Blenderなどのタイムライン編集に馴染みがあれば、ofxTimelineは快適に使用する事が出来るでしょう。ほんの数行のコードで、スムーズに補完されたカーブ、カラー、ビデオ、オシレーター、オーディオ、3D空間中のカメラなどのタイムラインシーケンスを作る、エディタを使用する事が可能です。
Expand All @@ -11,7 +9,7 @@ Copyright 2011-2012 [James George](http://www.jamesgeorge.org) Co-developed by [

Licensed under the Apache License

## 再利用可能なツールの哲学##
## 再利用可能なツールの哲学

ofxTimelineの開発は、クリエイティブコーディングの環境の中で、どのようにGUIベースのツールを作り、メディアを使って創造しインタラクションする新しい方法を切り開く事が出来るか、に対するリサーチの一環として制作されています。

Expand Down Expand Up @@ -41,8 +39,6 @@ https://vimeo.com/59653952


## ofxTimelineの構造
![Anatomy](http://www.jamesgeorge.org/images/ofxtimeline/github/AnatomyOfTimeline.jpg)

### 1 ページ

タイムラインをページごとに分ける事が出来ます。それぞれのページには、それぞれ別々のトラックのセットが入っています。
Expand All @@ -68,20 +64,16 @@ https://vimeo.com/59653952
### Simple Curves
Simple Curves shows how to use two keyframes and a switcher to animate and color a cube
Simple Curvesでは2つのキーフレームと1つのスイッチャーを使用し、キューブの色と動きをコントロールする例を紹介しています。
![SimpleTween](http://www.jamesgeorge.org/images/ofxtimeline/github/example-simpleTween.png)

### Audio Waveform
Audio Waveformでは、オーディオトラックの使い方を紹介しています。
![AudioWaveform](http://www.jamesgeorge.org/images/ofxtimeline/github/example-audioWaveform.png)

### Video Renderer
Video Rendererでは、タイムラインとシェーダーを使用した、シンプルなビデオエフェクトアプリケーションの作り方を紹介しています。映像ファイルをアプリケーションにドラッグアンドドロップし、加工、編集されたフレームをイメージのシーケンスとして
書き出してみてください。
![VideoRenderer](http://www.jamesgeorge.org/images/ofxtimeline/github/example-videoRenderer.png)

### Multi-timeline
Multi-timelineでは、フラグを使用して同じアプリケーション内の他のタイムラインの再生を制御する方法を紹介しています。
![MultiTimeline](http://www.jamesgeorge.org/images/ofxtimeline/github/example-multiTimeline.png)

## ホットキー

Expand Down Expand Up @@ -216,8 +208,6 @@ ofxTimelineには、一般的なタイムラインで必要になる数種類の


### Bangs
![Bangs](http://www.jamesgeorge.org/images/ofxtimeline/github/BangTrack.png)

bangはシンプルな時間のマーカーで、再生ヘッドがマーカーを通過する時にイベントを送る事ができます。bangトラックを使用するには、下記の様にしてbangイベントを取得するクラスを使う必要があります。

MyClass.h
Expand Down Expand Up @@ -246,17 +236,13 @@ MyClass.cpp
継承関係:ofxTLTrack -> ofxTLKeyframes -> ofxTLBangs

### Curves ###
![Curves](http://www.jamesgeorge.org/images/ofxtimeline/github/CurvesTrack.png)

Curvesを使うと、補完機能の付いたキーフレームを使い、タイムラインに沿って値を最小値と最大値の間でスムーズに変化させる事が出来ます。

タイムライン上のキーフレームを右クリックすると選択ウィンドウが表示され、補完の方法を変更する事が出来ます。補完の方法は、[ofxCurves](https://github.com/arturoc/ofxTween)の、Penner方程式をベースにしています。

継承関係: ofxTLTrack -> ofxTLKeyframes -> ofxTLCurves

### Flags ###
![Flags](http://www.jamesgeorge.org/images/ofxtimeline/github/FlagTrack.png)

Flagsはbangsに似ていますが、各フラグ(マーカー)に、テキストを入力する事が出来ます。値はイベントが発生するごとに読み出す事が可能です。

//--------------------------------------------------------------
Expand All @@ -269,15 +255,11 @@ Flagsはbangsに似ていますが、各フラグ(マーカー)に、テキ
継承関係:ofxTLTrack -> ofxTLKeyframes -> ofxTLBangs -> ofxTLFlags

### Switches ###
![Switches](http://www.jamesgeorge.org/images/ofxtimeline/github/SwitchTrack.png)

Switchesを使う事で、タイムライン上で、ON/OFFのシンプルなコントロールをすることが出来ます。

継承関係:ofxTLTrack -> ofxTLBangs -> ofxTLSwitches

### VideoTrack ###
![VideoTrack](http://www.jamesgeorge.org/images/ofxtimeline/github/VideoTrack.png)

VideoTracksでは、映像とそのエフェクトを同時にスクラブ再生する事が出来ます。videoトラックが追加されると、映像再生が全体のタイムラインの再生を制御する形になります。

ofxTLVideoTrack* videoTrack = timeline.addVideoTrack("Video", videoPath);
Expand All @@ -293,8 +275,6 @@ VideoTracksでは、映像とそのエフェクトを同時にスクラブ再生


### AudioTrack ###
![AudioTrack](http://www.jamesgeorge.org/images/ofxtimeline/github/AudioTrack.png)

AudioTracksを使用すると、オーディオトラックとその他のシーケンスを同時にスクラブ再生する事が出来ます。

.cppファイルの中でトラックを追加し、ファイルを読み込みます。
Expand Down Expand Up @@ -323,34 +303,22 @@ AudioTracksを使用すると、オーディオトラックとその他のシー


### ColorTrack
![ColorTrack](http://www.jamesgeorge.org/images/ofxtimeline/github/ColorTrack.png)

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

### LFO (experimental)
![LFO](http://www.jamesgeorge.org/images/ofxtimeline/github/LFOTrack.png)

LFOは、Low Frequency Oscillatorの略で、シンプルな繰り返しのパターンや、ノイズ関数を使用する事が出来ます。


## サードパーティーのカスタムトラック##

ofxTimelineは他のアドオンやタイムベースのメディアを組み込んで使用する事ができます。下記はいくつかの例です。

### 深度センサーからのイメージシーケンス ###

https://github.com/obviousjim/ofxRGBDepth // [RGBDToolkit](http://wwww.rgbdtoolkit.com)

### Midiトラック ###

https://github.com/momo-the-monster/ofxTimelineTracks // [ofxTLMidiNote](https://vimeo.com/46793363)

## カスタムトラックをデザインする ##

トラックは拡張しやすいようにデザインされています。ofxTimelineには下記の2つのトラックテンプレートがあり、オリジナルのトラックを作るには、ここから始めるのが良いでしょう。

### ofxTLEmptyTrack

タイムベースのメディアをビジュアライズしたり、オリジナルのインタラクティブトラックを作る場合は、このテンプレートを使用してください。

### ofxTLEmptyKeyframes
Expand All @@ -359,15 +327,9 @@ Use this template for creating a custom keyframe based track. It already has cop


## Supported By ##

ofxTimeline is codeveloped by YCAM InterLab during the [Guest Research Projector v.2 at YCAM Interlab](http://interlab.ycam.jp/en/projects/guestresearch/vol2) by [James George](http://www.jamesgeorge.org) at the [YCAMInterLab](http://interlab.ycam.jp/)

![YCAM](http://www.jamesgeorge.org/images/ofxtimeline/github/logo_ycam.png)

### Additional support ###

![Additional Support](http://www.jamesgeorge.org/images/ofxtimeline/github/SupportedBy.png)

[Playmodes](http://www.playmodes.com/) who graciously funded and shaped the project in it's early stages for [BlueBeams](https://vimeo.com/35931265) .

[The Frank-Ratchye STUDIO for Creative Inquiry](http://studioforcreativeinquiry.org/) who have supported the [RGBDToolkit](http://www.rgbdtoolkit.com) project.
Expand Down
Loading