Compare commits
3 Commits
5ab31027f3
...
ce0c6b1ddf
Author | SHA1 | Date | |
---|---|---|---|
ce0c6b1ddf | |||
39828a543e | |||
7261933738 |
@ -100,5 +100,7 @@ Maxでは、udpsendオブジェクトで指定したIPの5000番ポート(標
|
|||||||
- そもそも通常のBright ignでのUDPでのシンクはフレーム単位で同期してるわけではないのは公式でも書いてある。フレームレベルでの同期が必要ならBrightWall使うのが無難
|
- そもそも通常のBright ignでのUDPでのシンクはフレーム単位で同期してるわけではないのは公式でも書いてある。フレームレベルでの同期が必要ならBrightWall使うのが無難
|
||||||
- 自動ループする時、BrightSignのほうが若干ラグがあってからループする。そのため、実際には`jit.movie~`が自動ループしたタイミングでudp信号を送るのが良い。
|
- 自動ループする時、BrightSignのほうが若干ラグがあってからループする。そのため、実際には`jit.movie~`が自動ループしたタイミングでudp信号を送るのが良い。
|
||||||
- というか、`jit.movie`は再生速度が全く均一にならないんであんまり使わないほうがいい。BrightSignの映像側にタイムコード音声を書き込んでおいてMaxでそれを受けて特殊配置のスピーカーで音再生、とかが一番ありえるユースケースかも。
|
- というか、`jit.movie`は再生速度が全く均一にならないんであんまり使わないほうがいい。BrightSignの映像側にタイムコード音声を書き込んでおいてMaxでそれを受けて特殊配置のスピーカーで音再生、とかが一番ありえるユースケースかも。
|
||||||
|
- [[MaxとSMPTE ToolでLTCをデコードした上で展示を自動起動させたい]]
|
||||||
- 内部がどういう仕組みかわからないが、UDPのメッセージのキューは割と簡単に詰まる。シークバーをぐりぐり動かすみたいな使い方はできない。
|
- 内部がどういう仕組みかわからないが、UDPのメッセージのキューは割と簡単に詰まる。シークバーをぐりぐり動かすみたいな使い方はできない。
|
||||||
- 一時停止ができると便利なんだと思うが、いまいちやり方がわからなかった
|
- 一時停止ができると便利なんだと思うが、いまいちやり方がわからなかった
|
||||||
|
- **追記:動画のファイルのビットレートによってコマンドを送ってからシーク完了までの時間が変わるっぽい。2GBの動画とかだとコマンド送ってから5秒ぐらいかかったりすることもある。** やっぱり本番用の同期システムの選択肢というよりは、ざっくりでもいいから確認できるシステム構築のためと割り切るほうが良さそう
|
||||||
|
69
content/MaxとSMPTE ToolでLTCをデコードした上で展示を自動起動させたい.md
Normal file
69
content/MaxとSMPTE ToolでLTCをデコードした上で展示を自動起動させたい.md
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
date: 2024-08-12 15:05
|
||||||
|
---
|
||||||
|
#max #tips
|
||||||
|
|
||||||
|
|
||||||
|
Maxには昔から`smpte~`というリニアタイムコードを出力するためのオブジェクトが存在する。
|
||||||
|
|
||||||
|
しかし、出力はできても音声ファイルとして書き込まれたLTCをデコードしてbangを送るとかはできそうでできない。
|
||||||
|
|
||||||
|
もっともシンプルなやり方として、[GSi - SMPTE Tool](https://www.genuinesoundware.com/?a=page&p=SMPTE_Tool)を使ってLTCから一度MTC(MIDI Time Code)に変換し、仮想デバイス`to Max`を経由して受信する。
|
||||||
|
|
||||||
|
MTCのデコードは[Peter Elsea氏の資料](http://peterelsea.com/Maxtuts_advanced/Max&MTC.pdf)を参考に。
|
||||||
|
|
||||||
|
![[img/スクリーンショット 2024-08-12 15.21.57.png]]
|
||||||
|
|
||||||
|
MTCのより詳しい話は[Holy Caterさんのブログ](https://ameblo.jp/holycater/entry-12657971601.html)を参考に。
|
||||||
|
|
||||||
|
## SMPTE Toolのデバイス情報保存問題
|
||||||
|
|
||||||
|
問題はSMPTE ToolとMaxを使って展示を自動で運用したい場合である。
|
||||||
|
SMPTE Toolは多分JUCEを使って作られているので、使用するオーディオデバイスや仮想含むMIDIデバイスは前回アプリ終了時の情報が自動で復元される。
|
||||||
|
|
||||||
|
SMPTE Toolsを起動中にインターフェースを抜いたり、仮想MIDIデバイスを持つソフトを落としたりすると、その情報は即時更新される。
|
||||||
|
|
||||||
|
つまり、展示などで自動起動・終了を考えた時に、SMPTE ToolがMaxより先に立ち上がると、Max以外のデバイスが自動で選択された状態になってしまう。終了時も、Maxが先にシャットダウンされるとMIDIデバイスの認識が外れた状態でSMPTE Toolも終了するので、次回起動した時にデバイスが正しく読み込まれない。
|
||||||
|
|
||||||
|
残念ながらSMPTE Toolには、設定ファイルやコマンドラインオプションなどで固定のデバイス名を指定して起動する方法が公式には存在していない。
|
||||||
|
|
||||||
|
だが、アプリケーションの状態を保存したファイルは、Macでは実は以下の場所に記録されている。
|
||||||
|
|
||||||
|
```
|
||||||
|
~/Library/SMPTE Tool/SMPTE Tool.setting
|
||||||
|
```
|
||||||
|
|
||||||
|
これを使用(悪用)すれば正しく運用されている状態を強制的に復元できる。
|
||||||
|
|
||||||
|
1. まず、展示での正しいオーディオインターフェースとMIDIデバイス等の設定を普通にアプリを起動して設定。
|
||||||
|
2. SMPTE Toolを一度終了する(設定ファイルはここで更新される)
|
||||||
|
3. `~/Library/SMPTE Tool/SMPTE Tool.setting`をプロジェクトフォルダやデスクトップなど適当な場所にコピーする
|
||||||
|
4. 展示の際はスタートアップ起動アプリに、立ち上げたいMaxプロジェクトと次のシェルスクリプトの2つを登録する。(ここではデスクトップにコピーしたとする)。Macの場合は拡張子を`.command`に設定して、設定→一般→ログイン項目にそのファイルを登録すればよい
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#!/bin/bash
|
||||||
|
cp -f ~/Desktop/SMPTE\ Tool.settings ~/Library/SMPTE\ Tool
|
||||||
|
sleep 30;
|
||||||
|
open /Applications/SMPTE_Tool.app;
|
||||||
|
exit;
|
||||||
|
```
|
||||||
|
|
||||||
|
起動前に30秒スリープしているのは、Maxより先にSMPTE Toolが立ち上がるのを避けるため。逆に、Max内のアプリもSMPTE Toolが立ち上がるまでタイムコードでの同期は取れないので、諸々の起動処理はloadbangを35秒遅延させるなどの対策を取っておくのが安全。
|
||||||
|
|
||||||
|
シャットダウンは普通にpmsetでシャットダウン時刻を設定する。また終了時刻の数分前にMax上で`;max clean ;max quit`メッセージを使ってMaxを自殺させないとシステムがシャットダウンしないことがあるのでそれも組み込んでおく。
|
||||||
|
|
||||||
|
---
|
||||||
|
PythonでLTCからMTCにデコードするシングルファイルアプリがあるので、これを使うともっと楽になるのかも(視覚的にタイムコード確認できるのは楽でいいけどね)
|
||||||
|
|
||||||
|
[GitHub - Gouttfi/smpte-ltc-to-mtc: This repository contains a Python application for converting SMPTE-LTC timecode to MIDI Time Code (MTC).](https://github.com/Gouttfi/smpte-ltc-to-mtc)
|
||||||
|
|
||||||
|
```
|
||||||
|
brew install python-tk portaudio rtmidi
|
||||||
|
git clone https://github.com/Gouttfi/smpte-ltc-to-mtc.git
|
||||||
|
|
||||||
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
# 仮想環境に入る
|
||||||
|
pip install python-rtmidi mido PyAudio
|
||||||
|
python main.py
|
||||||
|
```
|
BIN
content/img/スクリーンショット 2024-08-12 15.21.57.png
Normal file
BIN
content/img/スクリーンショット 2024-08-12 15.21.57.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
Loading…
Reference in New Issue
Block a user