Time Flow Sketch

映像の中の時間の流れを、絵を描く感覚で操作する iPhone / iPad / Mac アプリ

App Store でダウンロード

このアプリについて

映像の中の時間の流れを、絵を描く感覚で操作するスケッチアプリです。

読み込んだ動画に対して、白黒のグラデーションで「時間の流れの形」を描きます。 描いた明るさがそのまま動画の時間位置や再生の速さになり、イメージの場所ごとに違う時間が流れはじめます。

指でなぞったところだけが先に進む。別の場所は逆再生になる。ある部分だけ時間が止まったまま、まわりだけが動いていく。

順再生と逆再生が同時に立ち上がる、ねじれた時間も描けます。一様に流れる映像の時間を、ばらばらに解きほぐして組み立て直してみよう。 変化する水面の反射、流れる雲、身近な物や生物の動き。見慣れた現実の風景の中に、面白い発見があるかもしれません。

マップをつくる

描いた時間の効かせ方

確かめる

音と書き出し

映像の処理はすべて端末内で完結し、作品が外部に送られることはありません。

基本の使い方

トップ画面の各部の名前を赤い線で示した図。入力映像、使用範囲のバー、マップ画像と道具、出力映像が並んでいる
トップ画面(押すと大きく開きます)

1. 画面の見かた

トップ画面は上から 入力映像・マップ画像・出力映像 の3段です。縦長の素材と、iPad の横向き・Mac では、上の段に入力映像と出力映像、下の段にマップ画像と立体グラフの 4 画面で並びます。 同じ素材が、マップによってどう変わったかをその場で見比べられます。

入力映像の下のバーは使用範囲を兼ねています。両端の白いハンドルで素材のどこを使うかを決め、 長押ししてから引くと長さを保ったまま範囲をずらせます。ハンドルを動かしている間は、入力映像にその端の瞬間が映ります。 右上の音声出力切り替えで、鳴らす音を選びます。入力は素材そのままの音、出力は時間操作を受けた音で、鳴るのはどちらか一方だけです。

画面はトップ画面と編集画面の 2 つだけです。入力・出力それぞれの右下のボタンを押すと、編集画面がフルスクリーン(編集の道具を隠して、映像やグラフだけを大きく見る状態)で開きます。

フルスクリーンでは、右上の表示切替で入力映像・マップ・出力映像・立体グラフ・時間グラフを選ぶと、いくつでも並べて見比べられます。 押した順に並び、行と列は画面の形に合わせて自動で決まります。マップは、いま出力に効いているもの(時間マップかレートマップ)が出ます。空間マップは編集したときだけ選べます。 トップ画面の立体グラフの右下のボタンから開くと、立体グラフだけで始まります。 画面に 1 回触れると上下のバーとボタンが消えて、名前の札だけが残ります(もう一度触れると戻ります)。 左上の「編集」で道具が出て、そのまま編集を続けられます。並べたマップの右下のペンを押すと、そのマップの編集になります。 画面の大きな端末(iPhone Air・Plus・Pro Max・iPad)では、並べた画面の右下のボタンでその画面だけを表示できます。 映像の上で 2 本の指を広げてもフルスクリーンになり、狭めると戻ります。 書き出しはトップ画面の「書き出し」から行います。

入力映像を並べると、映像の下の端に使用範囲のバーと読み込みの情報(GPU 上の映像の大きさ・fps)が出て、情報を押すと読み込みの設定を開けます。 左上の「入力」の札の下のボタンを押すと、別の動画(写真ライブラリ・ファイル)やライブカメラへの切り替えと、読み込みの設定ができます。編集画面を閉じずに素材を替えられ、編集したマップはそのまま保たれます。

表示切替で「立体グラフ」や「時間グラフ」を並べると、出力の絵と並べてグラフを見られます。 立体グラフは素材を「横×縦×時間」の箱として描き、いまの 1 コマが箱をどう切っているかを、絵を貼った面で見せます。ゆっくり自動で回り、ドラッグで回転、ピンチで拡大できます。回して離すと、その勢いのまま回り続けます(指を止めてから離すと止まります)。 右上の「断面」ボタンを押すたびに表示が変わります。ラインは断面を映像ではなくスリットの線で示し、線の色は時間グラフと同じ(画面の左が緑、右が赤)です。半透明と不透明は箱そのものを見せ、手前の面に画素数の目盛り、断面のいちばん進んだ時刻と遅れた時刻に、下の面(画素の縦がいちばん大きい側)と左の面(横が 0)を横切る白い線と、その端に赤い秒数が付きます。 時間グラフは横が出力の 1 周、縦が素材の時刻で(縦スリットでは縦と横が入れ替わります)、画面の場所ごとにどの瞬間を映すかを線で示します。 横にスワイプするとレート(再生の速さ)と空間(素材のどこを映すか)のページに切り替わります。 レートはレートマップ基準で編集しているとき、空間は空間マップを編集したときに現れます。 立体グラフは、トップ画面のマップを横にスワイプしても見られます(空間マップを編集していれば、その前に空間マップのページが入ります)。 空間マップを使っているときは、面の左右(横スリットでは上下)の位置も、映している素材の位置へ動きます。 一色のように 1 本の列だけを映すマップでは面が 1 本の線につぶれ、その線が時間の方向に切る板(その列のスリットスキャンの絵)が半透明で添えられます。 使用範囲が素材の半分より短いときは、立体グラフ右上の「素材全体/使用範囲」で箱の奥行きを使用範囲に合わせられます。 読み方は時間処理の仕組みで説明しています。

最初は画面下の「読み込み」から動画を選びます。動きのある映像ほど効果がはっきり出ます。 フル HD 以下の軽い素材が扱いやすく、読み込みも速く済みます。

読み込む解像度と秒数は、映像とこの端末の空きメモリから自動で決まります。 入りきらないときは読み込む秒数を短くしたりフレームを間引いたりして収め、読み込み後にお知らせします。 設定の「映像の読み込み」で変えられます。そこで読み込む範囲はトップ画面の使用範囲の先頭から始まり、使用範囲より短くはなりません。 読み込んだ範囲・使用範囲と出力の長さの関係は、時間処理の仕組みで説明しています。

編集画面のフルスクリーンの図。入力映像、時間マップ、出力映像、立体グラフを並べ、右上の表示切替で並べるものを切り替える
編集画面のフルスクリーン(押すと大きく開きます)
編集画面の各部の名前を赤い線で示した図。上から編集対象・パラメータ・サウンド・表示切替のボタン、結果の映像、マップ、マップの名前と編集範囲、筆の色とスライダー、手法のボタン
編集画面(押すと大きく開きます)

2. マップを描く

マップ画像の右下にある鉛筆アイコン、出力映像のタップ、または画面下の「編集」から編集画面に入ります。 マップの上を指や Apple Pencil でなぞると、その明るさに応じて時間の流れが変わります。

ちょっとした描き足しなら、トップ画面のマップ画像をそのままなぞっても描けます(赤い線の近くを触ると、再生位置の移動になります)。 左下の筆のボタンで黒〜白の 5 段階と指先を選び、隣の塗りつぶしのボタンでは、黒・グレー・白の一色や、上→下・下→上・左→右・右→左のグラデーションでマップ全体を塗り直せます。 その隣のグラデーションのボタンを押すと、マップが縞のグラデーションになり、なぞって動かす・ピンチで周期・2 本指で回して角度を、その場で変えられます(✓ で終わります)。 続くブラーは押すたびにマップに 1 段ブラーをかけ、反転は明暗を入れ替えます。レートマップではモーションから生成、空間マップでは切り分けも並びます(はさみを押してマップを横切る線を引き、分かれた領域をドラッグでずらして、上に出る「ずらしたら、ここをタップで確定」を押します)。 描いたあとは右下に「ひとつ前に戻す」が出ます。 マップの右上にある目のボタンで、マップの見え方をグレースケールから等高線(同じ明るさを線で結び、何秒・どの速さ・素材のどの位置(px)かを数字で示す)に変えられます。線の色はマップの種類ごとで、時間マップは白、レートマップは逆再生が青・止まるとグレー・順再生が黄、空間マップは素材の左端が緑・右端が赤で、レートマップと空間マップは線と線の間もその色で塗り分けます。数字の所では線が途切れ、単位は一番下の数字にだけ付きます。見え方が変わるだけで、マップの中身は変わりません。目のボタンはトップ画面・編集画面・モニタービューのマップにあり、編集画面では余白があれば、マップの名前とともに絵の外に出ます。 スリットのときは、同じ目のボタンで読み取り値をオンにすると、再生位置に細い白い線が出て、スリットに沿った 7 本(縦長の映像の縦スリットでは 5 本)の薄い線がマップの縁から少しはみ出し、その先のマップの下に、白い線と交わる所がいま映している値を示します(読み取り値)。上から、素材の何秒か(白)と、そこでの再生レート(1 で等速、0 で止まる、マイナスは逆再生。青〜グレー〜黄)。空間マップを描き換えていれば、素材のどの位置か(px。緑〜赤)が 3 段目に加わります。色は等高線と同じです。数字の右(横スリットは数字の上)には、どの段が何の数字か(時間位置・再生レート・空間位置)を書き添えます。白い線の先には出力の何秒目かも出ます。ライブでは時間マップのとき何秒前かを、レートマップのときはマップから読んだレートを示します。縦スリットの時間グラフは、出力の時間を縦(上が始まり)に取るようにしました。読み取り値をオンにすると、トップ画面でも、出力がいま映している素材の時刻の範囲が入力映像のバーに赤く出ます(普通の再生では点、時間が広がる所では横に伸びた帯。入力映像の全画面表示では出しません)。サーフェスでは、空間マップを編集しているときだけ、空間マップの目のボタンで読み取り値をオンにすると、画面全体が映している範囲(立体グラフの赤い線と同じ)が入力映像のバーに赤い帯で出ます。入力の再生位置はバーの緑の縦線です。

明るさの意味はマップの種類で変わります。起動時の時間マップ・縦スリットでは、黒いところが使用範囲の始まり、白いところが終わりの瞬間を映します。 最初のマップは上が黒・下が白のグラデーションで、これが通常の再生です。マップの縦方向が出力の時間なので、描いたところは赤い線がそこを通るときに、その列が映す瞬間を変えます。 レートマップでは(既定の設定なら)黒が停止、白が順再生で、グレーはその間の半分の速さです。「パラメータ」のパネルの右上の「逆再生あり」を押すと、黒が逆再生、グレーが停止、白が順再生になり、「既定に戻す」で元に戻ります。 いまの設定での意味はツールの上に表示され、映像に結果がその場で反映されるので、描きながら確かめられます。

いちばん下の列の左端のボタンで、ひとつ前の状態に戻せます。押すたびに 1 手順ずつ戻り、 ストロークだけでなく塗りつぶしやグラデーション生成など、どの方法での変更もさかのぼれます (スライダーは指を離すまでが 1 手順)。長押しすると「デフォルトの状態に戻す」が出ます。 手順はマップごとに最大 30 まで覚えていて、アプリを終了すると消えます。

