2023年9月 この範囲を時系列順で読む この範囲をファイルに出力する
pyinstaller でexeファイルを作ってみましたが環境によって微妙な不具合が出ます。原因は不明ですが、pyinstaller の操作手順かもしれません。
「PyinstallerでPythonプログラムをexe化する手順書(Windows編)」
上記を参考に作った exeファイルは自分の環境では問題なく動いたのですが、ここに一工夫加えてみようと思います。
仮想環境での実行が推奨されていますが、pyinstaller 自体も仮想環境にインストールするべきなのかもしれません。別の先達情報にはその様に書かれている物があります。
「PyInstallerを使ってみた」
追記
作業手順のオレメモ。
仮想環境に pyinstaller を入れての実行の方が良いようです。
作業ディレクトリに移動
> cd <作業ディレクトリ>
pipenv をインストール
> pip install pipenv
pipenv で使う python のバージョンを指定
> pipenv --python 3.9
pipenv(仮想環境)を開始
> pipenv shell
仮想環境にpyinstaller をインストール
> pipenv install -d pyinstaller
必要なライブラリをインストール
> pipenv install pyserial
> pipenv install PySimpleGUI
> pipenv install python-vlc
・・・etc
ビルドする
> pyinstaller ltcplayer.py --clean --noconcole --onefile
・・・数分で終わる。
作業ディレクトリ内の distフォルダ内 に ltcplayer.exe が出来ている。
終了なら仮想環境のshellから抜ける
> exit
仮想環境を削除
> pipenv --rm
作業ディレクトリは Python のソースコードがある階層でもいいのだけれど、
ゴチャゴチャするので私は一つ下の階層で作業をしています。
ソースコードがある階層で
> mkdir env
> cd env
> pyinstaller ..\ltcplayer.py --clean --noconcole --onefile
相対パスでソースコードを一つ上の階層として呼びます。
お好みですけど。
#Python #タイムコード
「PyinstallerでPythonプログラムをexe化する手順書(Windows編)」
上記を参考に作った exeファイルは自分の環境では問題なく動いたのですが、ここに一工夫加えてみようと思います。
仮想環境での実行が推奨されていますが、pyinstaller 自体も仮想環境にインストールするべきなのかもしれません。別の先達情報にはその様に書かれている物があります。
「PyInstallerを使ってみた」
追記
作業手順のオレメモ。
仮想環境に pyinstaller を入れての実行の方が良いようです。
作業ディレクトリに移動
> cd <作業ディレクトリ>
pipenv をインストール
> pip install pipenv
pipenv で使う python のバージョンを指定
> pipenv --python 3.9
pipenv(仮想環境)を開始
> pipenv shell
仮想環境にpyinstaller をインストール
> pipenv install -d pyinstaller
必要なライブラリをインストール
> pipenv install pyserial
> pipenv install PySimpleGUI
> pipenv install python-vlc
・・・etc
ビルドする
> pyinstaller ltcplayer.py --clean --noconcole --onefile
・・・数分で終わる。
作業ディレクトリ内の distフォルダ内 に ltcplayer.exe が出来ている。
終了なら仮想環境のshellから抜ける
> exit
仮想環境を削除
> pipenv --rm
作業ディレクトリは Python のソースコードがある階層でもいいのだけれど、
ゴチャゴチャするので私は一つ下の階層で作業をしています。
ソースコードがある階層で
> mkdir env
> cd env
> pyinstaller ..\ltcplayer.py --clean --noconcole --onefile
相対パスでソースコードを一つ上の階層として呼びます。
お好みですけど。
#Python #タイムコード
2023年8月 この範囲を時系列順で読む この範囲をファイルに出力する
今「人工石油」が注目されています。
簡単に安く短時間で灯油や軽油とほぼ同質の油を作る技術です。
この映像の3'40"くらいから細かい説明がありますが、これは面白い製造方法です。
結合が強い二酸化炭素を分解するって発想がまず凄い。
#雑談
簡単に安く短時間で灯油や軽油とほぼ同質の油を作る技術です。
この映像の3'40"くらいから細かい説明がありますが、これは面白い製造方法です。
結合が強い二酸化炭素を分解するって発想がまず凄い。
#雑談
Python でファイル保存するには次の方法がお手軽みたい。
「pythonでlistをファイルに保存し、読み込む方法(numpyも同様!)」
上記内の「pickleを使用する方法(おすすめ!)」です。
ここでは list を保存する方法として書かれていますが tuple でもOK。もちろん、list や dict を含む異なる型をテキトウに突っ込んだ tuple でもOK。Python で一つの変数として扱える状態にしてから pickle.dump でファイルに入れれば何でもいいみたい。読出しは load すれば pickle.dump する直前の状態で変数に格納されます。変数のまんま保存し変数のまんま読み出せるイメージです。
やりたいことは list 型のセットリストと諸々のステータスの保存/読出しです。これらを tuple にまとめれば一括で扱えるみたいです。
ファイル保存は手続きが面倒ってイメージがありましたが、これは楽チンです。
追加オレメモ。
「Pythonでファイル、ディレクトリ(フォルダ)の存在確認」
「Pythonでディレクトリ(フォルダ)を作成するmkdir, makedirs」
「Python ファイルのコピーと移動」
こういった基本的なことが凄く簡単なのは Python のすばらしさ。
この様な操作を整理しているのは、データを他のパソコンに持って行く前提で、音源ファイルをセットリストファイルと同じフォルダに置きたいからです。
pyinstaller を使って実行ファイル化(.exe化)してみました。この状態にすると Python をインストールしていないパソコンでも動きます。操作は簡単ですし中身を隠せていいかも。
モノは試しにアップしてみました。Windows11の64bitでしか試していませんが、64bitならWindows10でも動くと思われます。
LtcPlayer
セットリストの保存機能が未実装のβ版です。モノ好き大好き自己責任でお楽しみください。
LTC の出力には専用インターフェースが必要です。これが無ければ単なる音楽プレーヤーです。
専用インターフェースのことを LTC Generator と呼んでいますが販売するかは検討中です。ノンクレーム返品可で少数販売でしょうか?手作りなので数を作れませんしサポートしきれませんし。
#タイムコード #Python
「pythonでlistをファイルに保存し、読み込む方法(numpyも同様!)」
上記内の「pickleを使用する方法(おすすめ!)」です。
ここでは list を保存する方法として書かれていますが tuple でもOK。もちろん、list や dict を含む異なる型をテキトウに突っ込んだ tuple でもOK。Python で一つの変数として扱える状態にしてから pickle.dump でファイルに入れれば何でもいいみたい。読出しは load すれば pickle.dump する直前の状態で変数に格納されます。変数のまんま保存し変数のまんま読み出せるイメージです。
やりたいことは list 型のセットリストと諸々のステータスの保存/読出しです。これらを tuple にまとめれば一括で扱えるみたいです。
ファイル保存は手続きが面倒ってイメージがありましたが、これは楽チンです。
追加オレメモ。
「Pythonでファイル、ディレクトリ(フォルダ)の存在確認」
「Pythonでディレクトリ(フォルダ)を作成するmkdir, makedirs」
「Python ファイルのコピーと移動」
こういった基本的なことが凄く簡単なのは Python のすばらしさ。
この様な操作を整理しているのは、データを他のパソコンに持って行く前提で、音源ファイルをセットリストファイルと同じフォルダに置きたいからです。
pyinstaller を使って実行ファイル化(.exe化)してみました。この状態にすると Python をインストールしていないパソコンでも動きます。操作は簡単ですし中身を隠せていいかも。
モノは試しにアップしてみました。Windows11の64bitでしか試していませんが、64bitならWindows10でも動くと思われます。
LtcPlayer
セットリストの保存機能が未実装のβ版です。モノ好き大好き自己責任でお楽しみください。
LTC の出力には専用インターフェースが必要です。これが無ければ単なる音楽プレーヤーです。
専用インターフェースのことを LTC Generator と呼んでいますが販売するかは検討中です。ノンクレーム返品可で少数販売でしょうか?手作りなので数を作れませんしサポートしきれませんし。
#タイムコード #Python
DMX Delay を発見!(知人に教えてもらいました)
DMXdelayer (alpha version)
同じことに取り組んでいる方がいらっしゃることが何より嬉しいです。
#Art-Net
DMXdelayer (alpha version)
同じことに取り組んでいる方がいらっしゃることが何より嬉しいです。
#Art-Net
今回の LTC Player と LTC Generator のパソコン側のシステムは全て Python で書いています。
その過程でオブジェクト指向を世に出した先達の気持ちを垣間見ることができたワケですが、そうなるとC言語でやってきたこともC++にしてみたくなる。時間と脳味噌に空きが無くて1年近く止まっている Art-Net の パッチマシン も完成させたい気持ちがあるのですが、C++で書いたらスマートに書けそうな気がしてきています。
C++と言っても ANSI の C言語にオブジェクト指向を追加して書きやすくしたモノとしか思えませんし、実際、ANSI の C言語の記述やライブラリが混在しても大半が動きます。記述の違いは少なくありませんが、標準語に対する津軽弁や鹿児島弁の違いより容易いと思われます。
ただ、Art-Netパッチはデータベースや財務系の処理をするとの近い気がしますので、SQL や COBOL を勉強しておくと参考になりそうな気もします。これらは群のデータを扱うことに特化していますからね。C言語で SQL を扱うのは敷居が高そうですし、この時代 COBOL の情報を探すのは無理がありそうですから、Python で SQL を扱う勉強を少ししようと思います。
#C言語
その過程でオブジェクト指向を世に出した先達の気持ちを垣間見ることができたワケですが、そうなるとC言語でやってきたこともC++にしてみたくなる。時間と脳味噌に空きが無くて1年近く止まっている Art-Net の パッチマシン も完成させたい気持ちがあるのですが、C++で書いたらスマートに書けそうな気がしてきています。
C++と言っても ANSI の C言語にオブジェクト指向を追加して書きやすくしたモノとしか思えませんし、実際、ANSI の C言語の記述やライブラリが混在しても大半が動きます。記述の違いは少なくありませんが、標準語に対する津軽弁や鹿児島弁の違いより容易いと思われます。
ただ、Art-Netパッチはデータベースや財務系の処理をするとの近い気がしますので、SQL や COBOL を勉強しておくと参考になりそうな気もします。これらは群のデータを扱うことに特化していますからね。C言語で SQL を扱うのは敷居が高そうですし、この時代 COBOL の情報を探すのは無理がありそうですから、Python で SQL を扱う勉強を少ししようと思います。
#C言語
とある中堅企業さんの労働組合さんの納涼祭でした。お盆もとうに過ぎているのに納涼祭?とか思ったりしますが、中堅の工場はお盆前後が忙しいので時期をずらすのはアリアリでしょう。勤務日数が少ない8月を乗り切ったぞー!ってヤツも含まれていそうです。
そんな現場でしたが、MAdot2 を使ったので LTC Player のランニングテストも同時に実施。本番でこんなことをするのは不謹慎ちゃ不謹慎ですが、LTC が途切れることなく受信されるかを確認するには丁度よい。普段なら卓をずっと眺めていることは難しいですが、目の前の卓を操作するのが仕事なら無理はありません。LTC で卓を動かすのでははく長時間の認識のテストですから時計を表示するのと同じ。LTC のデータが間違っていたり途切れたりして卓が止まることはまずありません。なんでかんで MA の製品ですから。
8時間ほど実施しましたが問題は発生セズ。バグではなく設計(デザイン)のミスを見つけたので今後対策しますが、音源に沿った LTC で止まることなく卓がカウントを刻むのは気持ちがイイ。
プレイリストの保存機能も構成しなければなりませんし、修正もまだまだありますが、間違いなく β版 に昇格しています。この達成感と安堵感は暑さという調味料以上にビールを美味しくしてくれています。オタク冥利とはこのことでしょうか。
#タイムコード #Python
そんな現場でしたが、MAdot2 を使ったので LTC Player のランニングテストも同時に実施。本番でこんなことをするのは不謹慎ちゃ不謹慎ですが、LTC が途切れることなく受信されるかを確認するには丁度よい。普段なら卓をずっと眺めていることは難しいですが、目の前の卓を操作するのが仕事なら無理はありません。LTC で卓を動かすのでははく長時間の認識のテストですから時計を表示するのと同じ。LTC のデータが間違っていたり途切れたりして卓が止まることはまずありません。なんでかんで MA の製品ですから。
8時間ほど実施しましたが問題は発生セズ。バグではなく設計(デザイン)のミスを見つけたので今後対策しますが、音源に沿った LTC で止まることなく卓がカウントを刻むのは気持ちがイイ。
プレイリストの保存機能も構成しなければなりませんし、修正もまだまだありますが、間違いなく β版 に昇格しています。この達成感と安堵感は暑さという調味料以上にビールを美味しくしてくれています。オタク冥利とはこのことでしょうか。
#タイムコード #Python
LTC Player & LTC Generator を α版 から β版 に昇格しました。主要な機能が搭載されたって意味です。
プレイリストの保存やバグ潰し、細かい調整はこれからですが、音の再生に沿った LTC が出力され、それを拾って卓が動きます。音のポジションを飛ばしてもそれに沿った LTC が出ます。フレーム値が飛んだ時の挙動は卓次第ですが、一時停止も先送りもしなければとても素直に動きます。何度再生しても同じ結果が出ます。そうでないと困るのですが、これぞ期待した機能であります。
ただしmp3などの圧縮データではパソコンによって再生のクセが違い、音アタマとオシリの挙動が一定しません。メロディ続きでトラックが分かれている音源では問題になりそうです。圧縮データだからでしょうが、VLC のライブラリに頼り切っている私にはどうすることも出来ません。非圧縮のデータ形式の wav では正常なので音源のデータ形式を制限した方がいいですね。Windowsならwav、MacintoshならAIFFってことです。
なんでかんで5,000行もあるソースコードになりました。本業を後回しに書いていたのは間を空けると細かいことを忘れてしまうからです。自分なりに読みやすく書きましたので正常に動くところまでやっておけば読み返して戻ることも出来ますが、障害を残したまま間を空けると次の作業で障害を思い出すのに時間がかかるのです。
一応の区切りが付きましたので、一旦お休みというか本業にアタマを戻してプレイリストの保存方法などを検討していこうと思います。
#タイムコード #Python
プレイリストの保存やバグ潰し、細かい調整はこれからですが、音の再生に沿った LTC が出力され、それを拾って卓が動きます。音のポジションを飛ばしてもそれに沿った LTC が出ます。フレーム値が飛んだ時の挙動は卓次第ですが、一時停止も先送りもしなければとても素直に動きます。何度再生しても同じ結果が出ます。そうでないと困るのですが、これぞ期待した機能であります。
ただしmp3などの圧縮データではパソコンによって再生のクセが違い、音アタマとオシリの挙動が一定しません。メロディ続きでトラックが分かれている音源では問題になりそうです。圧縮データだからでしょうが、VLC のライブラリに頼り切っている私にはどうすることも出来ません。非圧縮のデータ形式の wav では正常なので音源のデータ形式を制限した方がいいですね。Windowsならwav、MacintoshならAIFFってことです。
なんでかんで5,000行もあるソースコードになりました。本業を後回しに書いていたのは間を空けると細かいことを忘れてしまうからです。自分なりに読みやすく書きましたので正常に動くところまでやっておけば読み返して戻ることも出来ますが、障害を残したまま間を空けると次の作業で障害を思い出すのに時間がかかるのです。
一応の区切りが付きましたので、一旦お休みというか本業にアタマを戻してプレイリストの保存方法などを検討していこうと思います。
#タイムコード #Python