2023年5月の投稿(時系列順)[47件](2ページ目)
2023年5月9日 この範囲を新しい順で読む この範囲をファイルに出力する
LTC音源で卓が動きました。「MA dot2 core」です。
トリガータイムは手打ちも出来ますが「TC Record」機能を使えばLTCを受けながら「GO」を押すことでタイムが取れます。タイムの修正も現在値に対するプラスマイナスで行えます。
ただし、LTCが走り出してから認識するのに0.3sec.程度かかります。また、エグゼキューターをOffにしておいてもその時刻が来るとCUEが走ってしまいます。
装置を構成するには卓の挙動をよく観察しないといけませんが、一度覚えさせればその通りに再現してくれる感覚は良いですね。
追記
LTCの認識は同じ値を送り続けたら解決出来るかもしれません。スタートするまで1フレーム前のデータを繰り返し送り続けるのです。1:00:00.00からスタートするなら0:59:59.29(29.97fps)のデータを送り続けるのです。試すしかありませんが、アクティブな一時停止が実現出来れば手段が広がるように思います。
#器具の製作 #タイムコード
トリガータイムは手打ちも出来ますが「TC Record」機能を使えばLTCを受けながら「GO」を押すことでタイムが取れます。タイムの修正も現在値に対するプラスマイナスで行えます。
ただし、LTCが走り出してから認識するのに0.3sec.程度かかります。また、エグゼキューターをOffにしておいてもその時刻が来るとCUEが走ってしまいます。
装置を構成するには卓の挙動をよく観察しないといけませんが、一度覚えさせればその通りに再現してくれる感覚は良いですね。
追記
LTCの認識は同じ値を送り続けたら解決出来るかもしれません。スタートするまで1フレーム前のデータを繰り返し送り続けるのです。1:00:00.00からスタートするなら0:59:59.29(29.97fps)のデータを送り続けるのです。試すしかありませんが、アクティブな一時停止が実現出来れば手段が広がるように思います。
#器具の製作 #タイムコード
2023年5月10日 この範囲を新しい順で読む この範囲をファイルに出力する
パソコンの音声再生アプリにはタイムコードを出す物があるらしい。
様々なアプリがあるので一概に言えませんが、タイムコードはLTCではなくMIDI-TimeCode(以下、MTC)ではないかと思われます。というか、それらのアプリの用途を考えたらMTCが自然かと。
LTCのメリットは音声信号であるため配線の選択肢が多いことです。仕込みの効率が良いのでLTCを望んでいるのです。
ですが、既存のアプリが使えるならその流儀を優先させた方が良いかもしれません。LTCを扱える調光卓はMTCも扱えますし、音声再生の視点ではMTCの方が汎用性が高いからです。
LTCのメリットでありMIDIの弱点となるのは音声信号として扱えるかと配線長です。この辺りを対策すれば音声再生側も調光卓側もMTCでいいんじゃないかと。
さて、どうしましょう。
LTCのメリットとMTCのメリットを足して、MTCを音声信号として送れるようにすればよくね?
MIDI全般に対応する気はありませんから、MTCに特化して音声信号(差動バイフェーズ)として送るのです。
参考
MIDIタイムコード規格
MIDIタイムコード(MTC)について調べてみた
有志の方のサイトです。
ここで言うMTCは記事にある「クォーター・フレーム・メッセージ F1 dd」のことです。
MTC(コマンド0xF1)はMIDIの回線をタイムコードで占有しないために2フレーム分の時間を使って送信するようです。
バイト送信のタイミングはMTCを出す側に依存するとしても、1フレームの時間で8バイト送れればいい。MTCに完全特化してコマンド0xF1を省けば4バイトです。
4バイトなら1フレームの時間内で40bit送れればよく、最もビットレートが速い30fpsでも1,200bpsあれば事足ります。差動バイフェーズで音声信号化しても問題無しです。
受信側はバイト受信の度に0xF1を付けた2バイトをMIDIとして送出するだけです。
この方法は僅かな遅れを生じますが、MTCは2フレーム遅れるのが前提の規格ですし、遅れが一定ならば実用上の問題は無いと考えます。
分解能が1/12~1/15秒であることもMTCの前提ですが、卓や灯体の遅延はもっと大きいし、これが見える人もそうそう居ないでしょう。
自画自賛ですが悪くないアイデアです。
#器具の製作 #タイムコード
様々なアプリがあるので一概に言えませんが、タイムコードはLTCではなくMIDI-TimeCode(以下、MTC)ではないかと思われます。というか、それらのアプリの用途を考えたらMTCが自然かと。
LTCのメリットは音声信号であるため配線の選択肢が多いことです。仕込みの効率が良いのでLTCを望んでいるのです。
ですが、既存のアプリが使えるならその流儀を優先させた方が良いかもしれません。LTCを扱える調光卓はMTCも扱えますし、音声再生の視点ではMTCの方が汎用性が高いからです。
LTCのメリットでありMIDIの弱点となるのは音声信号として扱えるかと配線長です。この辺りを対策すれば音声再生側も調光卓側もMTCでいいんじゃないかと。
さて、どうしましょう。
LTCのメリットとMTCのメリットを足して、MTCを音声信号として送れるようにすればよくね?
MIDI全般に対応する気はありませんから、MTCに特化して音声信号(差動バイフェーズ)として送るのです。
参考
MIDIタイムコード規格
MIDIタイムコード(MTC)について調べてみた
有志の方のサイトです。
ここで言うMTCは記事にある「クォーター・フレーム・メッセージ F1 dd」のことです。
MTC(コマンド0xF1)はMIDIの回線をタイムコードで占有しないために2フレーム分の時間を使って送信するようです。
バイト送信のタイミングはMTCを出す側に依存するとしても、1フレームの時間で8バイト送れればいい。MTCに完全特化してコマンド0xF1を省けば4バイトです。
4バイトなら1フレームの時間内で40bit送れればよく、最もビットレートが速い30fpsでも1,200bpsあれば事足ります。差動バイフェーズで音声信号化しても問題無しです。
受信側はバイト受信の度に0xF1を付けた2バイトをMIDIとして送出するだけです。
この方法は僅かな遅れを生じますが、MTCは2フレーム遅れるのが前提の規格ですし、遅れが一定ならば実用上の問題は無いと考えます。
分解能が1/12~1/15秒であることもMTCの前提ですが、卓や灯体の遅延はもっと大きいし、これが見える人もそうそう居ないでしょう。
自画自賛ですが悪くないアイデアです。
#器具の製作 #タイムコード
MIDIのビットレートは31,250kbps、8MHzの256分の1です。
ほぼUARTであり、スタートビット0/1bit、データ8bit、ストップビット1/1bitです。
これならPICのUARTで誤差無しで扱えます。
送信回路は電源5vとTTLレベルのUARTに220Ωを入れたシンプルな物。受信回路がフォトカプラ前提なので信号自体は反転しています。
信号経路がGNDショートすると23mAほど流れます。PICなら耐えられますが、UARTのI/Oがオーバーロードになるならバッファートランジスタ(2SC1815でもスピードアップコンデンサを入れればキレイな波形が出るハズです)を入れた方がいいかもです。
凄くシンプルなMTCジェネレーターならすぐ作れそうです。
#タイムコード
ほぼUARTであり、スタートビット0/1bit、データ8bit、ストップビット1/1bitです。
これならPICのUARTで誤差無しで扱えます。
送信回路は電源5vとTTLレベルのUARTに220Ωを入れたシンプルな物。受信回路がフォトカプラ前提なので信号自体は反転しています。
信号経路がGNDショートすると23mAほど流れます。PICなら耐えられますが、UARTのI/Oがオーバーロードになるならバッファートランジスタ(2SC1815でもスピードアップコンデンサを入れればキレイな波形が出るハズです)を入れた方がいいかもです。
凄くシンプルなMTCジェネレーターならすぐ作れそうです。
#タイムコード
TRUE1のY分岐とT分岐の試作は繋ぎ目にコーキングを入れて終わりました。
数日放置してコーキングが固まったら水バケツに入れて具合いを見ます。
求めるのは防水ではなく防滴ですから浸水チェックは不要と言えば不要ですが、これでOKなら防滴性能があるとしていいでしょう。
#器具の製作
数日放置してコーキングが固まったら水バケツに入れて具合いを見ます。
求めるのは防水ではなく防滴ですから浸水チェックは不要と言えば不要ですが、これでOKなら防滴性能があるとしていいでしょう。
#器具の製作
2023年5月11日 この範囲を新しい順で読む この範囲をファイルに出力する
タイムコードの使用にあたり卓(MAdot2)の挙動で重要となるのは次の点です。
・入力されたタイムコードがCUEに設定された値になると、エグゼキューターのON/OFFに関わらずCUEが走る。とにかく走る。
取り溢しが起こらないので安全という見方もありますがどうなんでしょう。
注意点が2点あります。
1)CUEに与えるタイムコード値はシーケンス内で重複してはいけない。
2)卓に入力されるタイムコードの有効無効を操作出来なければならない。
(1)については、卓よりもタイムコードを出す側の課題かもしれません。例えば20曲ある演目として、それぞれの曲が同じタイムコード値から始まってはいけないのです。プレイリスト内の通し値、もしくは曲ごとに開始値を設定する必要があります(1曲あたり10分割振りとか)。
(2)については、直しなどでタイムコードを受けたくない状況が想定されるからです。音響さんのチェックと照明の直しが同時進行するなど普通のことですからね。必要な時に有効にし、外したい時には外すのです。少し蛇足ですが、音響さんとは無関係に照明ローカルでチェックしたいこともあります。手元の音源でのチェックという意味です。もちろん音源にはタイムコードも伴う前提ですので、複数のタイムコードから選択出来ればいいのかなと。
一番の問題は(1)でしょうか。ここまでタイムコードの扱いに特化した音源再生アプリなんてあるのかな?
その筋に詳しい音響担当に相談していますのでしばらく待ちです。
・・・専用アプリ「LTC Sound Player」は作らないとだめかなぁ~。
#タイムコード #器具の製作
・入力されたタイムコードがCUEに設定された値になると、エグゼキューターのON/OFFに関わらずCUEが走る。とにかく走る。
取り溢しが起こらないので安全という見方もありますがどうなんでしょう。
注意点が2点あります。
1)CUEに与えるタイムコード値はシーケンス内で重複してはいけない。
2)卓に入力されるタイムコードの有効無効を操作出来なければならない。
(1)については、卓よりもタイムコードを出す側の課題かもしれません。例えば20曲ある演目として、それぞれの曲が同じタイムコード値から始まってはいけないのです。プレイリスト内の通し値、もしくは曲ごとに開始値を設定する必要があります(1曲あたり10分割振りとか)。
(2)については、直しなどでタイムコードを受けたくない状況が想定されるからです。音響さんのチェックと照明の直しが同時進行するなど普通のことですからね。必要な時に有効にし、外したい時には外すのです。少し蛇足ですが、音響さんとは無関係に照明ローカルでチェックしたいこともあります。手元の音源でのチェックという意味です。もちろん音源にはタイムコードも伴う前提ですので、複数のタイムコードから選択出来ればいいのかなと。
一番の問題は(1)でしょうか。ここまでタイムコードの扱いに特化した音源再生アプリなんてあるのかな?
その筋に詳しい音響担当に相談していますのでしばらく待ちです。
・・・専用アプリ「LTC Sound Player」は作らないとだめかなぁ~。
#タイムコード #器具の製作
頭の区切りが付かないので、LTC-Generatorの回路図を描いてみました。
FT232RLを使ってPICにUARTを送る
→ PICで所定のbpsの差動バイフェーズ化する
→ PICの出力を分圧して約1vp-p(要は2v)にする
→ オペアンプの1:1ボルテージフォロア回路で音声信号化
→ 出力
といった簡単な構成です。
1vなので音声信号としては約+3dBです。
グランドループさせない様にした方がいのかな?
追記
気分が乗って描いてしまった基板の3D図も揚げます。
折角なので発注しました。
本体価格は10枚で$19です。1枚300円しないのですから安いですねぇ~。
#器具の製作 #タイムコード
FT232RLを使ってPICにUARTを送る
→ PICで所定のbpsの差動バイフェーズ化する
→ PICの出力を分圧して約1vp-p(要は2v)にする
→ オペアンプの1:1ボルテージフォロア回路で音声信号化
→ 出力
といった簡単な構成です。
1vなので音声信号としては約+3dBです。
グランドループさせない様にした方がいのかな?
追記
気分が乗って描いてしまった基板の3D図も揚げます。
折角なので発注しました。
本体価格は10枚で$19です。1枚300円しないのですから安いですねぇ~。
#器具の製作 #タイムコード
2023年5月12日 この範囲を新しい順で読む この範囲をファイルに出力する
PythonでVLCライブラリを使った音源ファイルの再生は驚くほど簡単。
インストールするべき諸々や音源モジュールの設定などもありますが、貴兄のサイトにいくらでもあるのでここでは割愛。
VLCで再生が出来、Python本体とPython-VLCがインストールされていればいいと思います。
以下、sound.mp3を再生するPythonのコード。
import vlc
if __name__ == '__main__':
p = vlc.MediaPlayer() #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('sound.mp3') #インスタンスに音源ファイルを関連付け
p.play() #再生開始
こんだけです!
vlcのインスタンスを宣言し、音源ファイルを設定し、再生を指示するだけ。
再生はバックグラウンドで行われるので、マルチスレッドを使うことなく再生中に他のことが出来るのも良点。
ちなみに「p」はインスタンス名なので自由に定義して良いようです。
Python-VLCはC言語などが使うlibVLCをPythonから呼び出せるようにしているので、libVLCで出来ることの大半が出来るようです。
以下基本的なAPI。
p.set_mrl('sound.mp3') #インスタンスに音源ファイルを関連付け
p.play() #再生開始
p.pause() #再生中なら一時停止、一時停止中なら再生再開
p.get_time() #開始からの経過時間を取得(msec.)
p.set_time(1000) #指定した秒数(msec.)にセット
p.audio_set_volume(100) #0=mute,100=0dB(パーセント指示だと思っていいみたい)
p.stop() #停止
やりたいことはこれだけで済んでしまいそうな気もする。
python-vlcのドキュメント
沢山の事が出来るようですが、
vlc.MediaPlayer
の項を読むと上記のことがわかります。
#Python
インストールするべき諸々や音源モジュールの設定などもありますが、貴兄のサイトにいくらでもあるのでここでは割愛。
VLCで再生が出来、Python本体とPython-VLCがインストールされていればいいと思います。
以下、sound.mp3を再生するPythonのコード。
import vlc
if __name__ == '__main__':
p = vlc.MediaPlayer() #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('sound.mp3') #インスタンスに音源ファイルを関連付け
p.play() #再生開始
こんだけです!
vlcのインスタンスを宣言し、音源ファイルを設定し、再生を指示するだけ。
再生はバックグラウンドで行われるので、マルチスレッドを使うことなく再生中に他のことが出来るのも良点。
ちなみに「p」はインスタンス名なので自由に定義して良いようです。
Python-VLCはC言語などが使うlibVLCをPythonから呼び出せるようにしているので、libVLCで出来ることの大半が出来るようです。
以下基本的なAPI。
p.set_mrl('sound.mp3') #インスタンスに音源ファイルを関連付け
p.play() #再生開始
p.pause() #再生中なら一時停止、一時停止中なら再生再開
p.get_time() #開始からの経過時間を取得(msec.)
p.set_time(1000) #指定した秒数(msec.)にセット
p.audio_set_volume(100) #0=mute,100=0dB(パーセント指示だと思っていいみたい)
p.stop() #停止
やりたいことはこれだけで済んでしまいそうな気もする。
python-vlcのドキュメント
沢山の事が出来るようですが、
vlc.MediaPlayer
の項を読むと上記のことがわかります。
#Python
2023年5月16日 この範囲を新しい順で読む この範囲をファイルに出力する
オレメモです。
LTCの差動バイフェーズのクロックをPICで起こす計算です。
Fosc32MHz(8MHzPLLx4)にすると、Timer1でコンペアモードとするクロックは最速で8MHz。
1時間は3,600秒。
8MHzで1時間カウントすると28,800,000.000.カウント。
1時間あたりの総カウント数をこれに近づける。
CCPRxH/Lに与える値は次の通り。
● 30fps(2,400bps相当)
ベース値は1,666.
3回に2回、1,667.にする。
(1,666count×2,400bps×2倍周期×3,600秒)
+(((2,400bps×2倍周期×3,600秒)÷3)×2)
=28,800,000,000.
誤差無し
● 29.97fps(30÷1.001fps、約2,397.602bps相当)
ベース値は1,668.
3回に1回、1,669.にする。
(1,668count×2,397.602bps×2倍周期×3,600秒)
+((2,397.602bps×2倍周期×3,600秒)÷3)+0.25
=28,800,000,000.004238...
誤差 004238...
水晶発振子の精度からして十分だと思う。
※ 最後の+0.25は4時間1回+1するって意味。タイムコードは24時間時計なので因数だからいいかな。
● 25fps(2,000bps相当)
ベース値は2,000.
(2,000count×2,000bps×2倍周期×3,600秒)
=28,800,000,000.
誤差無し
● 24fps(1,920bps相当)
ベース値は2,083.
3回に1回、2,084.にする。
(2,083count×1,920bps×2倍周期×3,600秒)
+((1,920bps×2倍周期×3,600秒)÷3)
=28,800,000,000.
誤差無し
以前の計算と何か違うのだけど、まぁいいか。
#器具の製作 #タイムコード
LTCの差動バイフェーズのクロックをPICで起こす計算です。
Fosc32MHz(8MHzPLLx4)にすると、Timer1でコンペアモードとするクロックは最速で8MHz。
1時間は3,600秒。
8MHzで1時間カウントすると28,800,000.000.カウント。
1時間あたりの総カウント数をこれに近づける。
CCPRxH/Lに与える値は次の通り。
● 30fps(2,400bps相当)
ベース値は1,666.
3回に2回、1,667.にする。
(1,666count×2,400bps×2倍周期×3,600秒)
+(((2,400bps×2倍周期×3,600秒)÷3)×2)
=28,800,000,000.
誤差無し
● 29.97fps(30÷1.001fps、約2,397.602bps相当)
ベース値は1,668.
3回に1回、1,669.にする。
(1,668count×2,397.602bps×2倍周期×3,600秒)
+((2,397.602bps×2倍周期×3,600秒)÷3)+0.25
=28,800,000,000.004238...
誤差 004238...
水晶発振子の精度からして十分だと思う。
※ 最後の+0.25は4時間1回+1するって意味。タイムコードは24時間時計なので因数だからいいかな。
● 25fps(2,000bps相当)
ベース値は2,000.
(2,000count×2,000bps×2倍周期×3,600秒)
=28,800,000,000.
誤差無し
● 24fps(1,920bps相当)
ベース値は2,083.
3回に1回、2,084.にする。
(2,083count×1,920bps×2倍周期×3,600秒)
+((1,920bps×2倍周期×3,600秒)÷3)
=28,800,000,000.
誤差無し
以前の計算と何か違うのだけど、まぁいいか。
#器具の製作 #タイムコード
ダイレクトボックスってのがあります。主に楽器の信号をミキサーで受けやすく変換する装置です。
メジャーな普及機はBOSS(Roland)のDI-1でしょうか。安価で安定した製品ですが、可も無く不可も無く色気はありません。ダメではないけど物足りなさはあります。BassのLINE取りに使われることが多いように見受けられますが、音が丸くなってしまうというか何というか、当たり障りの無い音になってしまうような気がします。楽器の音は演奏者さんや音響さんの調整、何よりも好みに寄るので絶対値は無いと思いますが、某音響さん曰く「何を繋げてもDI-1の音になっちゃうよね」とのこと。もう少し楽器の個性を引き出せたらいいんじゃないかとか、今どきの高品質な部品を替えたら改善しないのかとか思ったり。
アナログ音声回路は組み合わせのバランスが重要ですから一部を良い部品に替えれば単純に良くなるモノでもないと思いますが、オペアンプやコンデンサを交換したらどんな変化をするか凄く興味があります。
DI-1の回路を見ますとオペアンプには4558直系のM5218が使われています。安定したとても良いオペアンプだと思いますが、可もなく不可もなくに徹したちょっと古い製品です。これを高音質とウワサのJRCのMUSES01やMUSES02に替えたらどうなるのだろうと数年前からモヤモヤしてました。MUSESシリーズはコストを度外視し理想を求めて作ったオペアンプらしいですが、オーディオ改造オタク界隈では評価が高く、並みの4558互換品が数十円で買えるところMUSES01は3,500円もします。100倍良い音(?)が出ることはないでしょうが、試したい酔狂な気持ちは抑えられません。
ただ、DI-1に使われているM5218はSIP8PでMUSESシリーズはDIP8Pです。ピンアサインは同じですが形状は違います。単純に載せ替えは出来ませんので変換基板が必要です。連休明けに時間があったので基板を描いて中華基板に発注してみました。先ほど届いたので取り付け。取り急ぎは手元にあるNJM4580で動作テストをし、MUSES01が入荷したら付け替えてみようと思います。
個性を持った高品質なダイレクトボックスは沢山ありますので、あえてDI-1を改造することに意味があるのかと問われそうですが、「純粋に興味によるもの」なので。。。
もしオペアンプの交換で良い変化を得られるなら、INPUTの直下に使われている0.01uFのセラミックコンデンサを高品質な物に替えるのもアリです。実装されているのはベッタベタの普及品ですから、高品質でレスポンスが良いセラミックコンデンサに替えたらどうなるか「興味深々」であります。
#音の世界
メジャーな普及機はBOSS(Roland)のDI-1でしょうか。安価で安定した製品ですが、可も無く不可も無く色気はありません。ダメではないけど物足りなさはあります。BassのLINE取りに使われることが多いように見受けられますが、音が丸くなってしまうというか何というか、当たり障りの無い音になってしまうような気がします。楽器の音は演奏者さんや音響さんの調整、何よりも好みに寄るので絶対値は無いと思いますが、某音響さん曰く「何を繋げてもDI-1の音になっちゃうよね」とのこと。もう少し楽器の個性を引き出せたらいいんじゃないかとか、今どきの高品質な部品を替えたら改善しないのかとか思ったり。
アナログ音声回路は組み合わせのバランスが重要ですから一部を良い部品に替えれば単純に良くなるモノでもないと思いますが、オペアンプやコンデンサを交換したらどんな変化をするか凄く興味があります。
DI-1の回路を見ますとオペアンプには4558直系のM5218が使われています。安定したとても良いオペアンプだと思いますが、可もなく不可もなくに徹したちょっと古い製品です。これを高音質とウワサのJRCのMUSES01やMUSES02に替えたらどうなるのだろうと数年前からモヤモヤしてました。MUSESシリーズはコストを度外視し理想を求めて作ったオペアンプらしいですが、オーディオ改造オタク界隈では評価が高く、並みの4558互換品が数十円で買えるところMUSES01は3,500円もします。100倍良い音(?)が出ることはないでしょうが、試したい酔狂な気持ちは抑えられません。
ただ、DI-1に使われているM5218はSIP8PでMUSESシリーズはDIP8Pです。ピンアサインは同じですが形状は違います。単純に載せ替えは出来ませんので変換基板が必要です。連休明けに時間があったので基板を描いて中華基板に発注してみました。先ほど届いたので取り付け。取り急ぎは手元にあるNJM4580で動作テストをし、MUSES01が入荷したら付け替えてみようと思います。
個性を持った高品質なダイレクトボックスは沢山ありますので、あえてDI-1を改造することに意味があるのかと問われそうですが、「純粋に興味によるもの」なので。。。
もしオペアンプの交換で良い変化を得られるなら、INPUTの直下に使われている0.01uFのセラミックコンデンサを高品質な物に替えるのもアリです。実装されているのはベッタベタの普及品ですから、高品質でレスポンスが良いセラミックコンデンサに替えたらどうなるか「興味深々」であります。
#音の世界