右上の表示切替で、並べるものを選べます。入力映像・マップ・出力映像・立体グラフ・時間グラフを押した順に並べ、行と列は画面の形に合わせて自動で決まります(最初は出力映像とマップ。iPhone は道具を出している間 4 つまで)。 立体グラフを並べれば、描きながら面の変化を確かめられます。マップを出力映像に重ねるをオンにすると、映像の上にマップを薄く重ねて描けます。同じメニューのフルスクリーンで表示で、道具を隠して大きく見られます。並びは次に開いたときも同じです。 左上の編集対象では、時間マップかレートマップのどちらかと、空間マップを一緒に選べます。2 枚を選ぶとマップが 2 つ並び、緑の枠が編集中のマップです(もう一方を押すとそちらに切り替わります)。表示切替でもう一方のマップを足しても同じです。空間マップをすでに編集していれば、最初から 2 枚で開きます。 上の段のパラメータとサウンドは、適用パラメータと音の設定を開きます。 HDMI などで外部ディスプレイをつないでいる間は、表示切替の左に外部表示が出て、外に映すものを選べます。 マップの赤い線(再生位置)は、マップの外に少しはみ出しています。はみ出した所をつかんで動かすと、描く操作と混ざらずに再生位置を動かせます。 トップ画面のマップの名前は、時間系と空間の両方を編集していると「時間+空間」になり、いま見えているほうが明るく出ます。

別の動画を読み込んでも、編集したマップは保たれます。新しい動画の縦横比に合わせて引き伸ばし、編集の手順もそのまま戻せます。編集していないマップは新しい動画に合わせた既定の形になります。既定に戻したいときは、ひとつ前に戻すの長押しか塗りつぶしの「既定」を使います。

マップの名前の横の編集範囲を押してからマップをドラッグすると、その四角の中だけに描画・生成・塗りつぶし・ブラー・ガンマ・反転が効きます(四角は緑の破線で示し、効かない側を少し暗くします)。 塗りつぶしのグラデーションは四角の端から端までになるので、部分ごとに違うグラデーションを置けます。隣ので四角の外側に切り替えられ、編集範囲をもう一度押すと解除します。切り分けの結果も四角の中だけに残ります(切り分けの間はボタンが出ないので、範囲の変更はほかの方法で)。

編集範囲を右側に引き、その中だけを左→右のグラデーションで塗りつぶした画面。四角は緑の破線で、外は元のマップのまま
四角の中だけを左→右で塗りつぶし。グラデーションは四角の端から端まで

3. 生成や塗りつぶしから始める

いちばん下の列の右側に並ぶボタンで、マップの作り方を切り替えられます。左から描画・グラデーション生成・モーションから生成・切り分け・塗りつぶしで、押すとその方法の道具が上に出ます。 グラデーション生成は規則的な縞模様を、 モーションから生成は映像自身の動きからマップを作ります(動きの残像が変化する「ヒストリー」はサーフェスのときだけ使えます)。 グラデーションは、いまのマップへの重ね方を上書き・加算・乗算から選べます(既定は乗算。マップの形を残したまま縞が入ります)。加算・乗算は始めたときのマップに重ね、加算で白を超えたところは全体をいちばん明るい所で割って収めます。トップ画面では、グラデーションを操作している間 ✓ の横に同じ選択肢が出ます。塗りつぶしでも同じ 3 つから選べます(既定は上書き)。

塗りつぶしでは、一色やグラデーションでマップ全体を塗り替えます。 各ボタンの下に、いまの設定でどう再生されるか(通常再生・逆再生・時間停止など)が表示されます。

塗りつぶしの道具。重ね方の選択と、再生の説明が付いた 7 つのボタン

切り分けでは、マップを横切る線や囲む線で2つに分け、それぞれを動かします。 線は下のパレットで自由曲線・直線(始点と終点をタップ)・多角形(頂点を順にタップし、最初の点をタップして閉じる)から選べ、自由曲線で囲む線は交差したところで閉じた形になります。 切ったあとは、領域をドラッグして移動、枠の 4 隅のつまみで台形に変形、2 本指のピンチで拡大・縮小ができます(つまみはマップの縁の内側に留まり、隅が外へ出ても縁の上から動かせます)。 動かしてできた隙間は両側の値をつないで自動で埋まります。確定で次の線へ進み、やり直すで線を引き直し(多角形の頂点を置いている途中は最後の点だけ取り消します)、元に戻すで切り分けを始める前のマップに戻ります。

マップを編集したあと、塗りつぶしの「既定」の印が付いたボタンを選ぶか、ひとつ前に戻すを長押しして「デフォルトの再生に戻す」(空間マップでは「デフォルトの状態に戻す」)を選ぶと、そのマップがいまのモードの通常再生に戻り、未編集の扱いになります。

生成したマップの上から、そのまま描き足すこともできます。

4. 書き出す

画面下の「書き出し」から、結果を動画として写真ライブラリへ保存します。 長さは編集画面の「パラメータ」にある「再生時間」で調整できます(決まり方は時間処理の仕組みで説明しています)。 書き出しの方法は設定の「書き出し」で選びます。既定は iPhone・iPad がプレビュー書き出し、Mac がフル品質書き出しです。

フル品質書き出しについて — 書き出しの最中は画面が自動でロックされません。アプリが裏に回ると止まりますが、もう一度「書き出し」を押すと、続きから書き出すかここまでを動画にするかを選べます。 読み込んだ映像が大きいときは、書き出しの間だけ手放して、終わってから読み直します(その間プレビューは止まります)。

メモリを多く使い、時間もかかります。メモリ 8GB 以上の機種(iPhone 15 Pro 以降、M チップの iPad など)がおすすめです。それ以外の機種では書き出せないことがあります。

処理のしくみ — 読み込んだ動画は、アプリ内の一時フォルダに元のまま(間引きも縮小もせずに)写してあり、GPU にはそこから縮小・間引きした分だけを載せています。 フル品質書き出しは GPU の絵ではなくこの写しを区切りながら読み直すので、読み込み範囲を元の解像度・フレームレートで書き出せます。素材が HDR なら HLG / PQ の 10bit HEVC になります。 写しを残すのは編集中の動画の分だけで、別の動画を開いたときとアプリを終了したときに消します(終了時に消せなかった分は次の起動時)。 中止した書き出しの途中結果はアプリ内の Application Support に残ります。カメラから取り込んだ映像には使えません(GPU 上の映像から書き出します)。

書き出しのフレームレートは 24・30・60fps で、素材が 120fps・240fps のときは 120・240fps も選べます。

App Store に新しいバージョンが出ていると、起動したときに一度だけお知らせします。 「使い方」の画面にはバージョンが表示され、更新があるときはその右のボタンからそのまま App Store を開けます。

適用モード

サーフェス画素ごとに時刻をずらします。描いた形がそのまま時間のゆがみになる、いちばん直感的なモードです。
縦スリット画面の縦の帯ごとに違う時刻を割り当てます。マップの縦方向が出力の時間、横方向が画面の位置に対応します。
横スリット縦スリットの向きを入れ替えたものです。
レート明るさを再生の速さとして扱います。逆再生から早送りまで、場所ごとに変えられます。
空間マップ明るさを「画面のどこから映像を取ってくるか」として扱います。時間マップやレートマップと組み合わせて使う補助的なマップで、やめるときは編集方法のメニューの「デフォルトの状態に戻す」を選びます。

編集画面の左上にある「時間マップ・縦スリット」などの表示をタップすると、 マップの種類と適用モードをまとめて切り替えられます(起動時は時間マップ・縦スリットです)。 上の段の「パラメータ」と「サウンド」の各項目にも i ボタンがあり、いまのモードでの意味を確かめられます。

ライブカメラ

カメラの映像を、撮りながら時間操作できます。「読み込み」→「ライブカメラ」か、起動直後の画面の「ライブカメラ」、編集画面の入力映像の左上のボタンで始めます (カメラのある端末で、はじめにカメラの許可を求められます。映像は端末の外へ送られません)。

よくある質問

動画の読み込みに時間がかかります

4K や長い動画は、写真ライブラリからの取り出しに数十秒かかることがあります。 iCloud にある動画は、端末へダウンロードしてから読み込みます。その間は進み具合が出て、iCloud にあると分かるときは「iCloud からダウンロード中」と表示されます。 読み込み中はいつでも「中止」できます。短く切り出した素材のほうが試行錯誤しやすくなります。

アプリが途中で終了します

読み込んだ動画は端末のメモリに展開されます。 読み込む量は空きメモリから自動で決まりますが、他のアプリがメモリを使っていると足りなくなることがあります。 設定の「映像の読み込み」で解像度を 1/2〜1/16 に下げるか、読み込む秒数を短くしてください。 他のアプリを終了してからお試しください。

「フレームを間引いて読み込みました」と表示されます

GPU が一度に扱えるフレーム数(2048枚)やメモリに収まらないときは、フレームを間引いて読み込みます。 スローモーションで撮った映像はフレーム数が多いため、特に間引かれやすくなります。 設定の「映像の読み込み」で解像度を下げるか読み込む秒数を短くすると、間引かずに読み込めます。 スリットの時間マップでは、「パラメータ」の「使用範囲だけを読み込み直す」も使えます。 間引いて読み込んだあとに使用範囲を狭めると、間引きを減らせる長さになった所で「この範囲なら 60fps で読めます」のように入力映像の上に出るので、「読み直す」を押せばその fps で読み直せます(120fps の素材なら 40 → 60 → 120fps と段ごとに出ます)。

設定の映像の読み込み。解像度、読み込む秒数、フレームの間引きの表示
設定の「映像の読み込み」。間引きが起きるときは「フレーム」に出ます(理由は i で確かめられます)

「読み込み範囲の外は動きません」と表示されます

使用範囲のハンドルを、読み込んだ範囲(バーの少し明るい部分)の外まで広げたときに出ます。外側の時刻は端のフレームで止まります。 横の「この範囲で読み直す」を押すと、解像度と読み込む秒数はそのままで、使用範囲が真ん中に来る位置から読み直します。

書き出した動画が見つかりません

書き出しに成功すると写真ライブラリに保存されます。 保存の許可を求めるダイアログで「許可しない」を選んだ場合は、 iOS の「設定」→「Time Flow」→「写真」から変更できます。

音はどこから鳴っていますか

映像の右上にある音声出力切り替えで選びます。 出力を選ぶと、読み込んだ動画の音声が映像と同じ時間操作を受けて鳴ります。 入力を選ぶと、素材そのままの音が等速で鳴ります。 鳴るのはどちらか一方だけで、同時には鳴りません。音声を持たない動画では無音になります。

外部ディスプレイにつなげますか

つなげます。HDMI や AirPlay でディスプレイに接続すると、 出力映像だけがそちらに全画面で表示されます。手元の画面は編集画面のまま使えるので、 大きな画面で結果を見ながら描けます。展示や上映にも使えます。

説明やデモで操作画面のほうを大きく見せたいときは、設定の「外部ディスプレイの表示」を 「この画面をそのまま映す」にします。出力映像の上の「外部ディスプレイに出力中」の札をタップしても切り替えられ、編集画面ではつないでいる間だけ上の段に出る「外部表示」から選べます。

iPad でステージマネージャがオンになっていると外部ディスプレイが拡張デスクトップとして扱われ、 この表示にならないことがあります。その場合は「設定」→「マルチタスクとジェスチャ」から ステージマネージャをオフにしてください。

iPad でも使えますか

使えます。iPhone と iPad の両方に対応しています。 画面の広い iPad では映像とマップを同時に大きく表示でき、Apple Pencil なら筆圧も使えます。横向きではトップ画面が 4 画面の配置になり、編集画面の道具は右端に並びます。

Mac でも使えますか

