全年全月14日の投稿[35件]
2025年2月 この範囲を時系列順で読む この範囲をファイルに出力する
現場が忙しい状況ですのでガラクタイジリは少しお休み。
なのにですよ、最後の最後に Antari F1-FAZER は煙を一切出さなくなりました。
色々考えたのですが、ひょっとすると温度センサが狂っているのではないかと。
煙の出口がブクブク泡立つことがあり、液があるなら煙になれと思っていました。また、発煙口の液だれの焦げが目立ちます。現役の正常な機体では見られないことでもあります。
理屈というより勘ですが、発煙器の温度が低いという前提で洗い直す必要がありそうです。発煙器は冷めているとリキッドもエアも通しませんが暖まると通します。温度で開閉する弁があるのでしょう。正に今は定格温度になる前の閉鎖状態から脱せない感じ。つまり温度が低いのではと。実際発煙口は低い気がする。
発煙器からは温度センサからと思わしきケーブルがあります。当たってみると熱電対っぽい挙動。数mVの電圧があり、電熱器へのリレーの挙動に合わせて上下します。基板を当たりますと熱電対からと思わしきケーブルと直結されたコネクタがあります。たぶんですが、熱電対の電圧を見ながら近くにある半固定抵抗で電熱器のON/OFF条件を調整するのではないかと。正常な機体の熱電対の電圧とリレーの動作を見て設定を調べてみます。
半固定抵抗も怪しい気がする。念のため同等品に交換してみるつもりです。
#器具の修理
なのにですよ、最後の最後に Antari F1-FAZER は煙を一切出さなくなりました。
色々考えたのですが、ひょっとすると温度センサが狂っているのではないかと。
煙の出口がブクブク泡立つことがあり、液があるなら煙になれと思っていました。また、発煙口の液だれの焦げが目立ちます。現役の正常な機体では見られないことでもあります。
理屈というより勘ですが、発煙器の温度が低いという前提で洗い直す必要がありそうです。発煙器は冷めているとリキッドもエアも通しませんが暖まると通します。温度で開閉する弁があるのでしょう。正に今は定格温度になる前の閉鎖状態から脱せない感じ。つまり温度が低いのではと。実際発煙口は低い気がする。
発煙器からは温度センサからと思わしきケーブルがあります。当たってみると熱電対っぽい挙動。数mVの電圧があり、電熱器へのリレーの挙動に合わせて上下します。基板を当たりますと熱電対からと思わしきケーブルと直結されたコネクタがあります。たぶんですが、熱電対の電圧を見ながら近くにある半固定抵抗で電熱器のON/OFF条件を調整するのではないかと。正常な機体の熱電対の電圧とリレーの動作を見て設定を調べてみます。
半固定抵抗も怪しい気がする。念のため同等品に交換してみるつもりです。
#器具の修理
2025年1月 この範囲を時系列順で読む この範囲をファイルに出力する
目詰まりしていた Antari F1-FAZER はお亡くなりになりました。完全に詰まってしまいどうにもなりません。
途中まではイイ感じだったのですが、剥がれた目詰まりがその先に詰まって致命傷になったのかな?って感じです。
中を見なければこれ以上の対策は思い浮かびません。殻割りして中の仕組みを調べて重清掃を検討しようと思います。焦げ付きを採取して溶かす方法を探すのもアリです。
正しいメンテナンスをしていればこうはならなかったと言えばそれまでですけどね。
学んだことは、、、
1)使用後は必ずセルフクリーニングを実施する。
2)1ヶ月毎、または5回くらい使った後は精製水もしくはお酢溶液を吸わせる。
3)半年を目途に加熱せずにお酢溶液を通して発煙器の中を洗う。
4)1年毎、または約20回使用毎にポンプを新品に交換する。
といった感じでしょうか。
ちょっと面倒ですが、爆煙が魅力の Antari F1-FAZER が安物程度の煙量では価値がありません。発煙しないのは論外ですけど。
#器具の修理
途中まではイイ感じだったのですが、剥がれた目詰まりがその先に詰まって致命傷になったのかな?って感じです。
中を見なければこれ以上の対策は思い浮かびません。殻割りして中の仕組みを調べて重清掃を検討しようと思います。焦げ付きを採取して溶かす方法を探すのもアリです。
正しいメンテナンスをしていればこうはならなかったと言えばそれまでですけどね。
学んだことは、、、
1)使用後は必ずセルフクリーニングを実施する。
2)1ヶ月毎、または5回くらい使った後は精製水もしくはお酢溶液を吸わせる。
3)半年を目途に加熱せずにお酢溶液を通して発煙器の中を洗う。
4)1年毎、または約20回使用毎にポンプを新品に交換する。
といった感じでしょうか。
ちょっと面倒ですが、爆煙が魅力の Antari F1-FAZER が安物程度の煙量では価値がありません。発煙しないのは論外ですけど。
#器具の修理
2024年11月 この範囲を時系列順で読む この範囲をファイルに出力する
ncurses はウィンドウも定義出来ます。
今時のウィンドウとは違い、画面の中に子領域を作るイメージです。この領域内で文字位置が指定出来ます。子領域の左上を文字位置の 0,0 として扱えます。
ダイアログウィンドウを描くことも出来ますし、画面の区分けにも使えます。
今ネタになっている ArtNet-Patch では、すべてのレイアウトに共通する要素をメイン画面に描き、機能ごとの要素をウィンドウにして描こうかなと。表示位置のオフセット管理が楽になりますし、複数のレイアウトで共通する要素は使いまわしがしやすくなります。
ncurses はキー入力も受け取れますので、ユーザーの相手にする部分は ncurses で全て作れそうです。
後は string の使い方を頭に刷り込めば画面は作れるかなと。C言語の欠点は文字列の扱い難さですが、文字列は char の配列であることを頭に染み込ませてから string を勉強しなおしましょう。
アホかと思うくらいC言語について検索してきたので、これまで ncurses を知らなかったのは何故だろう。
#[Art-net] #C言語
今時のウィンドウとは違い、画面の中に子領域を作るイメージです。この領域内で文字位置が指定出来ます。子領域の左上を文字位置の 0,0 として扱えます。
ダイアログウィンドウを描くことも出来ますし、画面の区分けにも使えます。
今ネタになっている ArtNet-Patch では、すべてのレイアウトに共通する要素をメイン画面に描き、機能ごとの要素をウィンドウにして描こうかなと。表示位置のオフセット管理が楽になりますし、複数のレイアウトで共通する要素は使いまわしがしやすくなります。
ncurses はキー入力も受け取れますので、ユーザーの相手にする部分は ncurses で全て作れそうです。
後は string の使い方を頭に刷り込めば画面は作れるかなと。C言語の欠点は文字列の扱い難さですが、文字列は char の配列であることを頭に染み込ませてから string を勉強しなおしましょう。
アホかと思うくらいC言語について検索してきたので、これまで ncurses を知らなかったのは何故だろう。
#[Art-net] #C言語
2024年10月 この範囲を時系列順で読む この範囲をファイルに出力する
LED-PAR は全数48台です。その内23台が終わったところ。あと25台。
ここまでは明らかなNG品。故障の原因を探ったり部品サイズが現行品と違えば取付穴を作り直すなど時間がかかりますが、残りの25台は一応動くので主な作業はケーブル交換ですから1台あたり2時間でしょうか。50時間と考えると遠いですけど、1日2台と思えば2週間。
別機種48台の整備は今は忘れておきましょう。。。
#器具の修理
ここまでは明らかなNG品。故障の原因を探ったり部品サイズが現行品と違えば取付穴を作り直すなど時間がかかりますが、残りの25台は一応動くので主な作業はケーブル交換ですから1台あたり2時間でしょうか。50時間と考えると遠いですけど、1日2台と思えば2週間。
別機種48台の整備は今は忘れておきましょう。。。
#器具の修理
2024年9月 この範囲を時系列順で読む この範囲をファイルに出力する
LED-PAR は基板の SN75176 を LT1785 に替えることでフリッカーが治まりました。
LT1785 化することで不要になる保護回路も外してあります。

