全年9月16日の投稿[5件]
2025年 この範囲を時系列順で読む この範囲をファイルに出力する
そもそもソースフォー(ELP)ではなく凸スポットの特性に近い物にする理由を書いておきます。
ソースフォーのレンズ構造は虚像投影系です。カッターやゴボの形に光を出すのですから映写機(プロジェクタ)と同じ構造です。
凸やフレネルのスポットはレンズを使うので虚像の投影になることもありますが、レンズを用いて照射サイズ(広がり)を変えられるフラットライトと言ってもいいでしょう。
私の好みですが、SSにソースフォーを用いる際の問題点はプロジェクタ構造なのでレンズ(灯体)の先に焦点が出来てしまうことです。演目やプラン次第ですが、SSらしさって意味ではレンズ先に焦点があるのはイマイチだと思うのです。その点、光源がレンズの焦点距離より近い位置に配置される凸やフレネルのスポットはレンズのエッジから広がる光が出ます。バレエやストリートダンスなどの舞踊演目のSSでソースフォーはイマイチとする方が多いのはこのあたりの特性だと思っています。何も考えないでSSにはC-8って先入観でプランするのが実情かもしれませんけど。。。純粋な光学系で評価するならソースフォーを使うのが正解だと思いますが、「らしさ」や「これまで」を重要視するならC-8っぽい特性のカラーミックススポットがよろしいのではないかと思うのです。
あと横長の長方形にする理由ですが、自分がプランする際はC-8にブラックラップをかざして上下の丸エッジを切ることが多いからです。演目によりますが、床や文字幕を嫌うなら上下の丸エッジが無い方がいいからです。
ロッドリフレクタの製造は目途が付きました。
いつもお世話になっている鉄工所さんにはウォータージェットカッターがありまして熱を加えることなく鉄板が切れます。磨きのステンレス板を変色させることなく切断できます。加工コストが少し高いのですが、熱変色を磨いて取り除く手間を考えたらアリでしょう。ワイヤー放電加工機を使う程の精度は不要ですから丁度いいと思われます。
#器具の製作
ソースフォーのレンズ構造は虚像投影系です。カッターやゴボの形に光を出すのですから映写機(プロジェクタ)と同じ構造です。
凸やフレネルのスポットはレンズを使うので虚像の投影になることもありますが、レンズを用いて照射サイズ(広がり)を変えられるフラットライトと言ってもいいでしょう。
私の好みですが、SSにソースフォーを用いる際の問題点はプロジェクタ構造なのでレンズ(灯体)の先に焦点が出来てしまうことです。演目やプラン次第ですが、SSらしさって意味ではレンズ先に焦点があるのはイマイチだと思うのです。その点、光源がレンズの焦点距離より近い位置に配置される凸やフレネルのスポットはレンズのエッジから広がる光が出ます。バレエやストリートダンスなどの舞踊演目のSSでソースフォーはイマイチとする方が多いのはこのあたりの特性だと思っています。何も考えないでSSにはC-8って先入観でプランするのが実情かもしれませんけど。。。純粋な光学系で評価するならソースフォーを使うのが正解だと思いますが、「らしさ」や「これまで」を重要視するならC-8っぽい特性のカラーミックススポットがよろしいのではないかと思うのです。
あと横長の長方形にする理由ですが、自分がプランする際はC-8にブラックラップをかざして上下の丸エッジを切ることが多いからです。演目によりますが、床や文字幕を嫌うなら上下の丸エッジが無い方がいいからです。
ロッドリフレクタの製造は目途が付きました。
いつもお世話になっている鉄工所さんにはウォータージェットカッターがありまして熱を加えることなく鉄板が切れます。磨きのステンレス板を変色させることなく切断できます。加工コストが少し高いのですが、熱変色を磨いて取り除く手間を考えたらアリでしょう。ワイヤー放電加工機を使う程の精度は不要ですから丁度いいと思われます。
#器具の製作
SS用途に特化したLEDスポットについて寸法の検討をしてみました。昨日まで使っていた美術幕などの返却で片道120kmくらい走っている間は脳味噌がヒマしてたので。
LEDは12wのRGBWの素子を5個3列の15個使い、管端が横長のロッドリフレクタを通します。電流検出抵抗を調整すれば最近修理しているLED-PARの制御基板がそのまま使えると思われます。ロッドの管端は75×34mmとしてみます。LED素子のスペックが不明瞭なので放熱するべき熱量は不明ですが、これは測るしかありません。
筐体を作るとコストが掛かり過ぎるので、球を買うのを止めて空になっているPAR64ライトを再利用します。
レンズは単レンズとします。コンデンサーレンズを入れたい気持ちもありますが、重くなりそうだし、光の出目を長方形にすること以外一般的な凸スポットに特性を似せたいのでいいかなと。レンズを作るのも現実的ではありませんから6インチの凸スポットの物を流用します。8インチのレンズはPAR64ライトに入らないし重いので6インチが妥当かなと。松村さんの6インチ凸スポットに使われているレンズは直径152mm、焦点距離178mmなのでいけそうな感じがします。このスポットのシリーズは私好みですが、用途外の目的に供給してもらえるかは交渉次第。
そうそう、新しい3Dプリンタが入荷しました。複数のフィラメントを使うためのオプションは入荷が数か月先ですが、本体のみでも単色のプリントは出来ますのでテストを兼ねてPAR64ライトにレンズを取り付けるマウンタを作ってみましょう。このプリンタは最大横270x奥行270x高256mmが作れますから収まります。熱は心配ですがABSで作れはなんとかなるっしょ。
#器具の製作
LEDは12wのRGBWの素子を5個3列の15個使い、管端が横長のロッドリフレクタを通します。電流検出抵抗を調整すれば最近修理しているLED-PARの制御基板がそのまま使えると思われます。ロッドの管端は75×34mmとしてみます。LED素子のスペックが不明瞭なので放熱するべき熱量は不明ですが、これは測るしかありません。
筐体を作るとコストが掛かり過ぎるので、球を買うのを止めて空になっているPAR64ライトを再利用します。
レンズは単レンズとします。コンデンサーレンズを入れたい気持ちもありますが、重くなりそうだし、光の出目を長方形にすること以外一般的な凸スポットに特性を似せたいのでいいかなと。レンズを作るのも現実的ではありませんから6インチの凸スポットの物を流用します。8インチのレンズはPAR64ライトに入らないし重いので6インチが妥当かなと。松村さんの6インチ凸スポットに使われているレンズは直径152mm、焦点距離178mmなのでいけそうな感じがします。このスポットのシリーズは私好みですが、用途外の目的に供給してもらえるかは交渉次第。
そうそう、新しい3Dプリンタが入荷しました。複数のフィラメントを使うためのオプションは入荷が数か月先ですが、本体のみでも単色のプリントは出来ますのでテストを兼ねてPAR64ライトにレンズを取り付けるマウンタを作ってみましょう。このプリンタは最大横270x奥行270x高256mmが作れますから収まります。熱は心配ですがABSで作れはなんとかなるっしょ。
#器具の製作
2023年 この範囲を時系列順で読む この範囲をファイルに出力する
共有メモリを使う場合、読み書きが衝突しないように配慮しなければなりません。
今回は情報が一方向ですから比較的簡単ですが、よく考えないとトラブルのもとです。
一番簡単なのは、DMX512 の値の配列の共有メモリと読み書きフラグの共有メモリを使う方法です。読み書きフラグは送り側がセットし受け側がクリアします。送り側はフラグがクリアならば共有メモリに書き込んでフラグをセットし、受け側はフラグがセットしてあれば共有メモリから読み込んでフラグをクリアします。
双方の待ちを考慮しないとといけませんが、送り側が受け側のフェーズ時間の数倍でチェックをすれば遅延は1フレームです。何よりも Queue に比べ処理時間が短く情報の渋滞も起き難いことを優先しましょう。
#Python #器具の製作
今回は情報が一方向ですから比較的簡単ですが、よく考えないとトラブルのもとです。
一番簡単なのは、DMX512 の値の配列の共有メモリと読み書きフラグの共有メモリを使う方法です。読み書きフラグは送り側がセットし受け側がクリアします。送り側はフラグがクリアならば共有メモリに書き込んでフラグをセットし、受け側はフラグがセットしてあれば共有メモリから読み込んでフラグをクリアします。
双方の待ちを考慮しないとといけませんが、送り側が受け側のフェーズ時間の数倍でチェックをすれば遅延は1フレームです。何よりも Queue に比べ処理時間が短く情報の渋滞も起き難いことを優先しましょう。
#Python #器具の製作
Python での Open DMX USB の制御は8時間経過でも正常に動いている様子。
不定期に一瞬の不整合が起きているとしても確認の方法がありません。とりあえずこんなもんでいいのかな?
この後は Class 化と Thread 化をします。Thread 間通信は Queue ではなく 共有メモリを使いましょう。共有メモリは Tuple を FIFO で使うような便利なことは出来ませんが、今回は数値の配列を一方向で渡すだけですので、速度が期待できる共有メモリがいいでしょう。
下記は Thread ではなく Prosess の例題ですが、共有メモリのさわりが分かりやすい。
「Pythonでプロセス間の値の共有」
#Python #器具の製作
不定期に一瞬の不整合が起きているとしても確認の方法がありません。とりあえずこんなもんでいいのかな?
この後は Class 化と Thread 化をします。Thread 間通信は Queue ではなく 共有メモリを使いましょう。共有メモリは Tuple を FIFO で使うような便利なことは出来ませんが、今回は数値の配列を一方向で渡すだけですので、速度が期待できる共有メモリがいいでしょう。
下記は Thread ではなく Prosess の例題ですが、共有メモリのさわりが分かりやすい。
「Pythonでプロセス間の値の共有」
#Python #器具の製作
Python で Open DMX USB を動かすことに成功しました。
setbreakon と setbreakoff の挙動は予想の通りでした。
以下がテストソースです。
slot1 と slot512 を 0 から255 までカウントして終了します。
### Open DMX USB test ###
import ftd2xx as ftd
import time
if __name__ == '__main__' :
baudrate = 250000
word_length = 8
stop_bit = 2
parity = 0
purge_tx = 2
try :
d = ftd.open( 0 ) # Open first FTDI device
d.setBaudRate( baudrate )
d.setDataCharacteristics( word_length, stop_bit, parity )
d.purge( purge_tx )
channelVals = bytearray( [ 0 ] * 513 )
channelVals[ 0 ] = 0 # start code
for i in range( 256 ) :
try :
channelVals[ 1 ] = i
channelVals[ 512 ] = i
channelbytes = bytes( channelVals )
# Send Slot
cstart = time.perf_counter_ns( )
d.write( channelbytes )
while time.perf_counter_ns( ) - cstart < 22800000 :
pass
# Break Time
d.setBreakOn( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 192000 :
pass
# Mark After Break
d.setBreakOff( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 12000 :
pass
# Press Ctl+C to Exit
except KeyboardInterrupt :
break
d.close( )
except :
print( 'No Device' )
time.sleep() は求める精度に足りないので time.perf_counter_ns() を用いています。
0 から 255 のカウントが5.9秒強で終わるので 43fps くらい。ほぼ規格最大値です。
本当にコレでいいのかわからんけど、モヤモヤしてたのがスッキリした。
#Python #器具の製作
setbreakon と setbreakoff の挙動は予想の通りでした。
以下がテストソースです。
slot1 と slot512 を 0 から255 までカウントして終了します。
### Open DMX USB test ###
import ftd2xx as ftd
import time
if __name__ == '__main__' :
baudrate = 250000
word_length = 8
stop_bit = 2
parity = 0
purge_tx = 2
try :
d = ftd.open( 0 ) # Open first FTDI device
d.setBaudRate( baudrate )
d.setDataCharacteristics( word_length, stop_bit, parity )
d.purge( purge_tx )
channelVals = bytearray( [ 0 ] * 513 )
channelVals[ 0 ] = 0 # start code
for i in range( 256 ) :
try :
channelVals[ 1 ] = i
channelVals[ 512 ] = i
channelbytes = bytes( channelVals )
# Send Slot
cstart = time.perf_counter_ns( )
d.write( channelbytes )
while time.perf_counter_ns( ) - cstart < 22800000 :
pass
# Break Time
d.setBreakOn( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 192000 :
pass
# Mark After Break
d.setBreakOff( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 12000 :
pass
# Press Ctl+C to Exit
except KeyboardInterrupt :
break
d.close( )
except :
print( 'No Device' )
time.sleep() は求める精度に足りないので time.perf_counter_ns() を用いています。
0 から 255 のカウントが5.9秒強で終わるので 43fps くらい。ほぼ規格最大値です。
本当にコレでいいのかわからんけど、モヤモヤしてたのがスッキリした。
#Python #器具の製作