使えます(Apple シリコンの Mac、macOS 13 以降)。App Store の同じアプリで、iPhone・iPad・Mac のどれにも入ります。 Mac では動画をファイルで扱います。「読み込み」の「ファイルから開く」、Finder からウィンドウへのドラッグ&ドロップ、Finder の「このアプリで開く」、⌘O のどれでも開け、 書き出しは保存先を選びます。カメラは Mac の内蔵カメラのほか、iPhone の連係カメラや USB カメラを名前で選べます。 読み込める量は端末の GPU の空きから決まるので、Mac ではメモリのぶんだけ長い動画を間引かずに読み込めます(上限は 30fps で 68 秒ぶんのフレーム数。それより長い動画は間引きます)。 トップ画面は 4 画面の配置で、編集画面の道具は右端に並びます。

どんな映像が向いていますか

波、歩く人、車、風にゆれる布など、動きが続いているものがよく合います。 カメラは固定したほうが効果が分かりやすく、手持ちで画面全体が動くと効果が埋もれます。 スーパースローで撮った映像はとくに向いていて、時間を大きく引き伸ばしても 動きが飛ばずになめらかなまま残ります。

お問い合わせ

不具合の報告や機能のご要望は下記までお寄せください。
ryu.furusawa@gmail.com
https://ryufurusawa.com/contact


Time Flow Sketch

Reshape the flow of time inside a video by drawing. For iPhone, iPad and Mac.

Download on the App Store

About

A sketching app for reshaping the way time flows inside a video.

You draw the shape of that flow as a black-and-white gradient over the clip you loaded. The brightness you paint becomes a moment in the clip, or a playback speed, so different parts of the image start running on their own time.

Only where your finger traced runs ahead. Another part plays backwards. One area stays frozen while everything around it keeps moving.

You can even draw time that twists — forward and backward unfolding at once. Take the single, even flow of time in a video, pull it apart, and put it back together. Reflections shifting on water, drifting clouds, the movement of familiar things and creatures: there may be something new waiting in the everyday scenery you thought you knew.

Making a map

How the map is applied

Checking what you made

Sound and export

All video processing happens on your device, and nothing you make is sent anywhere.

How it works

Load a clip and the app expands it frame by frame into memory on the GPU, so the part you loaded is available all at once rather than one moment at a time. Out of that block of stacked frames it assembles a new video in which different parts of the picture sit at different points in the clip — column by column (Vertical slit), row by row (Horizontal slit), or pixel by pixel (Surface). A wave can break on the left of the frame while the right side has not started moving yet; a walking figure can trail a wake of its own earlier selves.

What decides all of that is a picture. The instruction medium is a grayscale image — the map — which you make with Draw, Gradient, Fill, From motion or Cut & slide. Its brightness is read as a number, and what the number means depends on which kind of map you are editing. In a Time map, brightness is a moment in the clip: black is near the start, white near the end. In a Rate map, brightness is a playback speed: with the default settings, mid grey is frozen, black plays in reverse and white plays forward. In the optional Space map, brightness is a position — which part of the frame to take the image from. Maps are handled as 16-bit grayscale, so a smooth tonal gradient really does become a smooth change in time rather than a staircase of visible steps.

This is the part ordinary editing cannot reach. In a normal editor, speed is a property of a whole clip and varies along the timeline: you set one value — 50%, reverse, freeze — and the entire frame obeys it. Here the instruction is spatial instead. A map carries a separate value for every pixel, so a single output frame can be assembled from the beginning, the middle and the end of your footage at the same time, and the borders between them are wherever your brush went. There are no keyframes to manage: the shape of the stroke is the shape of the distortion in time, and the result updates live while you draw, so you work by eye rather than by numbers.

Everything happens on the device. The only request the app makes is to the App Store, to check whether a newer version is available; there is no sign-in, no account, no in-app purchase, no analytics, and nothing you load, draw or export is uploaded or collected. Your photo library is touched exactly twice: once to read the video you load, once to save the video you export. Rendering is local, on the device’s own GPU, which is also why long or high-resolution clips are demanding — every loaded frame has to fit in memory at the resolution and length set under Settings → Video Loading.

The app runs on iPhone, iPad and Mac, and it is localized: on a device not set to Japanese the controls, menus and captions are in English, matching the names used on this page. On iPad the extra room shows the video and the map at a workable size at once, and Apple Pencil adds pressure sensitivity, with a double-tap on the side of the Pencil to show or hide the brush palette. Connect an external display over HDMI or AirPlay and the finished result fills that screen by itself while your device keeps the editor — which is what makes the app usable for installation and live work as well as for producing files.

Getting started

The main screen with each part named by red lines: the input video, the range bar, the map and its tools, and the output video
The main screen (tap to enlarge)

1. Reading the main screen

With landscape footage the screen stacks Input (your clip, untouched), the map, and Output (the result, playing live) from top to bottom. With portrait footage, on iPad in landscape and on the Mac, Input and Output sit side by side, with the map and the 3D plot below them: four panes. Turn an iPhone sideways and the bottom bar moves to the right edge, with the playback bars laid over the videos.

Each video has its own playback bar. The one under Input also sets the range in use: drag the white handle at either end to trim it, touch inside the pale band to move the playhead, or press and hold and then drag to slide the whole range without changing its length. While you drag a handle, the Input picture shows the frame at that edge, so you can see exactly where the range begins or ends. The seconds in use are printed underneath.

An audio on / off button sits at the top right of each video, and only one of the two sounds at a time. Stabilize at the bottom left of the Input tile smooths out camera shake (the rotate button that used to sit there was removed in 1.29). The button at the bottom right of each video (beside the audio button when the device is sideways) opens it full screen (see below).

The map tile is labelled with which map it is and carries a red playhead marking the row or column being read at that instant. Drag along the playhead to scrub; playback pauses while your finger is down and resumes when you lift. Anywhere else, your finger draws straight onto the map: the brush button at the bottom left picks one of the five tones or the smudge, and the Fill button beside it repaints the whole map in black, grey or white, or a gradient running top → bottom, bottom → top, left → right or right → left. The Gradient button next to it turns the map into a striped gradient you shape right there: drag to move it, pinch to change the spacing, twist with two fingers to change the angle, and tap the check mark when you are done. Next come Blur , which softens the whole map one step per tap, and Invert ; a rate map adds From motion , and a space map adds Cut & slide (tap the scissors, draw a line across the map, drag a region to slide it, then tap the banner that appears to apply it). After you draw, an undo button appears at the bottom right. The editor opens three ways: the pencil icon at the bottom right of the map, a tap on the Output video, or Edit on the bottom bar — which also holds Load, Export, Settings and Help, with Edit and Export dimmed until a video is loaded.

2. Loading a video

Tap Load and pick a clip from your photo library; the same button swaps in a different clip later. Every frame is converted on device at import, so lighter footage both loads faster and stays responsive while you draw. The overlay names the stage it has reached — Fetching from your photo library…, then Expanding frames… with a percentage and Converting and uploading to the GPU underneath it, then Loading the audio track… — and Cancel stops it at any point. Footage with continuous movement shows the effect most clearly.

You do not have to decide how much to load. For a new clip the app picks a resolution and a number of seconds from the video and from the memory free on the device; if the whole clip does not fit, it loads fewer seconds or skips frames, and an orange note under the Input bar says what it did — for example Of the … s clip, only …–… s was loaded. Tap the × to dismiss it. Change the choice under Settings → Video Loading. How the loaded part, the range in use and the length of the output relate to one another is explained step by step in How time processing works.

When loading finishes, Output looks exactly like Input. That is correct: the starting map for every mode is the pattern that gives back ordinary playback. The two pictures only diverge once you draw or generate. A new session starts on a Time map in Vertical slit mode. The map’s vertical axis is output time and its horizontal axis is position across the frame, and the starting map is a Top → bottom ramp: black at the top for the start of the range in use, white at the bottom for its end. Painting straight away therefore changes which moment each column of the picture shows while the red line passes over your stroke.

Full screen

The app has just two screens: the main screen and the editor. The full-screen button on either video opens the editor in full screen — the editor with its tools hidden, so the pictures and graphs fill the display.

In full screen, the View menu at the top right lists the panes: Input, the map, Output, 3D plot and Time graph. Pick any combination and they are laid out together in the order you picked them, in rows and columns chosen to fit the screen. The map shown is the one driving the output (the time map or the rate map); the space map can be picked once you have edited it. Opened from the 3D plot on the main screen, it starts with the 3D plot alone. Touch the screen once and the bars and buttons disappear, leaving only each pane’s name; touch again to bring them back. Edit at the top left brings the tools out so you can carry on editing, and the pen at the bottom right of a map pane starts editing that map. On larger screens (iPhone Air, Plus, Pro Max and iPad) a button at the bottom right of each pane shows that one alone. Spreading two fingers on a video also enters full screen, and pinching leaves it. To export, use Export on the main screen.

The Input pane carries the same range bar as the main screen — handles, press-and-hold to slide, touch to scrub — with the seconds underneath and a chip describing what is loaded (the size and frame rate held on the GPU; with the Input pane alone, also the source’s size and frame rate, whether frames were skipped, and the seconds loaded). Tap it to open the Video Loading settings on their own and reload from there. The button under the Input label at the top left of the pane opens a menu: choose another video from the photo library or a file, switch to a live camera, or open the load settings. The source changes without leaving the editor, and the maps you edited are kept.

The editor in full screen showing the input video, the time map, the output video and the 3D plot, with the View menu at the top right for choosing the panes
The editor in full screen (tap to enlarge)

The 3D plot and the time graph

The 3D plot and Time graph are two of the panes in the View menu, and they show how the current map spends the clip’s time. Turn either or both on beside the output picture to watch them together.

The 3D plot draws the whole clip as a box — width × height × time — with the end of the clip at the back when the view opens and the seconds marked along one lower edge. The current output frame is a surface inside the box with the actual picture mapped onto it, and each point of it sits at the moment that part of the picture is showing. A flat surface square to the time axis means the whole frame shows one moment; a tilted or bent one means different parts of the picture show different moments. Cyan lines on the surface join points that show the same moment. Orange rectangles mark the range in use and blue ones the loaded range, and the clip’s first and last frames appear faintly on the end faces — only on the side farther from you. The box turns slowly by itself (about once every 100 seconds). Drag to rotate it; let go while it is moving and it keeps spinning at that speed, or hold still before letting go to stop it. Pinch to zoom. The Section button at the top right cycles the display. Lines draws the section as slit lines instead of the picture, in the same colours as the time graph (green at the left of the picture, red at the right). Translucent and Opaque show the clip’s block itself: the front face then carries pixel-count ticks, and the earliest and latest moments the section reaches are marked by white lines across the bottom face (the last pixel row) and the left face (pixel column 0), with the seconds in red at the end of each line. When the use range is shorter than half the clip, a Whole clip / Use range button appears at the top right and fits the box’s depth to the use range. You can also reach the 3D plot on the main screen by swiping the map sideways. With a space map in use, the surface also moves sideways (up and down under a horizontal slit) to the place in the clip it is showing; a map that shows a single column at a time collapses the surface into one line, and the plane that line cuts along time — that column’s slit-scan picture — is drawn translucently beside it.

