<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ 2023年6月の投稿［38件］ - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Fri, 01 May 2026 20:20:28 +0900</lastBuildDate>
	<generator><![CDATA[ <!-- てがろぐ Version: -->Powered by <a href="https://www.nishishi.com/cgi/tegalog/" target="_top">てがろぐ</a> Ver 3.4.0 ]]></generator>
	<!-- BEGIN ENTRIES -->
	<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　そんなこんなで LTC Player の製作は止まっていま… ]]></title>
	<description><![CDATA[ 　そんなこんなで LTC Player の製作は止まっています。進めたいのですが時間だけでなくアタマの容量も不足してます。<br />　PysimpleGUI を筆頭にプログラム環境でどこまで出来るかを探りながらなので、自分でもどう仕上がるかわからんという本音もあります。<br />　最近気づいたのは、sg.FileBrowse() などのボタンとしてレイアウトしなければならない機能は、不可視設定した column に入れ込んでしまえば表示しなくても使えること、ボタンオブジェクトを押したことにする .Click() を使えば他の event から(もちろんメニューからも)読み出せるというものです。PysimpleGUIを使ったことがないとピンとこないことですが、これは PysimpleGUI のレイアウトに自由度を与えてくれます。<br /><br />追記<br />　.Bind() を使うと細かいキーボード操作を event として取り込むことが出来るらしい。<br />　キー操作をプレスにするかリリースにするかを選べるハズです。この辺りも研究課題です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔465文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=660</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=660</guid>
	<category>tegalog</category>
	<pubDate>Fri, 30 Jun 2023 23:11:06 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　このところサーバーを作っていました。設置場所は某劇場の舞台… ]]></title>
	<description><![CDATA[ 　このところサーバーを作っていました。設置場所は某劇場の舞台事務所です。<br />　インターネットにも行けるごく普通の館内LANを使うのですが、館内のフリーwi-fiと元を同じくする回線です。先の設定がどうなっているのかわかりませんが、ネットマスクの桁数から想像するにフリーwi-fiの回線そのものと思われます。無料で使わせてもらえるので贅沢を言ってはいけませんが、接続しているパソコンと共有しているフォルダは絶対に隠さなければなりません。<br />　となると、必要な通信は通って不必要は通信は遮断するゲートウェイサーバーを構成する必要があります。その他の課題は、ローカルLANをwi-fiにすることです。机の配置の都合でLANケーブルを敷設出来ないからです。<br />　サーバー機の構成は、機体がジャンクのPC、OSはdebian、データストレージはRAID1にしたHDDを２台とバックアップ用のUSB-HDD、wi-fiのアクセスポイントとしてUSBのwi-fiトングです。マザーボードにはLANコネクタが２個あるので、外向きLANと内向きLANを構成してwi-fiトングは内向きのLANとブリッジします。<br />　これまでにも近い構成を何度も組んでいますからすんなり終わるだろと思ったら大間違い。このところのdebianはヴァージョンが上がるごとにセキュリティ対策が増え、設定が微増するのは仕方ないとして、旧来のコマンドが使えなくなったり設定の仕方がちょっとだけ変わるのです。私からすればよくわからん方言となりますので調べるのに時間がかかりました。持った通りに組めましたが、思惑より２日間余計にかかって他の仕事がヤバイ。<br />　おまけというか蛇足ですが、VPNで本社にも繋がる様にしておきました。本社の共有フォルダにアクセス出来れば業務も楽だろうと。<br /><br />　突っ込んだ話ですが、DHCPサーバー、DNSサーバーとしてdnsmasqを使ってみました。簡易的なモノというイメージがありますが、私が組む小規模サーバーにはisc-dhcp-serverやbind9よりも等身大です。複雑な振り分けやルーティングはしませんので機能は十分ですし何よりも設定が分かりやすい。これらはサーバーを作り始めた当初に難儀したところですからこの使い勝手は感激レベルです。一つ問題を上げるなら、起動後、wi-fiトングと内向きLANとのブリッジが完了する前にdnsmasqが起動すると正常に動作しないので、dnsmasqの起動に待ちを入れる必要があったことです。これを見つけるのに少し時間がかかりました。<br />　/etc/resolv.conf を dhcpcd に書きかえらない対策が必要なことも気付くのに時間がかかりました。dnsmasq は自分でルートファイルを持たないために設定が簡単ですが、dhcpでアドレスを受け取る際に得たDNSサーバーの情報で /etc/resolv.conf を書き換えてしまうのです。これをされると自分でDNSサーバーを持っている場合に不都合が出るので、/etc/resolv.conf は書き換え不可にしなければならないのです。dnsmasq にも書き換えしない設定があるようですが、何度やっても書き換えられてしまう。ならば、/etc/resolvconf をOSレベルで書き換えられてない様にすればいい。同様の問題を抱えた先達がいましたので有難くパクらせて頂きました。パーミッションを400にするのかと思いきや、パーミッションより上位のフラグがあって、それを設定するのがいいらしい。# chattr +i /etc/resolv.conf とのこと。+i は書き換え不可のフラグを立てるスイッチです。外すなら -i だそうな。<br />　あと、DHCPクライアントをdhcpcdにしました。RaspberryPiで慣れているのもありますが、旧来の /etc/network/interfaces だけで設定するより何をしてもスムーズ。特にwi-fiトングをアクセスポイントにする hostapd を使うなら dhcpcd 一択と思えるほど快適でした。<br /><br />　書き始めたらキリがありませんが、都度の感想も書き入れた設定記録を残したので、次の製作では参考にしつつ読んで楽しもうと思います。<br /><br />　サーバーの設定は server world さんを参考にしています。<br />　<a class="url" href="https&#58;//www.server-world.info/" target="_blank" title="https&#58;//www.server-world.info/">server world</a> <br />　ここの通りにすればちゃんと動きますので、私はここのレシピで基本設定をしてから好みに変更する様にしています。<br />　ただし、セキュリティについては別です。基本はフォルダやファイルのパーミッション、ルーティング、IPフィルタリングですが、ここはそうった解説を書かない方針と見受けらえます。それらについては別途勉強しなければなりません。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc" class="taglink" title="サーバー">#サーバー</a> -- Posted by 電装工芸 〔2001文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=659</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=659</guid>
	<category>tegalog</category>
	<pubDate>Fri, 30 Jun 2023 09:36:55 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Player はファイルを読み込んでセットリストの… ]]></title>
	<description><![CDATA[ 　LTC Player はファイルを読み込んでセットリストの編集をするところまで来ました。<br />　この辺り、かなり面倒です。編集の手順、再生中のLockなど、よく考えないといけません。<br />　それでも、かなりそれっぽくはなってきました。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔123文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=658</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=658</guid>
	<category>tegalog</category>
	<pubDate>Mon, 26 Jun 2023 12:49:56 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Player はPySimpleGUIとpytho… ]]></title>
	<description><![CDATA[ 　LTC Player はPySimpleGUIとpython-vlcを勉強しながら書いてきたためにソースコードがゴチャゴチャ。<br />　この先もあるので、変数やインスタンスの名前も手直ししながら大整理をしました。時間がかかりましたが読みやすく手直しもし易くなりました。<br />　で、そんな整理をすると出てくる出てくる細かいバグ。<br />　先日、mp3再生中にポジションスライダーを動かすと警告が出て再生速度などがおかしくなることがありましたが、対策はplay()、stop()、pause()を実行した後にis_playing()が望みのフラグを返すまで待つというものです。コレが抜けてる所が数カ所。状況が整っていないのに次の指令が来ることが原因だったようで、再生速度が狂う現象は解消されました。mp3でスライダーを多用すると再生時間のズレが出るのは変わりませんが、wavなら期待通りの動きなのでいいかなと。<br /><br />　現在の画面。PlayListとNEXTはモックアップです。<br /><img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/20230621223221-admin.jpg" alt="20230621223221-admin.jpg"><br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔438文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=657</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=657</guid>
	<category>tegalog</category>
	<pubDate>Wed, 21 Jun 2023 15:53:22 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Player はPySimpleGUIの扱い方を探… ]]></title>
	<description><![CDATA[ 　LTC Player はPySimpleGUIの扱い方を探りながらです。Tkinterのラッパーらしいですが、簡単に使える反面制約が多いので、別な意味で難しいところがあります。<br />　主な制約はウェジット(オブジェクト)の並べ方によって挙動が違うことです。全てではないのですが「ナゼそうなる！？」に出会うことが少なくありません。昨日もExecl的な表示をするTable機能で出くわしてしまい数時間悩んでしまいました。下記の試作品では「Add Music」が今の位置では期待通りの挙動をしますが、表の左隣りでは期待通りに動きません。ウェジットを単独テストしてからレイアウトに入れ込めば期待に反する挙動が起きても並べ方が原因だろうと予想出来ます。<br />　問題点と言えば問題点ですが、クセといえばそれまでですし、TkinterやKivyに比べて簡単なことは余りある価値です。これで無理な製作は自分はやらないとすればいいでしょう。<br /><br />　画像は製作途中の物です。パラメータやレイアウトは今後変更していきますが、基本的な機能は実装出来ました。挙動を確認しながら進めていきます。<br />　一般的な音楽プレーヤーには無い機能を考えています。<br />　画面でわかりやすいのは「▼ NEXT ▼」です。プレイリストの順番で再生していくのは当然ですが、これにアサインしてからPLAYに行く前提です。曲順が入れ替わっても前の曲が再生している最中に呼び出せます。照明の卓っぽいですねwww。<br />　あとは、曲間というか次の曲への手順を決めます。曲間が自動停止か続くかはもちろん、次の曲へ渡すまでの秒数を決める様にします。表のNextの列にPauseとあるのは自動停止、秒数らしき数字があるのは曲続きの意味と待ち秒数です。<br /><img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/20230619113316-admin.jpg" alt="20230619113316-admin.jpg"><br />　VLCにも少し問題があります。<br />　スライダーで再生ポジションを表示し変更できる様にしてありますが、スライダーの動作によってはVLCがタイムスタンプのエラーを出します。圧縮が高いmp3の為かもしれませんが原因は不明です。<br />　止まりはしないのですが、エラー発生の後、テンポやピッチが狂うことがあります。ダンスイベントが主目的ですから本番でポジションスライダーを触ることは無いと思いますが、必要な時にテンポやピッチが狂うのは困ります。<br />　処理手順の変更でエラーを防止できないか調べることにします。<br /><br />追記<br />　ふとアイデアが出て、本業中なのに手を止めて修正www<br />　VLCのエラーは対策が出来たっぽい。<br />　かなり面倒な手順ですが、<br />０）ポジションスライダーのイベント確認<br />１）再生停止 stop()<br />２）ポジションスライダーの情報からポジション値を計算<br />３）再生開始 play()（タイム00&#58;00&#58;00.00からになります）<br />４）再生確定まで待つ<br />５）ポジション値をセット<br />６）操作が一時停止中ならpause()<br />　といった感じ。<br />　VLCをリセットし、改めて再生して位置を宣言する手順です。<br />　コマンドプロンプトにはエラー表示が出ず、テンポやピッチの狂いも起こっていないようです。<br /><br />追記の２<br />　mp3ファイルではポジションスライダーの行き来を繰り返すとタイムスタンプがズレることがあります。<br />　いやーな感じでしたが、wavファイル(非圧縮)だと起こりません。mp3の圧縮方法を知っていると納得出来ますし、wavファイルで問題が無いならいいかなと。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔1420文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=656</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=656</guid>
	<category>tegalog</category>
	<pubDate>Mon, 19 Jun 2023 11:29:02 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Player を試作ってみました。 ]]></title>
	<description><![CDATA[ 　LTC Player を試作ってみました。<br /><img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/20230618062945-admin.jpg" alt="20230618062945-admin.jpg"><br />　まだまだ途中ですが、ウィンドウの下半分はこんな感じかなと。音源ファイルを選択して再生出来ます。再生、停止などは当たり前ですが、スライダーで再生位置指示と音量を付けてあります。音量は音源に対するものでシステムの音量は変化しません。上半分にはプレイリストを表示する予定です。<br />　PySimpleGUIはレイアウトの制約が多いのですが、その範囲で並べればいいだけです。自由度を求めるならTkinterやKivyですが、これらはプログラミングが大変過ぎます。PySimpleGUIなら予習２日、製作数時間でここまで出来ました。<br />　ボタンがフォーカス(押してはいないけど選択された状態)されているとスペースキーで押されたことになるので、フォーカスをボタン類から外すか常にPLAYボタンがフォーカスされた状態にするにはどうするかが課題です。<br />　キー入力の取得も簡単でした。ウィンドウを表示コマンドにキーイベントを拾うスイッチを加えるだけです。キーボードで押された文字が戻り値に入ります。日本語入力状態には対策が必要です。<br /><br />追記<br />　ボタンのフォーカス問題ですが、ダミーボタンを置き、常にこれがフォーカスされる様にしました。<br />　イベントが発生してPySimpleGUI.Window.read()を抜けたらイの一・無条件にダミーボタンをフォーカスするのです。<br />　今はボタンしかレイアウトしていませんのでいいですが、強制フォーカスがダメな時には強制フォーカスの実行に条件を付けましょう。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔669文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=655</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=655</guid>
	<category>tegalog</category>
	<pubDate>Sun, 18 Jun 2023 06:29:45 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Player を作るのにPythonのGUIライブ… ]]></title>
	<description><![CDATA[ 　LTC Player を作るのにPythonのGUIライブラリを検討しています。<br />　Python標準のtkinterも良いと思うのですが少し物足りない感じ。<br />　マルチプラットホーム対応で無料の条件ですと kivy が良さそうです。出来ることが多すぎて難しそうですが、これは贅沢な悩みです。<br />　kivyはkv言語と呼ばれるコマンド群を使うことでスタイルシートの様な使い方が出来る様です。Tkinterよりも細かい画面作りが可能ということです。<br />　何が出来るのか、どこまで出来るのか、どうやったら使えるのかはこれからの勉強です。<br /><br />追記<br />　仕事の合間にkivyについて調べてみましたがとても難しい。これで出来ない表現は無いように思える程ですが、ここまで必要か疑問。正直、kivyの学習には時間がかかり過ぎます。<br />　別なGUIライブラリが無いかと調べたところ「PySimpleGUI」というのがありました。必要な表現が出来るかわかりませんが簡単です。コマンドで画面を描きますが、難易度はFileMakerProの画面描きと大差ない感じです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔477文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=654</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=654</guid>
	<category>tegalog</category>
	<pubDate>Fri, 16 Jun 2023 10:36:14 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　昨日書いたpython-vlcが別なPCでも再生出来るか、… ]]></title>
	<description><![CDATA[ 　昨日書いたpython-vlcが別なPCでも再生出来るか、mp3以外のフォーマットも再生出来るかチェックしました。<br />　もちろんVLCで再生する物は問題なく再生出来ますが、VLCのアプリで再生するよりも音の締まりと広がりが良いように聴こえる。。。<br />　何が違うんでしょう！？<br /><br />　音源再生アプリ(LTC Player)には一般的な音源プレーヤーにはあまり無い機能を付けます。<br />１）音源毎に音量設定<br />２）再生開始点、終了点の設定<br />３）曲の終わりで止めるか曲続きか。曲続きなら曲間秒数も設定。<br />４）処理が許せば、指定秒数からの F.I/O も実装。可能ならクロスフェードも実装。<br />　ダンスイベントですと音源の音量がマチマチですし、前後の無音(白身)がやたら長い物があったりするからです。<br />　通常は事前に音量と白身を調整して現場に臨むのですが、あったら便利かなと思う機能です。<br />　あとは、先日も書きましたが、raspberryPi pico を使ってプログラムマブルキーボードを作って外部スイッチにします。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔466文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=653</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=653</guid>
	<category>tegalog</category>
	<pubDate>Thu, 15 Jun 2023 11:45:17 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator は卓に繋いで２０時間以上正常に… ]]></title>
	<description><![CDATA[ 　LTC Generator は卓に繋いで２０時間以上正常に連続動作しています。PCとのやりとりの都合で手直しはありますが、基本的な機能はこれで完成とします。<br />　python-vlcでの音出しも方向性が見えましたので、あと必要な要素はPC上のソフトウェアです。<br />　Pythonのウィンドウマネージャーはtkinterが一番ベタな選択肢です。Python標準ですから安定性が期待出来ますし、WindowsでもMacOSでもLinuxでも同じソースで動きます。もっと書きやすくデザイン性に優れたウィンドウマネージャーもあるそうですが、何が違うのかよくわからないですし、基本過ぎるモノに慣れれば便利な物も使えるでしょうから、当面はtkinterを勉強してみます。つか、目に見えないところで動作するソフトウェアばかり書いてきたので画面作りは苦手です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔388文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=652</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=652</guid>
	<category>tegalog</category>
	<pubDate>Thu, 15 Jun 2023 10:12:57 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　DI-1MUSEはコンデンサを交換しました。時間経過と共に… ]]></title>
	<description><![CDATA[ 　DI-1MUSEはコンデンサを交換しました。時間経過と共に音に張りが無くなったためです。<br />　次のコンデンサにしたところ、いわゆるハイ上がりではなく、まろやかに高域が伸びる音に戻りました。数日エージングしていますが安定しています。<br />　C2 <a class="url" href="https&#58;//akizukidenshi.com/catalog/g/gP-08377/" target="_blank" title="https&#58;//akizukidenshi.com/catalog/g/gP-08377/">オーディオ用電解コンデンサー１０μＦ３５Ｖ８５℃　ニチコンＭＷ</a> <br />　C3 <a class="url" href="https&#58;//akizukidenshi.com/catalog/g/gP-08377/" target="_blank" title="https&#58;//akizukidenshi.com/catalog/g/gP-08377/">オーディオ用電解コンデンサー１０μＦ３５Ｖ８５℃　ニチコンＭＷ</a><br />　ただ、無改造品がエージングの効果なのかとても良い音になっています。DI-1独特の高域がモヤっとする感じが弱くなり、MUSEの方がスッキリしているものの、とてもキレイに伸びています。<br />　MUSE化することで特に生楽器やキーボードのピアノ音源には効果があると予想はしているものの、コストを考えたら無改造品を丁寧に長時間エージングするのがいいのかもしれません。<br />　そもそもが改造ありきの話ではありません。DI-1の欠点を改善するのが目的で改造は一つの選択肢ですから、別な手段が見えればそれはそれでいいと思います。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e9%9f%b3%e3%81%ae%e4%b8%96%e7%95%8c" class="taglink" title="音の世界">#音の世界</a> -- Posted by 電装工芸 〔450文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=651</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=651</guid>
	<category>tegalog</category>
	<pubDate>Thu, 15 Jun 2023 10:00:43 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　python-vlc で音源を流す試験をしました。 ]]></title>
	<description><![CDATA[ 　python-vlc で音源を流す試験をしました。<br />　単に再生するだけなら簡単。<br />　ちょっと難儀したのは再生終了を確定する処理。再生後自動的にリセットされませんので、再生が終了したことを確認して後処理をしないといけません。<br />　vlc.MediaPlayer.is_playing()は再生中かどうかを把握出来ますが、これだけでは再生が終了したフェーズかわかりません。オレフラグ(下記ではis_playing)を併用して再生前か再生後かを判別します。再生後ならstop()を実行します。きちんとstop()しないともう一度再生が出来ないpython-vlc。<br />　下記は再生終了を確定する試験として繰り返し再生するモノです。<br /><br /><small class="decorationS"><span class="decorationF deco-code"># -*- coding&#58; utf-8 -*-<br /><br />import time<br />import vlc<br /><br />def play() &#58;<br />　# 音声ファイルを定義<br />　play_music = ( &#91; vlc.MediaPlayer() &#93; )<br />　try &#58;<br />　　play_music&#91;0&#93;.set_mrl( &apos;C&#58;/音源.mp3&apos; )<br />　except &#58;<br />　　return -1<br />　# 再生ボリューム設定<br />　play_music&#91;0&#93;.audio_set_volume( 60 )<br />　# フラグ定義<br />　is_playing = 0　　# 再生実行済みフラグ<br /><br />　# Main Loop<br />　while True &#58;<br />　　try &#58;<br />　　　# 予備睡眠<br />　　　time.sleep( 0.0001 )　　# Ctl-Cの反応を良くするのに少しsleepを入れるといい<br />　　　# 停止中<br />　　　if( play_music&#91;0&#93;.is_playing() == 0 ) &#58;<br />　　　　# 未開始で停止中<br />　　　　if( is_playing == 0 ) &#58;<br />　　　　　play_music&#91;0&#93;.play()<br />　　　　　while ( play_music&#91;0&#93;.is_playing() == 0 ) &#58;　# 再生状態が確定するまで待つ<br />　　　　　　time.sleep( 0.001 )<br />　　　　　play_music&#91;0&#93;.set_time( 0 )<br />　　　　　is_playing = 1<br />　　　　# 再生終了で停止中<br />　　　　else &#58;　　　# if( is_playing == 1 ) &#58;<br />　　　　　play_music&#91;0&#93;.stop()　　# 再生終了を宣言してインスタンスをリセットする 主にこれをやりたいがための処理<br />　　　　　is_playing = 0<br />　　　# 再生中<br />　　　else &#58;<br />　　　　pass　　　# 再生中に行う処理は書いていないのでとりあえずpass<br /><br />　　# Ctl-Cで終了<br />　　except KeyboardInterrupt &#58;<br />　　　play_music&#91;0&#93;.stop()<br />　　　break<br />　return 0<br /><br />if __name__ == &quot;__main__&quot; &#58;<br />　play()<br /><br /></span></small><br /><br />　python-vlc便利過ぎ。<br /><br />追記<br />　vlc.MediaPlayer.get_length()とvlc.MediaPlayer.get_time()を使って再生が最後まで行ったかチェックしました。<br />　何曲か試しましたが、概ねlengthの-0.1～-0.2秒で終了しています。vlc.MediaPlayer.get_time()は取得単位の1msecで厳密にカウントされているモノでも無さそうなので表示上の誤差かもしれません。トラック別で音繋がり場合は少し不安がありますが、音のお尻には1-2秒の余白があるのが一般的ですし、そこまで突き詰めるシステムではありませんのでいいかなと。<br />　画面作りをやって LTC Generator と合わせれば完成が見えてきそうです。<br />　ウィンドウマネージャーはPython標準のtkinterを使う勉強をしています。書式は違いますが、考え方はHTMLとCSSを使ったweb画面作りに酷似していますので、方言的に翻訳が出来れば何とかなりそうです。ただ、ボタン操作や画面の更新をオブジェクト指向のイベント処理(割り込み)で書くので少し面倒ですし、LTC Generator の制御やvlcの部分はバックグラウンドの常駐処理にしたいのでウィンドウ制御とは別スレッドとなり手間がかかるかも。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔1857文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=650</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=650</guid>
	<category>tegalog</category>
	<pubDate>Wed, 14 Jun 2023 22:01:04 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　オレメモ ]]></title>
	<description><![CDATA[ 　オレメモ<br /><br />　PythonでVLCを使った音楽再生方法を再整理。<br /><br />　Windows11x64<br />　Python3.7<br />　VLC media player ver.3.0.18<br /><br />　pipでpython-vlcをインストール。<br /><small class="decorationS"><span class="decorationF deco-code">コマンドプロンプト(管理者権限にて)<br />&gt; pip3 install python-vlc</span></small><br />　pipとはPythonのライブラリを提供してくれるリポジトリのこと。先達に感謝。<br /><br />　pythonでvlcによる再生。<br /><small class="decorationS"><span class="decorationF deco-code">import vlc<br /><br />if __name__ == &apos;__main__&apos;&#58;<br />　p = vlc.MediaPlayer()　　 ＃vlc.MediaPlayerのインスタンスを作成<br />　p.set_mrl(&apos;sound.mp3&apos;)　　＃インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨<br />　p.play()　　　　　　　　　＃再生開始<br /></span></small><br />　これだけで音声ファイルが再生されます。<br /><br />　以下基本的なAPI。<br /><small class="decorationS"><span class="decorationF deco-code">p = vlc.MediaPlayer()　　 　　　　＃vlc.MediaPlayerのインスタンスを作成<br />p.set_mrl(&apos;&lt;file_name&gt;&apos;)　　　　　＃インスタンスに音源ファイルを関連付け 相対パスも可能らしいがフルパス指定を推奨 ファイルはVLC media player で扱える物なら何でも。<br />p.play()　　　　　　　　　　　　　＃再生開始　戻り値 0=正常再生/-1=再生出来ない　※ pauseされていれば再生再開<br />p.is_playing()　　　　　　　　　　＃再生中か　戻り値 0=再生していない/1=再生中<br />p.pause()　　　　　　　 　　　　　＃再生中なら一時停止、一時停止中なら再生再開　戻り値無し<br />p.get_length()　　　　　　　　　　＃音源の長さを取得　戻り値 秒数(msec.)<br />p.get_time()　　　　　　　　　　　＃音源の最初からの再生位置を取得　戻り値 秒数(msec.)<br />p.set_time(&lt;msec.&gt;)　　　 　　　　＃再生再開位置を秒数(msec.)で指定　戻り値無し　※ 再生中やpause()中でないと指定出来ない<br />p.audio_set_volume(&lt;パーセント&gt;)　＃0=mute,100=0dB（パーセント指示だと思っていいみたい。100以上も指定可能。）戻り値 0=再生中に設定成功/-1=設定はしたが再生はしていない<br />p.stop()　　　　　　　　　　　　　＃停止　戻り値無し 次回のplay()では最初から始まる<br />※ 最後まで再生しきっても、stop()をしないと次回のplay()はスタートしない。再生終了で必ずstop()を実行する。<br />※ 停止中は次の再生開始秒数を指定出来ないので、特定の秒数(msec.)から再生する場合は、play()に続いてset_time(&lt;msec.&gt;)を実行する。ただし、pause()中は指定可能。<br />p.play()<br />p.set_time(&lt;msec.&gt;)</span></small><br /><br />　複数の音源ファイルをプレイリストとして扱ってくれるクラスもあるのですが、LTCを作るには少し不便がありそうなため、１曲単位で扱うことにしています。<br /><br />　vlc.MediaPlayer()のリストを作成する。<br /><small class="decorationS"><span class="decorationF deco-code">p = ( &#91;vlc.MediaPlayer(), vlc.MediaPlayer(), vlc.MediaPlayer()&#93; )<br />＃ p&#91;0&#93;、p&#91;1&#93;、p&#91;2&#93; などと使える。</span></small><br />　普通にオフジェクトのリストとして扱える。<br /><br />　これだけはメモ。<br />　リストのオブジェクトを追加する。<br /><small class="decorationS"><span class="decorationF deco-code">p.append( vlc.MediaPlayer() )<br />＃ 上記に続いた場合は p&#91;3&#93; が追加される</span></small><br /><br />　再生操作のレスポンスはとても良く、タイムラグはほとんど感じない。<br />　ただ、プレイリスト分のインスタンスを設定するにはメモリに注意かもしれない。<br /><br />参考<br />　<a class="url" href="http&#58;//www.olivieraubert.net/vlc/python-ctypes/doc/" target="_blank" title="http&#58;//www.olivieraubert.net/vlc/python-ctypes/doc/">python-vlcのドキュメント</a><br />　ここの「vlc.MediaPlayer」を参照。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔1723文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=649</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=649</guid>
	<category>tegalog</category>
	<pubDate>Wed, 14 Jun 2023 13:01:24 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator のLTC信号を卓(MA dot… ]]></title>
	<description><![CDATA[ 　LTC Generator のLTC信号を卓(MA dot2)が認識しました。<br />　ただ、同じ値を送り続けても認識しません。LTCを入力してから認識するまで１秒弱かかるので、カウントを進めずに信号を認識し続ける方法が欲しいのです。<br />　試しに数フレームの繰り返しを組んでみたところ認識し、数フレームの繰り返しを一定回数行ってから抜ける様にしたところ期待する結果を得ました。<br />　最初のCUEポイントのマイナス数フレームの位置で2-3フレームの繰り返し待機をし、トリガが立ったらそれを抜ける考え方で良さそうです。<br />　ともかく、卓が認識したので一安心です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔283文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=648</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=648</guid>
	<category>tegalog</category>
	<pubDate>Wed, 14 Jun 2023 11:24:09 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator は30fpsも他のfpsと同様… ]]></title>
	<description><![CDATA[ 　LTC Generator は30fpsも他のfpsと同様の誤差でした。時間の勘定に期待値が出たので PIC のファームウェアは一応の完成とします。あとは、卓が認識するかです。<br />　今後はPC側のアプリケーションの製作です。Pythonベースでvlcライブラリを使い、LTCとVLCは同時スタートの疑似シンクです。VLCの現在時からLTCを生成することは難しいからです。途中スタートではLTCの現在時からVLCの開始時を補正して合わせる様にします。<br />　音声ファイルはプレイリストとしてまとめ、スタートタイム、エンドタイム、ボリューム、連続再生、曲間時間などを個別に設定出来る様にします。複数の音声ファイルを並列で再生する用途は想定しませんので、１トラックのわかりやすいモノを目指します。もちろん、LTCのタイムが被らない様にチェックする機能も大切です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔385文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=647</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=647</guid>
	<category>tegalog</category>
	<pubDate>Wed, 14 Jun 2023 07:01:55 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　RaspberryPi pico はとても面白いマイコンで… ]]></title>
	<description><![CDATA[ 　RaspberryPi pico はとても面白いマイコンです。少なくとも私好みです。RaspberryPi のブランドですが、RaspberryPi の廉価版、簡易版ではなく、Arduino の親戚と思った方が自然な存在感です。想定される用途、ソースコードを書いてから実行に至るまでの流れが Arduino のそれととても似ています。<br />　純正の開発・実行環境は MicroPython と呼ばれるシステムですが、MicroPython からの派生品である CircuitPython を使うことで自由度が更に広がるようです。MicroPython がスタンドアロンでの実装を主眼としているなら、CircuitPython はPCなどの周辺機器を作ることを強く意識しているように思います。MicroPython、CircuitPython のどちらもとても良く整備された開発・実行環境だと思いますが、CircuitPythonの方が私の趣向に合っている気がします。実際、CircuitPython の存在を知って pico に興味を持ったのは事実です。<br />　pico のプロセッサはarm系32bit133MHzです。Arduinoは、高速化高機能化が進んではいますが、基本はAVR系8bitマイコンです。処理能力は pico に格段の優位性があります。その余裕を使って Python を動かしているとも言えますが、C/C++の開発環境を使えば攻めた造りも出来そうな気がします。また、pico は ArduinoIDE と呼ばれる Arduino の開発環境でもコーディング出来るので、Arduino に親しんだ方がシームレスに使えるメリットもあります。ArduinoIDE を用いてこれらのデバイスの開発環境を一本化するのもアリですね。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%50%69" class="taglink" title="RaspberryPi">#RaspberryPi</a> -- Posted by 電装工芸 〔782文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=646</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=646</guid>
	<category>tegalog</category>
	<pubDate>Tue, 13 Jun 2023 18:47:58 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator は24fpsも他のfpsと同様… ]]></title>
	<description><![CDATA[ 　LTC Generator は24fpsも他のfpsと同様の誤差に収まりました。現在稼働中の30fpsも確認出来れば LTC Generator はヒト段落です。<br />　本業もそこそこ忙しくなってきたので工作に使える時間は限られますが、LTC Player まで出来るだけ早く到達したいところです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%49%43" class="taglink" title="PIC">#PIC</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔162文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=645</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=645</guid>
	<category>tegalog</category>
	<pubDate>Tue, 13 Jun 2023 18:31:08 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator は29.97fpsも25fps… ]]></title>
	<description><![CDATA[ 　LTC Generator は29.97fpsも25fpsと同等の誤差でした。30fpsと24fpsも同等に収まればPICのファームウェアは完成とします。<br />　比較に使っている時計はカタログスペックで月差±15秒。１日あたり0.5秒の誤差とみなせます。基準にするには十分でしょう。<br />　「卓がLTCとして認識するか」を早々に確認したいですね。これが一番重要です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔189文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=643</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=643</guid>
	<category>tegalog</category>
	<pubDate>Tue, 13 Jun 2023 11:45:05 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator のタイマーを修正してみました。 ]]></title>
	<description><![CDATA[ 　LTC Generator のタイマーを修正してみました。<br />　８時間経過で約１秒ズレていますが、以前より良くなっていますし、SMPTEが求める精度には十分収まっています。何よりも比較に使っている時計の精度がどこまでなのかわかりませんからこんなもんでしょう。<br />　PICに与えている水晶発振子の精度は30ppmですから(ppmは100万分の１を表す単位なので比率だと0.00003)、１日(86,400秒)あたり±2.592秒の誤差がありえます。実測値は想定される誤差相当なのでソフトウェアは間違ってなさそうです。<br />　現在値以上を求めるなら、ソフトウェアの修正ではなく個体差に対する補正となりそうですし、もっと精度の高い発振子を使うべき話です。<br />　補正計算が無い25fpsでテストしていますが、補正計算が入る他のfpsも同等に収まればいいでしょう。<br /><br />　秋月電子通商さんで手に入る高精度な発振子は最高で1ppmです。高精度に越したことはありませんが、ここまで必要か、これで十分か、30ppmに比べてメリットがあるかは別問題です。<br />　求めているのは数分間の音楽の時間座標を表す信号です。卓がエラーを出さない条件を満たし、目視でズレを感じない繰り返し精度があればいいのです。高精度の時計や放送用の基準を作っているワケではありませんから、無制限に高精度を求めても意味がありません。十分に使えて低価格も大切な精度です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%49%43" class="taglink" title="PIC">#PIC</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔618文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=642</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=642</guid>
	<category>tegalog</category>
	<pubDate>Mon, 12 Jun 2023 07:41:47 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Player には外付けスイッチが欲しい。 ]]></title>
	<description><![CDATA[ 　LTC Player には外付けスイッチが欲しい。<br />　RaspberryPipicoはUSBキーボードやマウスを簡単に作れるとのこと。<br />　てことは、picoでキーボードシステムを構築しといてもいい。USBのHIDはもちろん、UART、I2Cなども使える様にしとけば便利だと思われる。チャタリングを含めたセンシングのマトリクスと通信まで作っておくのです。<br />　picoについて調べてみましょう。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%50%69" class="taglink" title="RaspberryPi">#RaspberryPi</a> -- Posted by 電装工芸 〔210文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=641</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=641</guid>
	<category>tegalog</category>
	<pubDate>Sun, 11 Jun 2023 13:07:01 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator は24時間カウントの関数をPy… ]]></title>
	<description><![CDATA[ 　LTC Generator は24時間カウントの関数をPythonで書いてみました。限りなく本チャンに近いモノです。<br />　期待通りの動作をします。卓への接続テストはまだですが、オシロスコープには波形が出ます。<br />　ただ、24時間で約40秒の遅れが出ます。１時間あたり約1.7秒ですから無視出来ません。<br />　時間のクリックカウントはPICで行っていますが、TMR1のコンペア値が１個多いと仮定すると辻褄が合います。そういえば、TMR2でコンペアと同様の機構と思われるPWMを作る場合は折り返しで１カウント余計にかかるハズ。データシートには記載が見受けられなかったけど、TMR1のコンペアモードでも同様なのかもしれません。<br />　コンペアの定数値を変更して改めてテストしましょう。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%49%43" class="taglink" title="PIC">#PIC</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔348文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=640</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=640</guid>
	<category>tegalog</category>
	<pubDate>Sun, 11 Jun 2023 08:43:26 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　オレメモ ]]></title>
	<description><![CDATA[ 　オレメモ<br /><br />　windows10(11)でDHCPサーバーからIPアドレスを取り直す。<br /><small class="decorationS"><span class="decorationF deco-code">コマンドプロンプト(管理者権限)<br />&gt; ipconfig /release<br />&gt; ipconfig /renew</span></small><br /><br />　２回くらいやった方がいい。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3" class="taglink" title="パソコン">#パソコン</a> -- Posted by 電装工芸 〔122文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=639</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=639</guid>
	<category>tegalog</category>
	<pubDate>Thu, 08 Jun 2023 11:42:10 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　今後のこともあり、移動時間にPICのI2Cを勉強し直してみ… ]]></title>
	<description><![CDATA[ 　今後のこともあり、移動時間にPICのI2Cを勉強し直してみました。<br />　これまではイマイチ理解出来なかったのですが、ボチボチ使い方がわかってきました。わからなかったのはハードウェアとソフトウェアの棲み分けとソフトウェアの手順です。<br />　I2Cの規格を頑張って説明するのはありがたいのですが、一番知りたいソフトウェアの手順がボンヤリした文書ばかり。ちょっと複雑な手順を踏むので突っ込んだ理解が望ましいのはわかるのですが、その説明で力尽きしまうのか、どとのつまりどうすればいいの？に応えてくれる資料が少ないように思います。特に、I2Cの特徴的な要素である「ACK」を扱うのがハードウェアなのかソフトウェアなのかが見えないのです。<br />　正直、Pythonなどではライブラリを使うだけで済んでしまいますので、いくらPICマイコンでもそこまでローレベルの機構まで理解しないといけないのか不思議です。<br /><br />　わかったことは、設定さえしてしまえばソフトウェアの手順はUARTと大差ないことです。<br />　マスタが送信する場合はスレーブアドレスを先頭にしたバイトリストをハードウェアモジュールに渡す(PICではバイト単位で渡す)。<br />　マスタが受信する場合はスレーブアドレスを送り、返信されたバイトデータを取り込んだら取り込み済みのフラグを立てる。<br />　スレーブは、自分のアドレスを設定しておけば自分向けの通信かハードウェアが判断してくれるので、マスターの要望に従って受信値を取り込むか返信値を投げる。<br />　データの終りのストップコンディションは、マスター/スレーブ・送信/受信の立ち位置で違うけどフラグを立てるだけ。<br />　波形をコマンド操作で作るワケじゃありませんし、前後関係で調整することもありません。規格はザックリ概要がわかっていれば十分なのに、ソフトウェアの手順の説明がボンヤリしているのはイマイチ理解不能なワケです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%49%43" class="taglink" title="PIC">#PIC</a> -- Posted by 電装工芸 〔801文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=638</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=638</guid>
	<category>tegalog</category>
	<pubDate>Wed, 07 Jun 2023 17:43:22 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LTC Generator は入荷した修正基板を用いてプリ… ]]></title>
	<description><![CDATA[ 　LTC Generator は入荷した修正基板を用いてプリアンプが完成。+4dB(1.23Vp-p)の波形を出しています。<br />　まだPythonプロンプトのレベルですが、シリアルでデータを送ると波形が変化します。Pythonからデータを送る場合、バイト毎ではなく、配列にバイナリを格納してpyserialに渡すのが良さそうです。<br />　タイミングが正しいかは確認出来ませんが、PICからの送信要求も受信出来ています。これを受けてデータを送る段取りです。<br /><br />　本業が詰まっていますのであまり長い時間は出来ませんが、１日0.5課題くらいの気持ちで少しずつ行きましょう。<br /><br />　明晩は仮のLTCデータを送出するPythonプログラムを書いてみます。<br />　あらかじめ2-3秒分の配列データを作っておいて送信要求があれば１フレーム分送出する物ですが、卓に接続してLTCがカウントされれば最大の山場を越えます。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%49%43" class="taglink" title="PIC">#PIC</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔409文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=637</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=637</guid>
	<category>tegalog</category>
	<pubDate>Wed, 07 Jun 2023 01:17:13 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　DI-1MUSEはコンデンサを替えて24時間経過。 ]]></title>
	<description><![CDATA[ 　DI-1MUSEはコンデンサを替えて24時間経過。<br />　音が鈍ったというか、明瞭感が弱くなっています。コンデンサを替える前と大差ない印象。<br />　先行して替えたコンデンサでも24時間経過で一度鈍くなり48時間経過で戻る現象がありました。コンデンサのエージングはそういうものなのかもしれませんが気分は萎えます。<br /><br />追記<br />　確実ではないのですが、ピンクノイズを当てた直後は音が鈍るものの、通常の音源を数時間当てると音が戻るようです。通常の音源を３時間くらい当てて再チェックしたところ、昨日のイイ感じに戻っていました。<br />　この話だけですとピンクノイズは余計なことに感じますが、ピンクノイズを当てて通常音源を当てると明瞭なだけでなくまろやかさも加わりますので、エージングには良いように思います。<br />　音源100時間、ピンクノイズ100時間、音源100時間の設定で続けています。現在ピンクノイズ30時間。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e9%9f%b3%e3%81%ae%e4%b8%96%e7%95%8c" class="taglink" title="音の世界">#音の世界</a> -- Posted by 電装工芸 〔401文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=636</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=636</guid>
	<category>tegalog</category>
	<pubDate>Tue, 06 Jun 2023 13:20:11 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　今後はLTCをMTCに変換する方法も考えましょう。 ]]></title>
	<description><![CDATA[ 　今後はLTCをMTCに変換する方法も考えましょう。<br />　LTCをバイトデータとして受信し、MTCのパケットに書き直して31,250bpsのUARTで送出すればMTCになります。<br /><br />　オレメモです。　<br /><br />　PICには「変化割込み」と呼ばれるI/Oピンの入力が変化すると割込みが発生する機能があります。これとタイマーを組み合わせれば波長の計測が可能です。<br />　PICのクロックを32MHzにした場合、LTCの波長は命令ステップ(Fosc/4)換算でビットが１なら1,666から2,083、０なら倍の3,332から4,166です。誤差10%としても１の最大値(2,291)と０の最小値(3,029)は被りませんしグレーゾーンも広いので、波長の判別はfpsの種類に関係なく可能です。<del class="decorationD">fpsやフォーマットの種類はLTCのデータに書かれているので計測した波長から判断する必要はありません。</del><br />　差動バイフェーズのビットは短い波長が２つ続けば１、長い波長が１つで０です。ビットデータが取れたら80bitのシフトレジスタに入れていきます。短い波長は必ず２回続きますから、長い波長の直前の短い波長が奇数回ならエラーとして仕切り直しです。80bitのシフトレジスタの末尾16bitにシンクワードが認められれば正常なLTCパケットが取得できたことになります。<br />　LTCパケットが取得出来ればMTCパケットを作り、入力されたLTCに基づいたタイミングで31,250bpsに設定したPICのUARTから送出します。後は電気的にMIDIにすればMTCです。<br />　必ず３フレーム遅れますが、欲しいのは絶対値ではなく相対値ですからいいかなと。<br /><br />　プログラムが求めるメモリサイズ次第ですが、8pinの12F1822で作る予定です。<br /><br />追記<br />　LTCにはfpsフォーマットを記載する領域はありません。訂正します。NDF/DFは記載されます。<br />　fpsフォーマットをデータに記載するのはMTCです。<br />　ですので、LTCの場合は波長からfpsフォーマットを推測します。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%49%43" class="taglink" title="PIC">#PIC</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%bf%e3%82%a4%e3%83%a0%e3%82%b3%e3%83%bc%e3%83%89" class="taglink" title="タイムコード">#タイムコード</a> -- Posted by 電装工芸 〔876文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=635</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=635</guid>
	<category>tegalog</category>
	<pubDate>Tue, 06 Jun 2023 12:10:53 +0900</pubDate>
</item>

	<!-- END ENTRIES -->
</channel>
</rss>

