全年全月16日の投稿[47件](2ページ目)
2024年2月 この範囲を時系列順で読む この範囲をファイルに出力する
PegasysG10 のリペアを進めていますが現場や他の製作物もあるので牛歩状態です。10台終わりましたが、全48台なのでまだまだです。
それにしても飽きてきました。手順がまとまったので新鮮味がありません。モノ造りは好きですが、生産ではなく開発が好きなんですよね。
そんな心持ちで進めているところ、筐体の貼り合わせ部の防水がゴムパッキンではなくコーキングガチガチのに遭遇。1日に2台しか出来ないのがコレでして、マイナスドライバを加工した専用のノミとワイヤブラシでひたすら落としていきますが、コーキングを取り去るのにとても時間がかかるので心が折れます。
#器具の修理
それにしても飽きてきました。手順がまとまったので新鮮味がありません。モノ造りは好きですが、生産ではなく開発が好きなんですよね。
そんな心持ちで進めているところ、筐体の貼り合わせ部の防水がゴムパッキンではなくコーキングガチガチのに遭遇。1日に2台しか出来ないのがコレでして、マイナスドライバを加工した専用のノミとワイヤブラシでひたすら落としていきますが、コーキングを取り去るのにとても時間がかかるので心が折れます。
#器具の修理
2024年1月 この範囲を時系列順で読む この範囲をファイルに出力する
本業はオフで自宅の工作部屋の片付けです。足の踏み場がギリギリの部屋です。
出て来る出て来る行方不明だった部品たち、こんなに買ったのかと呆れる部品たち(^へ^;
発掘された部品を出来るだけ丁寧に分類・再梱包して収納します。
あとは、今後参考にすることは無いであろうWindowsXP時代のプログラミングマニュアルたち。
今となってはWindowsAPIを直に触ることはありませんし、VisualBasicなど書くことはありません。そんな本が20冊以上ありますのでこれも処分です。
#雑記
出て来る出て来る行方不明だった部品たち、こんなに買ったのかと呆れる部品たち(^へ^;
発掘された部品を出来るだけ丁寧に分類・再梱包して収納します。
あとは、今後参考にすることは無いであろうWindowsXP時代のプログラミングマニュアルたち。
今となってはWindowsAPIを直に触ることはありませんし、VisualBasicなど書くことはありません。そんな本が20冊以上ありますのでこれも処分です。
#雑記
2023年12月 この範囲を時系列順で読む この範囲をファイルに出力する
JANDS ESPⅡ 24ch が手元にあります。
シンプルで芸はありませんが、ちょっとした現場には便利な調光卓です。ただ齢30歳ともなりますと物理的に寿命です。フェーダーのスライドボリュームにガリが出てるのはもちろんですが、プリント基板の銅箔が腐食して断線しているところもあります。
不調のためここ数年使っていませんでしたが、苦楽を共にしてきた相棒ですので捨てるのは忍びなく修理というかリビルドしてあげようかなと思い始めました。
メイン基板には痛みはありませんので、主にフェーダー基板の再生です。使われている日本抵抗器製のスライドボリュームは随分前に廃番になっていますし、基板もやられているので、入手可能なスライドボリュームを使ったフェーダー基板を丸々新造するのが現実的な対策です。
問題は費用です。pcbgogoさんで見積もったら400x400mm(仮のサイズ)の両面基板が1枚52USDくらい。スライドボリュームは千石電商さんで580円くらいだけど、中華電機なら60円くらい。手間はともかく案外安く済みそう。
最近は一般照明卓の選択肢が少なくなり、手に入っても機械的に廉価な物ばかりなので、JANDS ESPⅡ が10万以下で復活するならアリですね。
#器具の修理
シンプルで芸はありませんが、ちょっとした現場には便利な調光卓です。ただ齢30歳ともなりますと物理的に寿命です。フェーダーのスライドボリュームにガリが出てるのはもちろんですが、プリント基板の銅箔が腐食して断線しているところもあります。
不調のためここ数年使っていませんでしたが、苦楽を共にしてきた相棒ですので捨てるのは忍びなく修理というかリビルドしてあげようかなと思い始めました。
メイン基板には痛みはありませんので、主にフェーダー基板の再生です。使われている日本抵抗器製のスライドボリュームは随分前に廃番になっていますし、基板もやられているので、入手可能なスライドボリュームを使ったフェーダー基板を丸々新造するのが現実的な対策です。
問題は費用です。pcbgogoさんで見積もったら400x400mm(仮のサイズ)の両面基板が1枚52USDくらい。スライドボリュームは千石電商さんで580円くらいだけど、中華電機なら60円くらい。手間はともかく案外安く済みそう。
最近は一般照明卓の選択肢が少なくなり、手に入っても機械的に廉価な物ばかりなので、JANDS ESPⅡ が10万以下で復活するならアリですね。
#器具の修理
2023年11月 この範囲を時系列順で読む この範囲をファイルに出力する
2023年9月 この範囲を時系列順で読む この範囲をファイルに出力する
共有メモリを使う場合、読み書きが衝突しないように配慮しなければなりません。
今回は情報が一方向ですから比較的簡単ですが、よく考えないとトラブルのもとです。
一番簡単なのは、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 #器具の製作
2023年6月 この範囲を時系列順で読む この範囲をファイルに出力する
LTC Player を作るのにPythonのGUIライブラリを検討しています。
Python標準のtkinterも良いと思うのですが少し物足りない感じ。
マルチプラットホーム対応で無料の条件ですと kivy が良さそうです。出来ることが多すぎて難しそうですが、これは贅沢な悩みです。
kivyはkv言語と呼ばれるコマンド群を使うことでスタイルシートの様な使い方が出来る様です。Tkinterよりも細かい画面作りが可能ということです。
何が出来るのか、どこまで出来るのか、どうやったら使えるのかはこれからの勉強です。
追記
仕事の合間にkivyについて調べてみましたがとても難しい。これで出来ない表現は無いように思える程ですが、ここまで必要か疑問。正直、kivyの学習には時間がかかり過ぎます。
別なGUIライブラリが無いかと調べたところ「PySimpleGUI」というのがありました。必要な表現が出来るかわかりませんが簡単です。コマンドで画面を描きますが、難易度はFileMakerProの画面描きと大差ない感じです。
#Python
Python標準のtkinterも良いと思うのですが少し物足りない感じ。
マルチプラットホーム対応で無料の条件ですと kivy が良さそうです。出来ることが多すぎて難しそうですが、これは贅沢な悩みです。
kivyはkv言語と呼ばれるコマンド群を使うことでスタイルシートの様な使い方が出来る様です。Tkinterよりも細かい画面作りが可能ということです。
何が出来るのか、どこまで出来るのか、どうやったら使えるのかはこれからの勉強です。
追記
仕事の合間にkivyについて調べてみましたがとても難しい。これで出来ない表現は無いように思える程ですが、ここまで必要か疑問。正直、kivyの学習には時間がかかり過ぎます。
別なGUIライブラリが無いかと調べたところ「PySimpleGUI」というのがありました。必要な表現が出来るかわかりませんが簡単です。コマンドで画面を描きますが、難易度はFileMakerProの画面描きと大差ない感じです。
#Python
2023年5月 この範囲を時系列順で読む この範囲をファイルに出力する
ダイレクトボックスってのがあります。主に楽器の信号をミキサーで受けやすく変換する装置です。
メジャーな普及機は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のセラミックコンデンサを高品質な物に替えるのもアリです。実装されているのはベッタベタの普及品ですから、高品質でレスポンスが良いセラミックコンデンサに替えたらどうなるか「興味深々」であります。
#音の世界
オレメモです。
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.
誤差無し
以前の計算と何か違うのだけど、まぁいいか。
#器具の製作 #タイムコード