The Time graph is the flat version over one loop. The horizontal axis is one output loop and the vertical axis is time in the clip, in seconds (under a vertical slit the two swap). Swipe it sideways for two more pages: Rate (playback speed) and Space (where in the clip each strip is sampled from). Rate appears while you are working with the rate map, Space once you have edited a space map. Each line is one part of the picture, coloured from green at the left of the picture to red at the right (top to bottom under a horizontal slit; under Surface the hue gives the left–right position and the brightness the top–bottom position). A small legend at the top right shows the parts in the same colours. The orange band is the range in use, the blue band the loaded range, and the red vertical line is the current playback position. How to read both for each mode is explained in How time processing works.

The editor with each part named by red lines: Editing, Params, Sound and View along the top, the result, the map you edit with its name and Edit region below it, brush tones and sliders, and the method buttons
The editor (tap to enlarge)

3. Drawing or generating a map

The row across the top of the editor carries the map-and-mode label at the left, Params (the Parameters panel), Sound , the View menu and an X at the far right that closes the editor. The method buttons sit at the bottom right, each with its name underneath. The Editing menu at the top left picks the time map or the rate map, and can add the space map alongside; with two selected, both maps are shown as panes, a green frame marks the one being edited and a tap on the other switches to it, and the editor opens with both whenever the space map has already been edited. On the main screen, the map’s name reads Time + Space once both have been edited, with the one on show brighter. Nothing needs saving — the map is already applied.

Edit region beside the map name limits your edits to a rectangle: tap it, then drag on the map. Draw, Gradient, Fill, Blur, Gamma, Invert and From motion then act only inside it (shown as a green dashed rectangle, with the other side slightly darkened). A Fill gradient runs from one edge of the rectangle to the other, so different parts of the map can carry different gradients. The button beside it swaps to the outside of the rectangle; tap Edit region again to clear it. Cut & slide keeps its result inside the region as well (its buttons are hidden while cutting, so change the region from another method).

An edit region drawn on the right with a left-to-right fill inside it; the rectangle is a green dashed line and the map outside is unchanged
A left-to-right fill inside the rectangle: the gradient runs from edge to edge of it

Trace the map with a finger or Apple Pencil. The Draw palette holds five tones — Black, Dark grey, Grey, Light grey, White — Custom , which opens a horizontal slider for any grey, black on the left and white on the right, and shows what that grey means in seconds or speed, the Eyedropper beside that slider, which picks up the grey where you touch the map, and Smudge . Brush size runs 1–300 px, with Strength alongside; Invert, Blur and Gamma sit with Undo in the bottom row and work in every method. The eye button at the top right of the map (on the main screen and in the editor; in the editor it moves outside the picture with the map’s name when there is room) switches from Grayscale to contour lines labelled with their seconds, speed or pixel position; this does not change the map itself. The lines are coloured by map type: white on a time map, blue (reverse) through gray (frozen) to yellow (forward) on a rate map, and green (left edge) through red (right edge) on a space map, with the bands between the lines filled in on rate and space maps. The lines break around their numbers, and only the lowest number carries a unit. With a slit, turning on Readout in the same eye menu adds a thin white line at the playhead and seven faint lines along the slit (five on a vertical slit with a portrait video), poking past the edge of the map; under the map, readout values show, for the spot where each one crosses the white line, which second of the video it is showing (white) and its playback rate there (1 is normal speed, 0 a freeze, negative is reverse; blue–gray–yellow); once the space map has been changed, a third row adds which pixel of the video it shows (green–red). The colours match the contour lines, and each row is named to the right of the numbers (above them with a horizontal slit): Time, Rate, Position. The output time appears at the end of the white line, and with live input a time map shows how many seconds ago (a rate map shows the rate read from the map). With a vertical slit the time graph now runs output time downward (start at the top). With the readout on, the input video's bar on the main screen also marks in red the span of the video the output is showing right now: a dot with normal playback, a band where the map spreads time out. In Surface mode the band appears only once the space map has been edited, with Readout turned on from the space map’s eye menu; it marks the span the whole picture is showing, the same span as the red lines in the 3D plot. The input’s own playhead on that bar is the green vertical line.

The caption under the map spells out what brightness means with your current settings — “Black is the start of the clip ⁄ white the end” — and rewrites itself when you change the map or the mode. The row of buttons at the bottom right chooses the method: Draw , Gradient , From motion , Cut & slide and Fill ; the current one is shown in white, and its tools open just above the row. Anything you generate can be drawn on afterwards.

4. Exporting your first result

Tap Export. Exactly what the Output view is showing is written out as an H.264 .mp4 with its audio and saved to your photo library, with a progress bar over the output while it works — leave the app open until it finishes. The length follows the map and mode (for a time map, the seconds in the range in use) and the Duration slider in the editor’s Parameters panel (Params icon). Settings shows the resulting Export length next to Frame rate under Export, while Include audio sits under Export options. The video is written at the Resolution chosen under Video Loading (a Full-quality export uses the source’s resolution). If you declined the Photos permission, a share sheet opens instead.

Maps and modes

Two separate choices decide what a grayscale image does to your footage: the kind of map — what brightness is taken to mean — and the mode — how the map is laid over the picture. Both live behind one label at the top left of the editor, which reads something like Time map · Vertical slit — the combination a new session starts on. Tap it and a menu opens whose top section is headed Editing (Time map, Rate map, Space map) and whose lower section is headed Modes — or Mode (space uses slits only) when the space map alone is what you are editing. Time and rate are either-or; the space map can be selected with either of them, and the label then reads Time + Space or Rate + Space.

The app stores a separate image for each kind. Switching from Time map to Rate map recalls whatever is sitting in that slot instead of reinterpreting what you just drew, so the switch never overwrites your work. Maps are held as 16-bit grayscale — 65,536 levels — which is why a gentle gradient produces a genuinely gentle change in time rather than visible steps.

The settings that belong to the current kind and mode are in the Parameters panel (Params). Each setting there has an i button that opens an explanation written for the mode you are in, since the same control can mean different things in different modes.

Time map — brightness is a moment

Black points at the beginning of the range in use, white at the end, and every grey in between is a moment in between. The caption under the map in the editor always states the current reading: “Black is the start of the clip ⁄ white the end.”

In the slit modes, Time from and Time to in the Parameters panel (Params) narrow the span the two ends of the scale point at. These are the same two values as the white handles on the playback bar under the input video, so moving either one moves the other; setting Time from above Time to plays in reverse. Once you narrow the range, the caption switches to real seconds — “Black 2.0s into the clip ⁄ white 6.5s” — and Reload only the range in use, just below, re-imports exactly that span at the same resolution. Because fewer seconds are loaded, fewer frames need to be skipped to fit.

A time map always plays at natural speed: at a Duration of 1× the output lasts exactly as long as the range in use, and 2× shows the same range at half speed.

In Surface mode a time map means something different: a relative shift rather than an absolute position. Shift (s), 2 seconds by default, is the total spread. Black runs half of it earlier than the current moment, mid grey is unchanged, white half of it later, and time wraps — a pixel pushed past the end of the range in use reappears at its beginning.

The default time map is whichever pattern gives back ordinary playback: a Top → bottom ramp under a vertical slit, Left → right under a horizontal one, and All grey under Surface. Reach for a time map when you want particular places in the frame pinned to particular moments — this half of the picture in the past, that half in the present.

Rate map — brightness is a speed

Here brightness sets how fast time runs, not where it is. In the slit modes the app accumulates that speed along the output time axis, so the moment shown at any point is the sum of everything before it: change one band high in a vertical-slit map and everything below it moves too.

Speed runs from Black rate to White rate (−2 to +2), interpolated by brightness. The defaults are 0 and +1: black is a hard freeze, mid grey half speed and white ordinary playback. With reverse, at the top right of the Parameters panel, sets black to −1 and white to +1, so black plays in reverse and mid grey freezes; Reset goes back to the defaults (Duration and Anchor at included). The solid fills report the resulting speed in words, and the four ramps report both ends at once using the shortened forms — Frozen, Normal, Slow, Fast, Reverse, Slow reverse, Fast reverse. In the slit modes, as on a surface, every slit meets at the Anchor at moment of the loop (shown in seconds; with Readout values on, the map marks it with a dashed line) and accumulates forward and back from there (up to 1.21 this was called Start point, and the slits always met at the start of the output). If the resulting path would run off either end of the range, the app slides the whole path back inside, and compresses it only when sliding is not enough — so the result never simply sticks against the first or last frame (in that case the point of the clip where the slits meet moves, but the moment they meet does not).

In Surface mode every pixel becomes an independent clock, reading brightness through the same Black rate and White rate as a slit. Anchor at (0.5 by default) is where they all agree: at that fraction of the loop, every pixel shows that point of the range — 0 is the start of the clip at the start of the loop, 0.5 the middle at the middle, 1 the end at the end (up to 1.21 a separate Anchor choice of Start, Middle or End did this). With forward-only speeds no pixel wraps partway through the loop; with reverse pixels, moving Anchor at away from 0.5 can make them jump.

The default rate map is All white in every mode, which is plain normal playback under a slit and under Surface alike. Reach for a rate map when the interesting question is how fast a region moves rather than which frame it shows: one corner crawling, another racing, a third running backwards.

Space map — brightness is a place

The space map is optional, and it bends space rather than time: brightness says where in the frame to take the picture from. It is applied on top of whichever map — time or rate — is currently driving the warp, never instead of it.

It is always applied slit-wise. Surface disappears from the mode picker while the space map is the thing you are editing, and if the time side is set to Surface the space map behaves as a vertical slit. Under a vertical slit, black is the left edge of the source and white the right; under a horizontal slit, black is the top and white the bottom.

Its defaults are the identity ramps — Left → right for a vertical slit, Top → bottom for a horizontal one — which is exactly why ignoring the space map changes nothing. Repaint it All grey and every column shows the same column of the source, smearing one slit across the whole frame; Right → left mirrors the picture; a ramp running along the time axis is labelled Slit scan. Once you have edited it, a Space map in use button appears on the main screen, and the space map becomes a page of the map tile, between the time map and the 3D plot — swipe the map sideways to see it. To stop using it, open the method list while editing the space map and choose Reset to default: the space map returns to its unedited state and disappears from the main screen.

The three modes

Vertical slit The map’s vertical axis is output time and its horizontal axis is position across the frame. Each output column takes its moment from one column of the map, read at the height the playhead has reached — the red line drawn across the map on the main screen. Slit modes take the nearest source frame rather than blending two, which keeps thinned-out frames from ghosting together.
Horizontal slit The same idea with the axes swapped: the map’s horizontal axis is output time, its vertical axis is position down the frame, and the red line sweeps left to right.
Surface No time axis at all. The map lies directly over the picture and every pixel is shifted in time independently, the whole image at once, on every output frame. The shape you draw becomes the distortion in time directly, which makes it the easiest mode to read. Surface blends between neighbouring frames rather than snapping to the nearest one, so motion stays smooth.

Kind and mode are independent, so there are eight useful combinations — nine minus space-plus-surface, which does not exist. The same drawing behaves completely differently across them: a Top → bottom ramp is ordinary playback under a vertical slit, a still frame with a different moment in every row under a horizontal one, and a smooth top-to-bottom time ramp under Surface. Because of that, changing the mode rebuilds any map you have not edited into the new mode’s normal-playback default; maps you have drawn on are left exactly as they are. Loading a different video rebuilds all three, edited or not, at the new clip’s aspect ratio.

One consequence catches people out. For a rate map in the slit modes, the map’s size along its time axis — height for a vertical slit, width for a horizontal one — is the duration of the result, so a map built for a 16:9 clip gives roughly a 17-second output under a vertical slit and a 30-second one under a horizontal slit: same footage, same drawing, same settings otherwise. A time map is different: its output lasts as long as the range in use. The numbers, and the controls that change them, are under How long the export will be and Settings → Map resolution (time detail).