ハンダ付けが少し汚く見えますが影のせいなのでご容赦。
筐体を開けるのも一苦労なので、ターミネーターを付けないとフリッカーが出やすい機体から順次改造していきます。
追記
保護回路を外したところにビニル被覆線のジャンパー線を付けましたが、表面実装の 0Ω を用いるのがいいかもしれません。3216サイズです。

刻印が JF と 510 の4カ所です。510 は3226サイズですが、3216サイズでも問題無いでしょう。
JF はフェライト系のフィルタと思われます。510 は 51Ω の抵抗です。
#器具の修理
LT1785 化することで不要になる保護回路も外してあります。

ハンダ付けが少し汚く見えますが影のせいなのでご容赦。
筐体を開けるのも一苦労なので、ターミネーターを付けないとフリッカーが出やすい機体から順次改造していきます。
追記
保護回路を外したところにビニル被覆線のジャンパー線を付けましたが、表面実装の 0Ω を用いるのがいいかもしれません。3216サイズです。

刻印が JF と 510 の4カ所です。510 は3226サイズですが、3216サイズでも問題無いでしょう。
JF はフェライト系のフィルタと思われます。510 は 51Ω の抵抗です。
#器具の修理
2024年5月 この範囲を時系列順で読む この範囲をファイルに出力する
RaspberryPiに最新のOS(bookworm)を入れてみました。
ナニかおかしい・・・。
調べてみたら、bookwormではネットワークの設定方法が変わったらしい。dhcpcdではなくNetworkManagerらしい。
これは勉強しなおさんといかん。
このあたり、ちょくちょく変わるので面倒である。
追記
ちょっと早起きしたので NetworkManeger について調べてみました。
dhcpcd とは違うけれど、設定ファイルを書いてもコマンドでも設定が出来る。
そもそも何なのよ、を理解するのに少し時間がかかりましたが、覚えてしまえばこちらの方が楽かもしれない。
次の記事はわかりやすいかも。
「NetworkManagerの接続設定作成用テンプレート」
Art-Net で使うipv4アドレスを自動設定するところまでやってみましょう。
追記+
NetworkManager の設定を変更するには modify を使います。
まだわからないことがあるので手順は示しませんが、modify は設定ファイルの変更であってこれを実行しても有効にはなりません。
down して up する操作が必要です。
#RaspberryPi
ナニかおかしい・・・。
調べてみたら、bookwormではネットワークの設定方法が変わったらしい。dhcpcdではなくNetworkManagerらしい。
これは勉強しなおさんといかん。
このあたり、ちょくちょく変わるので面倒である。
追記
ちょっと早起きしたので NetworkManeger について調べてみました。
dhcpcd とは違うけれど、設定ファイルを書いてもコマンドでも設定が出来る。
そもそも何なのよ、を理解するのに少し時間がかかりましたが、覚えてしまえばこちらの方が楽かもしれない。
次の記事はわかりやすいかも。
「NetworkManagerの接続設定作成用テンプレート」
Art-Net で使うipv4アドレスを自動設定するところまでやってみましょう。
追記+
NetworkManager の設定を変更するには modify を使います。
まだわからないことがあるので手順は示しませんが、modify は設定ファイルの変更であってこれを実行しても有効にはなりません。
down して up する操作が必要です。
#RaspberryPi
2023年11月 この範囲を時系列順で読む この範囲をファイルに出力する
デスクワークの合間に別な箱も加工しました。