Building a map

The row of round buttons at the bottom right of the editor chooses how you build the map: Draw , Gradient , From motion , Cut & slide and Presets , in that order, with the current one in white. Tap a method and its detailed tools open just above the row; tap the current method again to fold them away. To return a map to normal playback for the current mode and mark it unedited again, tap the button marked Default in Fill (or press and hold Undo). Switching methods changes only the detailed tools. The map you are editing, the mode it is applied in, and the live preview all stay as they were. The caption just above the tools always states what black, grey and white mean for the current map and mode, so it is worth reading again after any change of mode or parameter.

At the left of the bottom row, these tools work in every method: Undo (and Redo once you have undone something), Invert , Blur and Gamma . Invert swaps the map’s dark and light as one step each tap. Blur and Gamma open a slider that works on the map as it was when you opened it; what you change counts as one step, and it is committed when you close the slider, start a stroke, undo or switch method. Tapping Invert, Blur or Gamma deselects any other method (Gradient, Fill, From motion, Cut & slide) and switches to Draw; the pen tools can stay open alongside. Undo and Redo in Gradient or Cut & slide, which rebuild the map from where you started, likewise finish that method first, so the change is not rebuilt away. Gradient and From motion also carry a clockwise refresh button that re-runs the generation. Outside Draw and Cut & slide, a drag on the preview scrubs the playhead.

The View menu at the top right of the editor chooses the panes: Input, the maps, Output, 3D plot and Time graph. They are laid out in the order you pick them, in rows and columns chosen to fit the screen; the editor starts with the output and the map, and an iPhone shows up to four while the tools are out. Add the 3D plot and you can watch the surface bend while you draw. Adding the other map puts the two maps side by side; the one being edited has a green frame, and a tap on the other switches to it. Overlay the map on the output lays the map over the picture at partial opacity, which is how you land a stroke on a particular object rather than a particular part of the frame. Full screen hides the tools. The arrangement is remembered the next time you open the editor. The red playhead on a map sticks out a little past the picture on both sides: grab it there to scrub without drawing. The choice of panes is independent of what an external display is showing — that shows the output alone, or mirrors the screen if you chose that in Settings; while a display is connected, a Display button beside View switches between the two.

Draw

Trace over the map with a finger or Apple Pencil. A stroke does not replace the tone underneath; it eases every pixel under the brush towards the tone you picked, most strongly at the centre of the brush and fading to nothing at its edge. Tone therefore builds up over repeated passes and never overshoots the target, which is what makes soft shading possible.

Undo at the bottom left steps back one change. Press it again to go further back, one step at a time; it reaches past strokes into whatever else changed the map (a fill, a generated gradient, a reset), and a slider drag counts as one step. Up to 30 steps are kept per map, and they are forgotten when the app quits. Press and hold that button for Reset to default, which returns the map to normal playback for the current mode. There is no separate eraser; painting with White pulls the map back to white.

Smudge works differently from the tones — it picks up the tone already under the brush and drags it along the direction of travel, blending as it goes, which is the quickest way to soften a boundary you have already drawn. To repaint the whole canvas with a single tone or a ramp, use the Fill method in the bottom row (up to 1.26 the same patterns were also offered inside the Draw palette, and the method was called Presets).

Brush1–300 px. This is the radius, measured in map pixels rather than screen pixels, so on a default map (512 px on the short edge) a brush of 300 covers the whole frame at once. The slider is deliberately non-linear — size follows the square of the slider position — so the first half of its travel covers everything up to about 75 px, and the default of 80 sits near the middle.
Strength0.05–1, default 0.3. How far a single pass moves towards the chosen tone. Low values let you build up tone gradually; at 1 a single stroke lands almost the full tone at the centre of the brush.

Choosing Draw shows the palette with the Brush and Strength sliders beneath it straight away. To soften, reshape or flip the whole map, use Blur, Gamma and Invert at the bottom left, then keep painting on the result. Up to 1.21 these sat among the pen tools and were committed with an Apply adjustments button; that button is gone.

With Apple Pencil, pressure scales the brush. A finger always counts as an average press, so a Pencil can go both thinner than a finger stroke (a light touch narrows the brush to roughly a sixth of the set size) and thicker (hard pressure widens it to about one and a half times). The brush also bleeds, which helps with a finger: hold still and the app keeps laying down tone at that point every display frame while the affected radius grows — about three times the brush size after four seconds or so. Each deposit is very light, so the result is a soft pool of tone spreading outward rather than a hard dot. Double-tapping the side of an Apple Pencil opens and closes the palette, so you can change tone without reaching for the toolbar.

Playback pauses automatically the moment a stroke begins and resumes when you lift, so the device is not rendering video and computing brush strokes at the same time. That is what keeps the line following your finger.

Gradient

Choosing Gradient immediately lays a regular wave over the current map, and every slider regenerates it live as you drag. The pattern is a sine wave: brightness runs smoothly from black to white and back, measured along a direction you choose.

How the wave meets the map you already have is your choice: Replace paints over it, Add adds the wave to it, and Multiply (the default) multiplies it, which keeps the shape of your map and cuts the stripes into it. Add and Multiply always build on the map as it was when you started the gradient, so moving the pattern never piles up; where Add goes past white, the whole map is divided by its brightest point so it still fits. Finish and start again to layer another gradient on top. On the main screen the same three choices sit next to the check mark while you shape a gradient.

Amplitude0–1. How far the wave swings. At 1 it reaches full black and full white; at 0 the map is flat grey and only Offset has any effect.
Period8–1024 px. The length of one complete cycle, in map pixels. Short periods give a striped, stuttering result; long ones a single slow ramp.
Angle (°)0–360. The direction the wave travels. 0° runs it top to bottom, producing horizontal bands; 90° runs it left to right, producing vertical bands; anything between gives diagonals.
Phase (°)0–360. Slides the pattern along its own direction without changing its shape. Use it to move where the black and white bands fall relative to the subject.
Offset−0.5 to +0.5. Shifts the centre level of the wave away from mid grey, biasing the whole map dark or light. A small amplitude combined with an offset gives a gentle ripple around one chosen moment instead of a full sweep through the clip.

The grid button offers five quick patterns — Vertical stripes (90°), Horizontal stripes (0°), Diagonal (45°), Fine stripes and Gentle waves. The first three set both period and angle; the last two change only the period and keep the angle you are already using. What a gradient does depends entirely on the mode: on a time map in vertical slit, a wave running down the frame makes the clip run forwards, then backwards, then forwards again, once per cycle, while the same wave running across the frame instead freezes each column at a different moment.

Fill

Seven buttons repaint the whole map in one tap: All black, All grey, All white, Top → bottom, Bottom → top, Left → right and Right → left.

Each button carries a thumbnail of the pattern, its name, and — most usefully — a line underneath saying what that pattern will actually do given the map kind, the mode, and the parameters you have set. Those labels are computed rather than fixed, so they change the moment you change anything that matters. As with Gradient, you can choose Replace (the default), Add or Multiply.

The Fill tools: the blend choice and seven buttons, each with a thumbnail and a caption saying what it will do with the current settings

On a time map in vertical slit, where the map’s vertical axis is output time, they read like this:

All blackFrozen at start
All greyFrozen mid-clip
All whiteFrozen at end
Top → bottomNormal playback — the ramp runs along the time axis, in the forward direction
Bottom → topReverse
Left → rightLeft is earlier — this ramp runs across the frame instead, so each column freezes at a different moment
Right → leftRight is earlier

Switch the same map to horizontal slit and the two groups trade places, because the time axis is now horizontal: Left → right becomes Normal playback and Top → bottom becomes “Top is earlier”. On a surface time map, where brightness shifts each pixel a little either side of now, the three solid tones report the offset in seconds taken from Shift (s) — with Shift at 3 seconds they read “1.5s earlier”, Normal playback and “1.5s later” — while all four ramps read simply “Time ramp”.

On a rate map the labels are driven by Black rate and White rate in the Parameters panel, which set what black and white mean. With the defaults (0 and +1), All white reads as forward and All black as frozen; after With reverse (−1 and +1), All grey reads as frozen and All black as reverse. The four ramps show both ends at once — joined by an arrow when the ramp runs along the time axis, or by a wave dash when it runs across the frame, since in that case the two speeds coexist in different parts of the picture rather than following one another.

From motion

This builds the map out of the footage itself. On selecting it, the app walks the whole loaded clip once on the GPU, accumulating how much each pixel’s brightness changes from frame to frame; busy areas come out light, still areas dark. The result of that pass is cached for the loaded clip, so every slider afterwards responds instantly.

The clock button toggles between the two states the caption names, Still and History. In Still, the bar-chart button switches what is accumulated, which the same caption reports: average favours sustained motion, so something that moved throughout the clip outweighs a single event, while maximum catches anything that moved at all, even for one frame, which is better for isolating a single gesture or a passing object. The map is then normalised between its 1st and 99th percentile, so one bright flash or a cut cannot flatten everything else into grey. Gamma and Blur shape the result and the invert button flips it, making motion dark instead of light. Unlike in Draw these are part of the generation itself, so there is nothing to apply — the map is rebuilt each time you move a slider.

History is a different kind of map altogether. Instead of one image summarising the whole clip, the app builds one map per frame from a decaying accumulator: each frame adds the new movement and fades what came before. Trail (s) (0.5–10, default 3) sets how long that fade takes. The result is a map that moves — a bright trail appears where something passes and dims over the next few seconds, so the time warp itself shifts continuously as the clip plays instead of standing still. The map thumbnail updates as you watch, and consecutive frames of the map are cross-faded, so even a clip whose frames were thinned at import changes smoothly rather than stepping.

Three limits are worth knowing. History works only in Surface mode: a slit reads a single row or column of the map at each instant, so a moving map would add nothing there. In the slit modes the clock button is dimmed and the caption says History is available only in Surface mode, and switching an active history map to a slit mode stops it. History applies to time and rate maps only — the button is hidden while you are editing a space map, which always uses the still analysis. And the per-frame data is held at reduced resolution (at least half, and further reduced for long clips, to stay inside a fixed memory budget), so a history map is softer than a still one. Applying any fixed image afterwards — a fill, a gradient, a reset, or switching to Draw or Cut & slide — stops the moving map and leaves the state it had reached behind as an ordinary still map.

Cut & slide

This method splits the map in two with a line and lets you move, scale and reshape the pieces. The gap that opens is not left empty: the values that used to sit on either side of the cut are joined across it and blended, so the edge looks stretched rather than torn, and a piece dragged far away stays connected to where it came from by a band. On a time or rate map that stretches one region of time away from its neighbour; on the space map it builds structures where part of the picture is cut open.

A small palette above the tool row chooses how the line is drawn. Freehand takes the line you trace: draw it across the map from edge to edge (you can start and finish outside the map, and an end that stops inside is extended to the edge in the direction it was travelling), or draw a loop around a region. A loop closes where the line crosses itself, so its start and end do not have to meet exactly, and the tiny loops a wobbling fingertip makes are ignored. Straight takes two taps: tap the start point, which is marked, then the end point, and the map is cut along the straight line through them, extended to the edges — a faint dashed line previews where it will run. Polygon takes one tap per corner and joins them in order; once three are placed the first point is drawn larger, and tapping it closes the shape and cuts (the enclosed part is the piece you move). The caption under the buttons tells you which step you are on, and turns orange for a few seconds if a line could not split the map.

Once the map is split, drag either piece; the caption reads Drag to move, corner handles to reshape, two fingers to scale. Adjust as often as you like until Apply. The piece you touched last shows a dotted frame with a white handle at each corner: drag a handle to pull that corner and turn the piece into a trapezoid, or pinch with two fingers to scale it (and move it) about your fingers. The handles stay inside the map, so a corner pushed outside can still be dragged back from the edge. The original cut is shown as a yellow dashed line and its moved position as a cyan dotted one. Lifting your finger commits nothing, so you can grab and move again as often as you like. A piece enclosed by a loop always stays on top; otherwise the piece you dragged last does. Playback pauses while you touch the map, as in Draw. The tool row holds:

Start overThrows away the line and the changes and lets you draw a new line on the same base. In Straight mode it also cancels a start point you have placed; in Polygon mode it removes the last point placed.
ApplyMakes the current result the new base, ready for another cut.
RevertReturns the map to how it was when you opened Cut & slide, discarding every cut since.

Combining the methods

The methods are not symmetrical. Anything generated can be drawn over: entering Draw seeds its canvas from whatever the map currently holds, so a gradient, a fill or a motion map becomes the base and your strokes add to it. Cut & slide likewise starts from the current map, drawn or generated. The reverse does not hold — choosing Gradient or From motion after drawing rebuilds the map from scratch and discards the strokes, with no undo to get them back.

Sound

If the clip you loaded carries an audio track, that audio is put through the same time manipulation as the picture. The frame is divided into regions — a grid in Surface, strips in the slit modes — and each region sounds according to how time is running in that part of the image — a region running backwards plays backwards, a region racing ahead climbs in pitch. Nothing is synthesised from scratch: every sound you hear is the clip’s own recording, read at a different place and a different speed for each region.

The two audio buttons

An audio on / off button sits at the top right of each video. The one over the input turns on Source audio; the one over the output turns on Result audio. Only one of the two plays at a time — switching on either switches the other off, since both are built from the same recording and layering them only doubles it.

What the result audio is doing

For every output frame the app evaluates the same map arithmetic the picture uses, but on the CPU and averaged over each region. That gives each region one position in the recording — 0 is the start of the clip, 1 the end. Comparing that position with the previous frame’s gives the region its playback rate, clamped to a range of ±4× so that an extreme map cannot run away. Each region is then a voice: one reader moving through the recording at that position and that rate.

Granular and Rate playback

Open the Sound panel with the waveform icon at the top of the editor. The segmented control at the top of it chooses Off, Granular, or Rate playback — the same two methods the output audio button toggles between — and its i explains both. Both read the recording at the region’s rate, so in both of them speed shows up as pitch, negative speeds play backwards, and a region at a dead stop is silent; what differs is how often a voice is pulled back to where the picture says it should be.

GranularEach voice plays two overlapping grains under a raised-cosine window, and each grain is re-seeded to the region’s current position every Grain (ms). A granular voice therefore re-articulates constantly and can never drift away from the picture, which is what keeps it locked to a fast-moving map. Grain (ms) runs 20–200 and is only shown for this method: short grains track fast changes crisply but sound grainier; long grains are smoother but smear detail.
Rate playbackEach voice reads the recording as one continuous stream, like tape, so half speed is an octave down, double speed an octave up, and negative rates run the recording backwards. It only jumps back to the picture’s position when it has drifted more than about a third of a second, and does so behind a short fade rather than a click.

Granular suits maps that change quickly and material whose identity matters — speech, music, a single recognisable sound — because the constant re-seeding keeps every region pinned to the moment its part of the frame is showing. Rate playback suits material read as texture — water, traffic, wind, a crowd — and is the clearest way to hear what a rate map is doing, since the speed of each region arrives as pitch, uninterrupted.

The Sound panel with the explanation of Granular and Rate playback open
The i next to the method explains both

Reverb

Reverb is off until you turn it on, and it is not a fixed room. The wet amount follows the spread of time across the frame: the app measures the gap between the earliest and the latest region in the current frame and drives the reverb from it. A flat map, where the whole frame sits at the same moment, stays dry. A map that scatters the frame across the clip opens the reverb up, reaching full depth once the spread is around half the clip’s length. The value is smoothed, so the tail swells and recedes with the map instead of jumping. Depth sets the ceiling that spread can reach; the tail itself is a fixed two and a half seconds behind a short pre-delay. In practice this means scattered time is heard as space.

Voices, and what they cost

In Surface, Voice count chooses how finely the frame is divided: 3×3 (9), 5×3 (15), 7×5 (35, the default) or 9×7 (63). In the slit modes the control becomes Voice divisions, a stepper from 1 to 16 (default 7) that sets how many strips the frame is split into at right angles to the slit; a note beside it says whether they are split left to right or top to bottom. More voices resolve the map more finely and, where stereo comes from their position, give a wider and more detailed stereo image. Fewer voices average a larger area into each one, which sounds broader and blunter. Under a Horizontal slit the output is the same in both channels, so Stereo width is dimmed, with a note explaining why.

Every voice is synthesised sample by sample on the audio thread while the GPU is warping the picture, so 63 voices cost roughly seven times what 9 do. If the audio starts crackling or dropping out, or the preview stutters after you raise the count, step back down — the setting is free to change at any time. The summed voices are soft-clipped before output, so a loud map compresses rather than tears, but pull Volume down rather than leaning on that.

VolumeLevel of the result audio, 0 to 1.
Grain (ms)Grain length, 20–200 ms, default 85. Granular only.
Stereo width0 places every voice in the centre; 1 spreads them fully left to right. Dimmed under a Horizontal slit.
ReverbThe switch, and Depth — the ceiling the spread of time can drive it to.
Voice count / Voice divisionsSurface: a grid of 9, 15, 35 or 63 cells. Slit modes: 1–16 strips. Both have an i explaining how the voices are laid out in the current mode.
Export audioInclude audio in the export — whether the exported file carries a soundtrack. The same switch appears as Include audio under Settings → Export options.

In the exported file

These settings carry through to the export. The export does not record what your speakers played; it runs the same synthesis offline, frame by frame, against the same region positions, so the file matches what you heard in the preview — method, grain length, stereo width, reverb, voice count and volume included.

Two things will give you a silent file. If Result audio is off when you export, nothing is written. And because turning on Source audio switches the result off, exporting while you are monitoring the untouched material also produces silence. Turn the output audio back on before you export.

If you hear nothing

Exporting and quality

Export, on the bar at the bottom of the screen, renders exactly what the output view is showing and writes it as an H.264 .mp4, which is then saved to your photo library. The render is not a copy of the preview: the app walks the output from beginning to end one frame at a time and draws each frame at full quality, so it takes longer than the piece is long. Playback stops while it runs, a progress bar reads Exporting…, and the button stays disabled until it finishes. Keep the app open while it runs; a longer piece takes proportionally longer. A video cannot be loaded while an export is running.

When it is done the app confirms that the file went to your photo library. If you declined the photo library permission the work is not lost: a share sheet opens with the finished file instead, so you can send it to Files, AirDrop it, or hand it to another app. The same happens if the save itself fails.

Sound is written into the same file as stereo AAC, and it is the manipulated sound — the grains or rates are recomputed offline against the same per-region times the picture uses, so the export matches what you heard in the preview rather than the original audio. Turn it off with Include audio in the export, in the editor’s sound panel or as Include audio under Export options in Settings. Muting the output, or setting the sound method to Off, also leaves the file silent.

How long the export will be

You never type the length in. It is a base length that the current map and mode work out for themselves, multiplied by the Duration slider in the editor’s Parameters panel (Params). The slider runs from ¼× to 4× and shows the result in seconds next to it; its i explains the base for the mode you are in, and Settings also reports the result as Export length.

Time map, any modeThe seconds in the range in use — the span between the white handles. The result always plays at natural speed at 1×.
Rate map, Vertical slitThe map’s height in pixels, read as 30 px per second and clamped to 2–120 seconds.
Rate map, Horizontal slitThe same, but from the map’s width — the time axis is horizontal in this mode.
Rate map, SurfaceThe seconds in the range in use divided by the fastest rate anywhere in the map, ignoring direction — the time the fastest pixel takes to cross the range exactly once. A map containing faster areas gives a shorter output. Rates below 0.1× count as 0.1×, so an almost black map runs at most ten times the range.

For a time map, what you are really choosing with the handles is the length. Until you touch a handle the range fits itself inside the loaded part — in the slit modes to the length the map’s time axis suggests, in Surface to the whole loaded part — so the default already plays at natural speed; once you move one, it stays where you put them.

For a slit rate map the shape of the map is the shape of the time: a tall map is a long, slow video, a wide map a short one with finer detail across the frame. Changing the map’s dimensions is the honest way to change that length, and the controls for that live under Settings → Map resolution (time detail). Stretching the Duration slider instead is perfectly usable, but understand what it does: above 1× the map is resampled between its own pixels, so the steps in time get softer the further you push it. Under a slit, while the accumulated path still fits inside the range the speed is unchanged; once it no longer fits, the whole path is scaled down evenly and plays slower. Under Surface, lengthening a rate map does not change the speed; the paths simply get longer and wrap around within the range.

Frame rate (Settings → Export) is 24, 30 or 60 fps, plus 120 and 240 fps when the source was shot at that rate. It changes how many frames are written and how long the render takes, not how long the result plays. Above 60 fps the bit rate rises with the frame rate, so each frame keeps its quality.

Full-quality export

Export method under Settings → Export offers Preview export, which renders from the working copy in memory, and Full-quality export, which renders from the source file. Preview export is the default on iPhone and iPad, and Full-quality export on the Mac. With Full-quality export the result comes out at the source’s full resolution whatever you chose under Video Loading, with no limit on length from what fits in memory. If the source is HDR (HLG or PQ), Keep HDR writes HEVC 10-bit with the same transfer function. Colours pass through as the source stored them, so they can differ very slightly from the preview. Maps stay exactly as you made them; only the frames are read again.

It uses a lot of memory and takes longer. A device with 8 GB of memory or more is recommended (iPhone 15 Pro or later, iPads with an M-series chip, and so on). On other devices the export may fail.

The screen stays awake while it runs. If the app goes to the background the export stops; tap Export again to choose Resume Export or Save Finished Part as Video. When the loaded video is large, the app releases it for the duration of the export and reloads it afterwards, so the preview pauses until then.

How it works. The loaded video is kept as an untouched copy (no frame skipping or downscaling) in the app’s temporary folder; only a downscaled, frame-skipped version of it is held on the GPU. Full-quality export re-reads that copy in chunks instead of the GPU video, so the loaded range is exported at the original resolution and frame rate. HDR sources are written as 10-bit HEVC in HLG or PQ. Only the copy of the video being edited is kept; it is deleted when you open another video or quit the app (anything left over is deleted at the next launch). The finished part of a cancelled export is kept in the app’s Application Support folder. Not available for video captured from the camera, which exports from the GPU video.

Resolution, and why it is not your camera’s

A Preview export comes out at the size of the working copy held in memory, not necessarily the size of the file you picked. That size is fixed at import by Resolution in Settings → Video Loading: Full, 1/2, 1/4, 1/8 or 1/16 of the source’s dimensions, with the actual pixel size of each shown under the buttons. The aspect ratio and any rotation follow the source, and the app never scales up — Full is the source’s own size. The bit rate scales with the frame area — about 11 Mbps for 1280×720, and never less than 6 Mbps — so compression is rarely what you are seeing; the working resolution is.