吊るしてミッチャクロンを塗布した後です。
物はミニカムロック(E1015)入力、C型30A×6出力です。丸端子を取り付ける端子台はありませんが、単相三線、三相四線を切り替えて使えます。
20年経過しても痛みが無い重装備なC型ボックスに比べたら貧弱ですが、工具と段取りさえ整理しておけば比較的簡単に作れる箱なので寿命が短くてもいいでしょう。サンテナーのB#50に入る小型軽量品ですから機動性重視です。
次の作業は来週以降になりますが、先行して塗っておけば塗装を十分に乾かすことが出来ます。1日あれば乾きますが、塗料を十分に硬化させるには一週間は放置したいところです。
追記
黒くしてみた。

追記
塩ビに塗装するとシンナーの匂いが抜ける時間が短い様子。36時間経過で匂いがほぼ抜けています。
木材ですと繊維に浸み込みますし、鉄やアルミだと材の温度が低い傾向があるからかな?
ラッカーを塗布する際は厚塗りせず軽く捨て吹きする感覚で回数をかけるのが良さそうです。厚塗り2回より捨て吹き5回ってイメージです。我慢が必要になりますが、3回吹いてようやく全体が色付く感じです。捨て吹きの感じなら厚塗りの半分以下の時間で表面が乾くので、回数が多くても塗装時間も少なくて済みます。
#ガチ工作 #器具の製作