Changing Resolution or Seconds to load does nothing to the video already loaded until you tap Reload with these settings; the preview and the export both pick up the result. Watch the Memory line under them: it tells you what the combination will ask of the device, and Frames tells you whether frames will be skipped to fit, before you commit to it.

The range in use is part of the export

The white handles on the bar under the input video decide which part of the source the render draws from, and the range is shown in seconds underneath. It applies in every mode, not only the slit modes — the editor’s Time from and Time to sliders are the same two numbers. Press and hold the band and drag to slide the whole range without changing its length.

The range can reach beyond the part of the clip that is loaded, which the bar shows slightly brighter when only part of the clip is in memory. Moments outside the loaded part cannot move — they stick to the frame at its edge — so the caption then reads Frozen outside the loaded part, with a Reload here button beside it. Tapping it reloads at the same resolution and the same number of seconds, placed so the range in use sits in the middle (if the range is longer than that, the range’s length is loaded, skipping frames if needed). The same notice appears under the range bar of the Input pane in the editor, and below both videos when portrait footage puts them side by side.

If the clip was loaded with frames skipped, narrowing the range in use brings up a notice over the input video as soon as fewer frames need to be skipped, such as This range fits at 60 fps; Reload loads the longest range that fits at that rate, with the range in use in the middle. A 120 fps clip is offered at 40 → 60 → 120 fps in turn.

Before a final export in a slit mode with a time map, it is also worth tapping Reload only the range in use in the Parameters panel, under Time from and Time to. It re-imports exactly the seconds between the handles at the same resolution; fewer seconds in memory means fewer frames need to be skipped, which gives the time axis more real frames to land on. The button is built only for that combination — on a rate map or in Surface it is not there.

Sustained exporting warms the device and drains the battery. For a long piece, plug in first.

Live camera

Time-shape the camera image as you film. Start from Load → Live camera, or from “Live camera” on the first screen. On a device with a camera, the app asks for camera access the first time; the video never leaves the device.

Settings

Settings is the fourth button on the bottom bar. It opens as a sheet over the main screen; Done at the top right closes it. There is nothing to save — every control takes effect the moment you change it, with two deliberate exceptions: Video Loading and the map dimensions, each of which has its own button.

Video Loading

This section decides how much of the video is held in memory and at what size, and it is the section to reach for when frames are being skipped, the app runs out of memory, or it feels slow. The same section opens on its own when you tap the loading information on the Input pane in the editor. Until a video is loaded its controls are shown greyed out.

Settings, Video Loading: Resolution, Seconds to load, and a Frames line saying frames will be skipped
Video Loading. The Frames line shows when frames are skipped; its i gives the reason
ResolutionFull / 1/2 / 1/4 / 1/8 / 1/16 — the size the loaded video is worked at, as a fraction of the source; the pixel size of each option is printed under it. The file in your photo library is never modified. This is also the resolution the export is written at.
Seconds to loadHow much of the video to use, from 0.5 s up to the whole clip in steps of 0.1 s, shown as “… s of … s”. It never drops below the length of the range in use on the main screen. The line underneath gives the start time, which always follows the beginning of the range in use (moving earlier only when the seconds would otherwise run past the end of the clip).
FramesA read-out. No frames skipped with the source frame rate, or an orange warning giving the source and loaded frame rates and how many frames make one (“1 of every … frames”); the i beside it gives the reason: either the GPU can hold at most 2,048 frames at once, or the clip does not fit in memory. Below 8 fps it adds Motion will look quite choppy.
MemoryA read-out: how much the combination uses against what this device can spare right now, and the width × height × number of frames behind it. Frames are stored uncompressed at 4 bytes per pixel.
ReloadReload with these settings — re-imports the clip you already have with the resolution and seconds chosen here, and closes the sheet so you can watch the progress on the main screen, keeping the range in use as it is. Changes not applied yet appears above it when the choice differs from what is loaded — which includes moving the start of the range in use on the main screen, or stretching the range past the loaded length, since the plan follows the range; otherwise it is greyed out, as it is while a video is loading or exporting.

There is no frame-rate setting: a lower frame rate would not make loading any faster, so the app only skips frames when it has to. When you load a new video, both values are chosen again from that video and the free memory on the device. The app starts from the largest resolution whose long edge is 1280 px or less, loads the whole clip if it fits, and otherwise cuts back in order: first fewer seconds (aiming for at least 4 seconds, or the whole clip if it is shorter), then skipped frames (keeping at least 15 fps), then the next lower resolution.

The two choices buy different things. Resolution buys detail within a frame, and costs memory in proportion to area — Full is four times the memory of 1/2, not twice. Seconds to load trades length against time resolution: the fewer seconds you load, the less the app needs to skip frames. That matters most in the slit modes: there the renderer samples the nearest stored frame with no blending, so a clip thinned to a low frame rate steps visibly. Surface mode blends between the two nearest frames instead, and tolerates thinning much better. If your output stutters rather than flows, load fewer seconds or a lower resolution until Frames reports no skipping.

Reloading keeps your work. The maps are untouched, because the app only rebuilds maps when you load a different video. The audio track is extracted again. Reload with these settings and Reload here keep the range in use exactly where it is, and from then on it counts as set by hand. For other reloads of the same clip, range handles you have moved stay where you put them; if you never touched them, they are re-fitted to the material now in memory. If a reload is cancelled or fails after the old copy has been released, the app reloads the previous settings and tells you so.

Export

Frame rate24 / 30 / 60 fps, plus 120 / 240 fps when the source has that many frames. The frame rate written into the exported file.
Export methodPreview export or Full-quality export; see Full-quality export. With the latter, Keep HDR appears for HDR sources.
Export lengthA read-out of the current output length in seconds, the same number shown next to Duration in the editor.

Frame rate does not change how long the output runs; it changes how many frames are written to cover that time (length × fps). Nor does it create detail that is not there: at 60 fps the renderer still has only the frames you loaded to draw from, so in slit modes a high export rate on a thinned clip just repeats stored frames. Get Frames under Video Loading to report no skipping first, then raise the export rate. Length itself is explained under How long the export will be.

Map resolution (time detail)

The size of the map is not a cosmetic choice. In the slit modes the map’s time axis is the timeline of the output, one row (or column) per rendered moment, so its size decides how finely time is subdivided — and, for a rate map, how long the result runs. For a time map it sets the length the range in use fits itself to until you move a handle.

Map shapeSquare / Portrait / Landscape. A shortcut that sets width and height to 512×512, 512×1024, or 1024×512. The selected segment is inferred from the current numbers rather than remembered.
Width128–2048 px, in steps of 128. The time axis in Horizontal slit.
Height128–2048 px, in steps of 128. The time axis in Vertical slit.
EstimateEstimated output length — what the output would run to at these dimensions. It is an estimate because it uses the numbers in the steppers, while Export length above reports the map actually loaded; the two agree once you rebuild.
RebuildRebuild the map at this resolution — regenerates the maps at the width and height set here. Maps you have already edited are left alone.
Match videoMatch the source video’s aspect ratio (default) — returns the map to following the clip: short side 512, long side scaled to the video’s aspect ratio and rounded to 8 px, then rebuilt. Greyed out when no video is loaded.

By default a map is built to match the source video’s aspect ratio with its short side at 512 px, so a 16:9 clip gets a 912×512 map. Setting a size by hand switches the map to 1:1 pixel display, and anything extending past the frame can be reached by scrolling in the editor.

For a rate map in the slit modes the length works out at one pixel of the time axis per 1/30 second, before the Duration multiplier in the editor is applied (slider centre is 1×, the ends ×0.25 and ×4):

Time axisBase lengthWith Duration
128 px4.3 s1.1–17 s
512 px17.1 s4.3–68 s
1024 px34.1 s8.5–137 s
2048 px68.3 s17–273 s

A tall map therefore gives a long, slow output; a wide, short one gives a brief, densely scanned output. That also explains the 912×512 default: about 17 seconds under a vertical slit, but about 30 under a horizontal one, because the time axis is the other side. A time map in any mode runs as long as the range in use, and a rate map in Surface runs as long as its fastest pixel takes to cross the range — in every case times the Duration multiplier.

Rebuilding leaves edited maps alone, which is usually what you want — it would be unpleasant to lose a drawing to a settings change — but it does mean the button can look like it did nothing. A map you have drawn on, generated, or repainted keeps its old dimensions, and fills and gradients applied later inherit those dimensions rather than the new ones. To move an edited map to a new size, reset it with the counter-clockwise arrow in the editor’s tool row: that reset rebuilds the map at the size set here, at the cost of the drawing.

Loading a different video keeps the maps you edited: they are stretched to a size matched to the new clip’s aspect ratio, along with their undo history, and a size you set by hand is discarded. Maps you never edited are rebuilt to the new clip’s default. Reloading the same clip — the reload buttons — leaves every map as it is.

Export options

Include audioOn by default. Writes the time-manipulated audio into the exported file. Turn it off for a silent .mp4. It has no effect when the source has no audio track, or when the sound is muted or set to Off in the editor’s sound panel — those settings carry through to the export as they are.

Current source

The last section is a read-out of what is actually in memory right now, and it is the fastest way to confirm that the settings above did what you expected.

Loaded videoThe file name. Reads No video loaded when there is none.
SizeThe working copy’s pixel dimensions, after the resolution choice and any rotation — not the dimensions of the original file.
FramesHow many frames are actually held.
LengthThe duration of the whole clip.
Loaded rangeThe span of the clip, in seconds, that those frames cover.

The Input pane in the editor, shown alone in full screen, states the effective frame rate directly, next to the source’s. If that number is well under the frame rate you shot at, the output will step rather than flow in the slit modes, and the fix is fewer seconds loaded, a lower resolution, or a shorter range reloaded.

There is nothing else in Settings, and that is deliberate: no account, no sign-in, no sync, no analytics. Nothing is sent anywhere, so there is nothing to configure.

Getting good results

None of this is required to use the app, but it is what separates a result you keep from one you delete. Most of it comes down to giving the map something to work with.

Shoot movement, and lock the camera off

Waves, traffic, people walking, cloth in wind, foliage — continuous motion is the raw material the map redistributes, and a still subject stays still no matter what you draw. If the camera itself moves, the whole frame is already changing and the time distortion disappears into that drift. A tripod, a windowsill, or a phone propped against a cup is enough. Avoid a cut inside the trimmed range, too: brightness picks a moment in the clip, so a cut in the middle of that range turns into a hard tear across the frame.

Slow motion, with one caveat

Stretching time is a question of how many real frames there are to land on, and high-frame-rate footage has far more of them per second of action, so a map that spreads one second across the whole output has something to draw from and the movement stays continuous. No setting can invent frames that were never shot — ten seconds at 30 fps contains 300 and no more.

The caveat is that slow motion reaches the limits first. Ten seconds at 240 fps is 2,400 frames, more than the 2,048 the GPU can hold at once, so the app loads fewer seconds or skips frames — and a skipped frame is a frame you shot for nothing. To actually get the benefit, keep the loaded span short: lower Seconds to load or Resolution until Frames reports no skipping, or trim the range and tap Reload only the range in use.

Work small, then raise the quality once, before you export

In Settings → Video Loading, a Resolution of 1/4 or 1/2 with a few seconds reloads quickly and keeps drawing responsive — that is the setting to design in. When the map is right, raise Resolution, tap Reload with these settings, and export after that: the file is written at the resolution that is loaded, so raising it afterwards does nothing. Reloading the same clip keeps the map you drew, and so does loading a different video, which stretches it to the new aspect ratio.

Isolate one moment with the range in use

The bar under the input has white handles at both ends and reports the range in seconds; while you drag a handle the input picture shows that edge’s frame. Touching the band scrubs; a long press then a drag slides the window through the clip without changing its length, which is how you hunt for the right three seconds. If the window leaves the loaded part, Reload here brings the loaded part to it. With a Time map in either slit mode those values reappear as Time from and Time to in the Parameters panel, above Reload only the range in use, which re-imports only that span, so fewer frames have to be skipped. Three seconds of one wave breaking beats thirty seconds of the whole clip.

Smooth maps and hard edges look completely different in motion

Maps are 16-bit grayscale, so a gentle gradient becomes a gentle, banding-free drift in time, and a little Blur on a hand-drawn map is usually an improvement. A hard edge is a tear, and its direction decides what kind: in Vertical slit, where the map’s vertical axis is output time, a horizontal edge makes the whole frame jump to another moment as the playhead crosses it, while a vertical edge leaves a standing seam, one band permanently showing an earlier moment than the band beside it. Horizontal slit swaps the two. Each tap of Blur is one step, so Undo takes it back if the softer version is not what you wanted. Cut & slide is the exception worth trying on purpose: it moves a region without tearing, because the gap is filled by blending the two sides of the cut.

Surface for texture, slits for subjects that travel

Surface shifts every pixel on its own and blends between neighbouring frames, so it stays soft and reads like a relief pressed into the image — right for water, fire, foliage, crowds, anything where the whole frame is busy. The slit modes give a whole column or row one single moment and sample the nearest frame with no blending, exactly as the export does, so they stay sharp and suit a subject crossing the frame: a figure walking through a Vertical slit map comes out stretched or repeated rather than blurred. On Surface a Time map is relative — mid grey unchanged, black half of Shift (s) earlier, white half later — and the shift wraps around the ends of the range, so start at a second or two, not the maximum.

Generate first, draw second — not the other way around

Fill, Gradient and From motion fill the map in one tap and give you something concrete to react to, and you can draw freely on top of anything they produce. Choosing Gradient or From motion after drawing, though, rebuilds the map from scratch and your strokes are gone, with no undo. From motion makes a good under-layer: busier areas come out brighter, so the distortion follows what is actually moving, and in Surface its History option lets the trails decay over a Trail (s) period, so the map itself changes as the clip plays.

Learn which way your gradients run

Each Fill button is captioned with what it will do given your current settings — Normal playback, Reverse, Frozen at start, Left is earlier — because the same gradient means different things in different modes. In Vertical slit the map’s vertical axis is time, so Top → bottom is ordinary playback and Bottom → top is reverse, while Left → right runs across the time axis and freezes each column at a different moment. Gradients along the time axis control how the clip runs; gradients across it spread different moments over the picture.

Add a Space map when you want the sampling point to move as well

A Space map answers a different question — not when to sample but where — and it is always applied as slits, even when the time side is Surface. In Vertical slit, Left → right is the neutral setting, each output column showing the matching input column. Repaint it All grey and every column shows the same input column, smearing one strip of the source across the frame; repaint it Top → bottom and that strip sweeps across the frame as the clip plays, which is classic slit scan. Put either under a Time map that is also moving and the moment sampled and the place sampled travel independently. Cut & slide on a space map opens the picture up along the cut. When you are done with it, Reset to default in the method list switches it off.

Use the red line to tie the map to what you are seeing

On the main screen the map carries a red playhead: horizontal and sliding down in Vertical slit, vertical and sliding across in Horizontal slit. It marks the row or column being read at that instant, and the same red mark sits on the bar under the output, so when something odd flashes past you can see which part of the map caused it. Drag along the red line to scrub straight there; playback pauses while your finger is down and resumes when you lift it. Surface shows no line, because there the whole map is in use at every instant.

Draw on the device, watch on a display

With a display connected over HDMI or AirPlay the output alone fills that screen while your device keeps the editor, and this is by far the most comfortable way to work on anything serious. In the View menu at the top right of the editor, show the map alone and the device becomes a pure drawing surface with the picture on the wall; turn on Overlay the map on the output, which lays the map over the image at partial opacity, when a stroke needs to land on a particular object rather than a particular part of the frame. On iPad, turn Stage Manager off first or the display is treated as an extended desktop and the full-screen output never appears. Without a display, full screen with the Output pane alone on the device itself is the quickest way to judge a result at size.

Frequently asked questions

Loading a video takes a long time

The caption under the progress bar names the stage: Fetching from your photo library…, then Expanding frames… with a percentage, then Loading the audio track…. The first stage is iOS handing the file over, and for a long 4K or HDR clip it can take tens of seconds. A video kept in iCloud is downloaded to the device first; the caption shows the progress, and reads Downloading from iCloud… when the app can tell that is what is happening. Cancel stops the import at any stage. The second stage is shorter when less is loaded: a lower Resolution or fewer Seconds to load under Settings → Video Loading.

The app quits while loading

It is the resolution and the number of frames loaded, not the file size, that decide whether a clip fits. The app sizes each load to the memory it measures as free, but other apps can take that memory back. Lower Resolution or Seconds to load in Settings → Video Loading and watch the Memory line, and close other apps first, which buys real headroom.

A message says frames were skipped

When a clip has more frames than the GPU can hold at once (2,048) or than fit in memory, frames are skipped evenly and an orange note gives the source and loaded frame rates. Slow-motion footage is the usual case. Under Settings → Video Loading, lower Resolution to 1/2 or below or load fewer seconds until Frames reads No frames skipped; with a time map in a slit mode, Reload only the range in use in the Parameters panel does the same for just the range you are using.

“Frozen outside the loaded part” appears under the bar

The range in use reaches beyond the part of the clip that is in memory, and moments out there hold the frame at the edge. Tap Reload here beside the message: the clip is reloaded at the same resolution and length, positioned so your range sits in the middle of it.

The export stops with an error part way through

Rendering allocates on top of the frames already resident, so an export can run out of memory even though the clip loaded fine — usually reported as a texture that could not be allocated. Lower Resolution or Seconds to load, tap Reload with these settings, shorten Duration, close other apps, and export again. On a device with 8 GB of memory or more you can also try Full-quality export.

Nothing seems to happen when I switch between Vertical slit and Horizontal slit

The two modes read opposite axes of the map as time, so a map whose tone varies only from top to bottom drives playback in a vertical slit but returns the same values at every instant in a horizontal one — each row sits on one fixed moment and the picture never advances. Since 1.2 any map you have not edited is rebuilt as the new mode’s normal-playback default when you switch, so this only bites on maps you drew yourself. Open Fill and take the button labelled Normal playback as a fresh base.

I trimmed the clip but the output still uses the whole video

That was a bug in 1.1, fixed in 1.2: in the older build only the time-based slit modes honoured the white handles, while Rate map and Surface kept sweeping the entire clip. Update from the App Store; on 1.1 the only workaround is to trim the video before importing it.

The colours look flat or washed out compared with the original

Every decoded frame is converted to sRGB at import, so an HDR clip — HLG or Dolby Vision, which is what a recent iPhone shoots by default — loses its grade on the way in and will not match what Photos shows you. Convert or grade the clip to SDR before importing it, or use Full-quality export, which can keep an HDR source as 10-bit HDR in the exported video.

I cannot find the video I exported

A finished export is an H.264 .mp4 saved straight to your photo library, and the app confirms it. If you declined the photo permission it opens a share sheet with the file instead — dismiss that sheet and the render is gone. Grant the permission in iOS Settings → Time Flow → Photos (the app appears as “Time Flow” on the home screen and in iOS Settings) and export once more.

Where is the sound coming from?

The audio button over Output is already on when a clip with sound loads, playing the clip’s own audio put through the same time manipulation as the picture. The audio button over Input is off until you turn it on, and turning it on switches the output one off — only one plays at a time. See Sound for the methods, reverb and voices.

Can I use an external display?

Yes, and it is the intended way to work at any real size. Over HDMI or AirPlay the output alone fills that screen, letterboxed on black with no interface over it, while your device keeps the editor; a Showing on external display badge appears beside the output. For a talk or a demo you can mirror the whole app screen instead: set External display in Settings to Mirror this screen, or tap that badge. On iPad, turn off Settings → Multitasking & Gestures → Stage Manager first, or the display is treated as an extended desktop and the second screen is never created.

Does it work on iPad, and does Apple Pencil add anything?

Both are supported, and the iPad is the better instrument: the map and the two videos all fit at a workable size at once. In landscape the main screen uses four panes, and the editor’s tools sit along the right edge. Apple Pencil adds real pressure — a finger always counts as an average press, so a Pencil goes both thinner (about a sixth) and thicker (about one and a half times) than a finger stroke — and a double-tap on its side opens and closes the brush palette. The brush covers the other case: hold still with a fingertip and tone keeps building and spreading outward.

Does it work on a Mac?

Yes, on Apple silicon Macs running macOS 13 or later. It is the same app on the App Store, so one download covers iPhone, iPad and Mac. On the Mac, videos are files: open one with Open File under Load, drop it from the Finder onto the window, choose “Open With” in the Finder, or press ⌘O, and exports ask where to save. The camera can be the Mac’s built-in camera, an iPhone used as Continuity Camera, or a USB camera, chosen by name. How much video can be loaded depends on the free GPU memory of the device, so a Mac loads longer clips without skipping frames, up to the frame limit of 68 seconds at 30 fps; longer clips are thinned. The main screen uses four panes, and the editor’s tools sit along the right edge.

Is there an undo?

Yes. Undo at the bottom left of the editor steps back one change at a time (up to 30 per map), through strokes, Blur, Invert, fills and generated gradients alike; press and hold it to reset the map to default. In Cut & slide, Revert also returns the map to how it was when you opened that method.

What happens to my map when I load another video?

Maps you edited are kept and stretched to the new video’s aspect ratio, and Undo still works. Maps you never edited become the new clip’s default. To start again from the default, hold Undo, or pick the Fill button marked Default. Re-importing the same clip — changing the Video Loading settings or reloading the range — leaves your maps alone.

Can I bring a map in from elsewhere, or take one out?

Neither, at the moment — the current version has no way to load an image as a map or to save one; maps are made inside the app with Draw, Gradient, Fill, From motion or Cut & slide.

The device gets hot, or the preview starts to stutter

Preview, drawing and exporting all keep the GPU working. Lower Resolution or Seconds to load if the preview stops keeping up, drop the voice count if the audio is the part that breaks up, and stay plugged in for installation or performance use. Build the map at a light working resolution and raise it only for the final render.

Disclaimer and rights

Time Flow Sketch is experimental software intended for making moving-image work. The developer accepts no liability for any damage arising from its use, including data loss, device malfunction, or loss relating to work produced with it.

Rights in the video, images, and audio you load remain yours. If you use material owned by someone else, obtaining the necessary permission is your responsibility.

All data is processed on your device. No personal information is collected or transmitted.

Support

For bug reports, questions, and feature requests, please get in touch. Messages in English are welcome.
ryu.furusawa@gmail.com
https://ryufurusawa.com/contact