吊るしてミッチャクロンを塗布した後です。
物はミニカムロック(E1015)入力、C型30A×6出力です。丸端子を取り付ける端子台はありませんが、単相三線、三相四線を切り替えて使えます。
20年経過しても痛みが無い重装備なC型ボックスに比べたら貧弱ですが、工具と段取りさえ整理しておけば比較的簡単に作れる箱なので寿命が短くてもいいでしょう。サンテナーのB#50に入る小型軽量品ですから機動性重視です。
次の作業は来週以降になりますが、先行して塗っておけば塗装を十分に乾かすことが出来ます。1日あれば乾きますが、塗料を十分に硬化させるには一週間は放置したいところです。
追記
黒くしてみた。

追記
塩ビに塗装するとシンナーの匂いが抜ける時間が短い様子。36時間経過で匂いがほぼ抜けています。
木材ですと繊維に浸み込みますし、鉄やアルミだと材の温度が低い傾向があるからかな?
ラッカーを塗布する際は厚塗りせず軽く捨て吹きする感覚で回数をかけるのが良さそうです。厚塗り2回より捨て吹き5回ってイメージです。我慢が必要になりますが、3回吹いてようやく全体が色付く感じです。捨て吹きの感じなら厚塗りの半分以下の時間で表面が乾くので、回数が多くても塗装時間も少なくて済みます。
#ガチ工作 #器具の製作
2023年6月 この範囲を時系列順で読む この範囲をファイルに出力する
python-vlc で音源を流す試験をしました。
単に再生するだけなら簡単。
ちょっと難儀したのは再生終了を確定する処理。再生後自動的にリセットされませんので、再生が終了したことを確認して後処理をしないといけません。
vlc.MediaPlayer.is_playing()は再生中かどうかを把握出来ますが、これだけでは再生が終了したフェーズかわかりません。オレフラグ(下記ではis_playing)を併用して再生前か再生後かを判別します。再生後ならstop()を実行します。きちんとstop()しないともう一度再生が出来ないpython-vlc。
下記は再生終了を確定する試験として繰り返し再生するモノです。
# -*- coding: utf-8 -*-
import time
import vlc
def play() :
# 音声ファイルを定義
play_music = ( [ vlc.MediaPlayer() ] )
try :
play_music[0].set_mrl( 'C:/音源.mp3' )
except :
return -1
# 再生ボリューム設定
play_music[0].audio_set_volume( 60 )
# フラグ定義
is_playing = 0 # 再生実行済みフラグ
# Main Loop
while True :
try :
# 予備睡眠
time.sleep( 0.0001 ) # Ctl-Cの反応を良くするのに少しsleepを入れるといい
# 停止中
if( play_music[0].is_playing() == 0 ) :
# 未開始で停止中
if( is_playing == 0 ) :
play_music[0].play()
while ( play_music[0].is_playing() == 0 ) : # 再生状態が確定するまで待つ
time.sleep( 0.001 )
play_music[0].set_time( 0 )
is_playing = 1
# 再生終了で停止中
else : # if( is_playing == 1 ) :
play_music[0].stop() # 再生終了を宣言してインスタンスをリセットする 主にこれをやりたいがための処理
is_playing = 0
# 再生中
else :
pass # 再生中に行う処理は書いていないのでとりあえずpass
# Ctl-Cで終了
except KeyboardInterrupt :
play_music[0].stop()
break
return 0
if __name__ == "__main__" :
play()
python-vlc便利過ぎ。
追記
vlc.MediaPlayer.get_length()とvlc.MediaPlayer.get_time()を使って再生が最後まで行ったかチェックしました。
何曲か試しましたが、概ねlengthの-0.1~-0.2秒で終了しています。vlc.MediaPlayer.get_time()は取得単位の1msecで厳密にカウントされているモノでも無さそうなので表示上の誤差かもしれません。トラック別で音繋がり場合は少し不安がありますが、音のお尻には1-2秒の余白があるのが一般的ですし、そこまで突き詰めるシステムではありませんのでいいかなと。
画面作りをやって LTC Generator と合わせれば完成が見えてきそうです。
ウィンドウマネージャーはPython標準のtkinterを使う勉強をしています。書式は違いますが、考え方はHTMLとCSSを使ったweb画面作りに酷似していますので、方言的に翻訳が出来れば何とかなりそうです。ただ、ボタン操作や画面の更新をオブジェクト指向のイベント処理(割り込み)で書くので少し面倒ですし、LTC Generator の制御やvlcの部分はバックグラウンドの常駐処理にしたいのでウィンドウ制御とは別スレッドとなり手間がかかるかも。
#Python #タイムコード
単に再生するだけなら簡単。
ちょっと難儀したのは再生終了を確定する処理。再生後自動的にリセットされませんので、再生が終了したことを確認して後処理をしないといけません。
vlc.MediaPlayer.is_playing()は再生中かどうかを把握出来ますが、これだけでは再生が終了したフェーズかわかりません。オレフラグ(下記ではis_playing)を併用して再生前か再生後かを判別します。再生後ならstop()を実行します。きちんとstop()しないともう一度再生が出来ないpython-vlc。
下記は再生終了を確定する試験として繰り返し再生するモノです。
# -*- coding: utf-8 -*-
import time
import vlc
def play() :
# 音声ファイルを定義
play_music = ( [ vlc.MediaPlayer() ] )
try :
play_music[0].set_mrl( 'C:/音源.mp3' )
except :
return -1
# 再生ボリューム設定
play_music[0].audio_set_volume( 60 )
# フラグ定義
is_playing = 0 # 再生実行済みフラグ
# Main Loop
while True :
try :
# 予備睡眠
time.sleep( 0.0001 ) # Ctl-Cの反応を良くするのに少しsleepを入れるといい
# 停止中
if( play_music[0].is_playing() == 0 ) :
# 未開始で停止中
if( is_playing == 0 ) :
play_music[0].play()
while ( play_music[0].is_playing() == 0 ) : # 再生状態が確定するまで待つ
time.sleep( 0.001 )
play_music[0].set_time( 0 )
is_playing = 1
# 再生終了で停止中
else : # if( is_playing == 1 ) :
play_music[0].stop() # 再生終了を宣言してインスタンスをリセットする 主にこれをやりたいがための処理
is_playing = 0
# 再生中
else :
pass # 再生中に行う処理は書いていないのでとりあえずpass
# Ctl-Cで終了
except KeyboardInterrupt :
play_music[0].stop()
break
return 0
if __name__ == "__main__" :
play()
python-vlc便利過ぎ。
追記
vlc.MediaPlayer.get_length()とvlc.MediaPlayer.get_time()を使って再生が最後まで行ったかチェックしました。
何曲か試しましたが、概ねlengthの-0.1~-0.2秒で終了しています。vlc.MediaPlayer.get_time()は取得単位の1msecで厳密にカウントされているモノでも無さそうなので表示上の誤差かもしれません。トラック別で音繋がり場合は少し不安がありますが、音のお尻には1-2秒の余白があるのが一般的ですし、そこまで突き詰めるシステムではありませんのでいいかなと。
画面作りをやって LTC Generator と合わせれば完成が見えてきそうです。
ウィンドウマネージャーはPython標準のtkinterを使う勉強をしています。書式は違いますが、考え方はHTMLとCSSを使ったweb画面作りに酷似していますので、方言的に翻訳が出来れば何とかなりそうです。ただ、ボタン操作や画面の更新をオブジェクト指向のイベント処理(割り込み)で書くので少し面倒ですし、LTC Generator の制御やvlcの部分はバックグラウンドの常駐処理にしたいのでウィンドウ制御とは別スレッドとなり手間がかかるかも。
#Python #タイムコード
オレメモ
PythonでVLCを使った音楽再生方法を再整理。
Windows11x64
Python3.7
VLC media player ver.3.0.18
pipでpython-vlcをインストール。
コマンドプロンプト(管理者権限にて)
> pip3 install python-vlc
pipとはPythonのライブラリを提供してくれるリポジトリのこと。先達に感謝。
pythonでvlcによる再生。
import vlc
if __name__ == '__main__':
p = vlc.MediaPlayer() #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('sound.mp3') #インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨
p.play() #再生開始
これだけで音声ファイルが再生されます。
以下基本的なAPI。
p = vlc.MediaPlayer() #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('<file_name>') #インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨 ファイルはVLC media player で扱える物なら何でも。
p.play() #再生開始 戻り値 0=正常再生/-1=再生出来ない ※ pauseされていれば再生再開
p.is_playing() #再生中か 戻り値 0=再生していない/1=再生中
p.pause() #再生中なら一時停止、一時停止中なら再生再開 戻り値無し
p.get_length() #音源の長さを取得 戻り値 秒数(msec.)
p.get_time() #音源の最初からの再生位置を取得 戻り値 秒数(msec.)
p.set_time(<msec.>) #再生再開位置を秒数(msec.)で指定 戻り値無し ※ 再生中やpause()中でないと指定出来ない
p.audio_set_volume(<パーセント>) #0=mute,100=0dB(パーセント指示だと思っていいみたい。100以上も指定可能。)戻り値 0=再生中に設定成功/-1=設定はしたが再生はしていない
p.stop() #停止 戻り値無し 次回のplay()では最初から始まる
※ 最後まで再生しきっても、stop()をしないと次回のplay()はスタートしない。再生終了で必ずstop()を実行する。
※ 停止中は次の再生開始秒数を指定出来ないので、特定の秒数(msec.)から再生する場合は、play()に続いてset_time(<msec.>)を実行する。ただし、pause()中は指定可能。
p.play()
p.set_time(<msec.>)
複数の音源ファイルをプレイリストとして扱ってくれるクラスもあるのですが、LTCを作るには少し不便がありそうなため、1曲単位で扱うことにしています。
vlc.MediaPlayer()のリストを作成する。
p = ( [vlc.MediaPlayer(), vlc.MediaPlayer(), vlc.MediaPlayer()] )
# p[0]、p[1]、p[2] などと使える。
普通にオフジェクトのリストとして扱える。
これだけはメモ。
リストのオブジェクトを追加する。
p.append( vlc.MediaPlayer() )
# 上記に続いた場合は p[3] が追加される
再生操作のレスポンスはとても良く、タイムラグはほとんど感じない。
ただ、プレイリスト分のインスタンスを設定するにはメモリに注意かもしれない。
参考
python-vlcのドキュメント
ここの「vlc.MediaPlayer」を参照。
#Python
PythonでVLCを使った音楽再生方法を再整理。
Windows11x64
Python3.7
VLC media player ver.3.0.18
pipでpython-vlcをインストール。
コマンドプロンプト(管理者権限にて)
> pip3 install python-vlc
pipとはPythonのライブラリを提供してくれるリポジトリのこと。先達に感謝。
pythonでvlcによる再生。
import vlc
if __name__ == '__main__':
p = vlc.MediaPlayer() #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('sound.mp3') #インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨
p.play() #再生開始
これだけで音声ファイルが再生されます。
以下基本的なAPI。
p = vlc.MediaPlayer() #vlc.MediaPlayerのインスタンスを作成
p.set_mrl('<file_name>') #インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨 ファイルはVLC media player で扱える物なら何でも。
p.play() #再生開始 戻り値 0=正常再生/-1=再生出来ない ※ pauseされていれば再生再開
p.is_playing() #再生中か 戻り値 0=再生していない/1=再生中
p.pause() #再生中なら一時停止、一時停止中なら再生再開 戻り値無し
p.get_length() #音源の長さを取得 戻り値 秒数(msec.)
p.get_time() #音源の最初からの再生位置を取得 戻り値 秒数(msec.)
p.set_time(<msec.>) #再生再開位置を秒数(msec.)で指定 戻り値無し ※ 再生中やpause()中でないと指定出来ない
p.audio_set_volume(<パーセント>) #0=mute,100=0dB(パーセント指示だと思っていいみたい。100以上も指定可能。)戻り値 0=再生中に設定成功/-1=設定はしたが再生はしていない
p.stop() #停止 戻り値無し 次回のplay()では最初から始まる
※ 最後まで再生しきっても、stop()をしないと次回のplay()はスタートしない。再生終了で必ずstop()を実行する。
※ 停止中は次の再生開始秒数を指定出来ないので、特定の秒数(msec.)から再生する場合は、play()に続いてset_time(<msec.>)を実行する。ただし、pause()中は指定可能。
p.play()
p.set_time(<msec.>)
複数の音源ファイルをプレイリストとして扱ってくれるクラスもあるのですが、LTCを作るには少し不便がありそうなため、1曲単位で扱うことにしています。
vlc.MediaPlayer()のリストを作成する。
p = ( [vlc.MediaPlayer(), vlc.MediaPlayer(), vlc.MediaPlayer()] )
# p[0]、p[1]、p[2] などと使える。
普通にオフジェクトのリストとして扱える。
これだけはメモ。
リストのオブジェクトを追加する。
p.append( vlc.MediaPlayer() )
# 上記に続いた場合は p[3] が追加される
再生操作のレスポンスはとても良く、タイムラグはほとんど感じない。
ただ、プレイリスト分のインスタンスを設定するにはメモリに注意かもしれない。
参考
python-vlcのドキュメント
ここの「vlc.MediaPlayer」を参照。
#Python
LTC Generator のLTC信号を卓(MA dot2)が認識しました。
ただ、同じ値を送り続けても認識しません。LTCを入力してから認識するまで1秒弱かかるので、カウントを進めずに信号を認識し続ける方法が欲しいのです。
試しに数フレームの繰り返しを組んでみたところ認識し、数フレームの繰り返しを一定回数行ってから抜ける様にしたところ期待する結果を得ました。
最初のCUEポイントのマイナス数フレームの位置で2-3フレームの繰り返し待機をし、トリガが立ったらそれを抜ける考え方で良さそうです。
ともかく、卓が認識したので一安心です。
#タイムコード
ただ、同じ値を送り続けても認識しません。LTCを入力してから認識するまで1秒弱かかるので、カウントを進めずに信号を認識し続ける方法が欲しいのです。
試しに数フレームの繰り返しを組んでみたところ認識し、数フレームの繰り返しを一定回数行ってから抜ける様にしたところ期待する結果を得ました。
最初のCUEポイントのマイナス数フレームの位置で2-3フレームの繰り返し待機をし、トリガが立ったらそれを抜ける考え方で良さそうです。
ともかく、卓が認識したので一安心です。
#タイムコード