全年全月7日の投稿[45件](2ページ目)
2023年9月 この範囲を時系列順で読む この範囲をファイルに出力する
「Open DMX USB」について考えていたのは移動中アタマが空いていたからです。
学園祭への機材レンタルで搬送をしていたのですが、片道1時間半くらいかかるので考え事をするには丁度良い時間でした。
そんな中で Art-Net Patch も思い出す。余りに難しく、数日アタマを全振りしないと進められないネタのために止まっています。
ミキサー(マージ)、プリディレイ(入力に施す)、プリプロファイルカーブ、パッチ、ポストプロファイルカーブ、ポストディレイ(出力に施す)が主な機能ですが、これらの処理(エフェクターと呼称)は参照して計算、参照して計算、参照して計算をひたすら繰り返します。一つ一つはとても簡単な処理ですが、タイミング良く群のデータを短時間で処理しないといけないので構成が難しく、僅かな無駄が後からボディブローの様に効いてきます。
年齢が年齢なので経験量に対し学習量が少ないなぁ~と思いつつも、オブジェクト指向やマルチスレッドなどが普通に使える様になってきますと今までと違った構成がアタマに浮かんできます。全体を一度に見ると難しい処理ですが、構成を分解・整理すれば分割したライブラリとして進められるんじゃないかと。
厄介なのはミキサーとディレイですが、これらを実現するには最大遅延時間分の過去を送信元分保存しておく必要があります。このデータ構成を良く考え、エフェクターの出入りを一般化して進めれば機能単位での製作が可能になりそうな気がします。
目的に対しその環境や言語をどう使えばいいか具体的な見込みを付けてからデータ構造と処理アルゴリズムの本構成を考えることが大切だと思う今日この頃。
開発のプロからしたら当たり前過ぎることなんでしょうけど。
#[Art-Net] #C言語 #器具の製作
学園祭への機材レンタルで搬送をしていたのですが、片道1時間半くらいかかるので考え事をするには丁度良い時間でした。
そんな中で Art-Net Patch も思い出す。余りに難しく、数日アタマを全振りしないと進められないネタのために止まっています。
ミキサー(マージ)、プリディレイ(入力に施す)、プリプロファイルカーブ、パッチ、ポストプロファイルカーブ、ポストディレイ(出力に施す)が主な機能ですが、これらの処理(エフェクターと呼称)は参照して計算、参照して計算、参照して計算をひたすら繰り返します。一つ一つはとても簡単な処理ですが、タイミング良く群のデータを短時間で処理しないといけないので構成が難しく、僅かな無駄が後からボディブローの様に効いてきます。
年齢が年齢なので経験量に対し学習量が少ないなぁ~と思いつつも、オブジェクト指向やマルチスレッドなどが普通に使える様になってきますと今までと違った構成がアタマに浮かんできます。全体を一度に見ると難しい処理ですが、構成を分解・整理すれば分割したライブラリとして進められるんじゃないかと。
厄介なのはミキサーとディレイですが、これらを実現するには最大遅延時間分の過去を送信元分保存しておく必要があります。このデータ構成を良く考え、エフェクターの出入りを一般化して進めれば機能単位での製作が可能になりそうな気がします。
目的に対しその環境や言語をどう使えばいいか具体的な見込みを付けてからデータ構造と処理アルゴリズムの本構成を考えることが大切だと思う今日この頃。
開発のプロからしたら当たり前過ぎることなんでしょうけど。
#[Art-Net] #C言語 #器具の製作
なんとなーくネットを眺めていたところ「Open DMX USB」に目が止まる。
「Open USB USB」
PCから DMX512 を出力する USB インターフェースです。仕様がオープンになっていてハードウェアは極めてシンプルです。FT232RL を用います。
ライセンス仕様は GPLv2 です。大雑把に言うなら、改変しない限り商用/私用を問わず自由に使えます。
FT232RL は LTC Generator でも使っているので、その延長線で使えるなら悪くないなぁ~と。
このところ JASCII のオフライン打ち込みソフトのリクエストがあります。もちろん、ASCII や Comos-Text との変換を含めてです。
正直言うと面倒臭い。有料にするとライセンスの管理やサポートが面倒だし、無料にすると空振り感が強い。プロでない私がコレを開発するには本業を1/3にして半年かかります。卓を持ち込めば済むことに掛ける手間ではありません。
ですが、JASCII 関係は解決したいなぁ~って気持ちはあります。最近は、劇場間でデータを使いまわすためではなく、事前の空打ちが目的になっているからです。有志がお作りになったオフラインソフトもありますが、操作感に照明を作るリズム感がありません。テンキー操作でバンバン打ち込めるシステムがあってもいいのかなとは思います。
もし作るなら、JASCIIベースでプレイバックも出来る様にしてPC卓にしてもいいのかなと。DoctorMX や Open DMX USB で DMX512 を出せばいいのです。
イロイロ想うことはあるので、システムの構成だけでも考えていいのかなと。
#ガチ工作 #照明器具
「Open USB USB」
PCから DMX512 を出力する USB インターフェースです。仕様がオープンになっていてハードウェアは極めてシンプルです。FT232RL を用います。
ライセンス仕様は GPLv2 です。大雑把に言うなら、改変しない限り商用/私用を問わず自由に使えます。
FT232RL は LTC Generator でも使っているので、その延長線で使えるなら悪くないなぁ~と。
このところ JASCII のオフライン打ち込みソフトのリクエストがあります。もちろん、ASCII や Comos-Text との変換を含めてです。
正直言うと面倒臭い。有料にするとライセンスの管理やサポートが面倒だし、無料にすると空振り感が強い。プロでない私がコレを開発するには本業を1/3にして半年かかります。卓を持ち込めば済むことに掛ける手間ではありません。
ですが、JASCII 関係は解決したいなぁ~って気持ちはあります。最近は、劇場間でデータを使いまわすためではなく、事前の空打ちが目的になっているからです。有志がお作りになったオフラインソフトもありますが、操作感に照明を作るリズム感がありません。テンキー操作でバンバン打ち込めるシステムがあってもいいのかなとは思います。
もし作るなら、JASCIIベースでプレイバックも出来る様にしてPC卓にしてもいいのかなと。DoctorMX や Open DMX USB で DMX512 を出せばいいのです。
イロイロ想うことはあるので、システムの構成だけでも考えていいのかなと。
#ガチ工作 #照明器具
2023年8月 この範囲を時系列順で読む この範囲をファイルに出力する
本業がイイ感じに忙しいのでプログラム作業は思った程進みません。仕方ありませんけど。
LTC Player は音楽プレーヤー機能が一応組めたので、LTC の送出部を本格的に進めます。
どういった構造にしましょうかね。
クラスライブラリの書き方も体に入ってきましたので、本格的なドライバっぽい書き方に挑戦してみようと思います。LTC Generator は LTC Player と別な時間軸で動かさないといけませんのでマルチスレッドを使うことはマストだと思われます。LTC Generator は import する別ファイルとし、LTC Player とやりとりする部分はクラスとして記述し、そのクラスからスレッドを立ち上げてシリアル通信を制御するのです。これならLTC Player からはシンプルな関数にしか見えませんので構造的に美しく如何にもドライバって風味になりますw シリアルポートのリストを得る関数も別枠で作り、LTC Generator のインスタンスを起こす際にシリアルポートを指定するようにすれば複数の LTC Generator を扱えます。実際には音声信号を分ければいいので複数扱う必要はないのですが、ドライバとしてならこうあるベキかもしれません。
#Python
LTC Player は音楽プレーヤー機能が一応組めたので、LTC の送出部を本格的に進めます。
どういった構造にしましょうかね。
クラスライブラリの書き方も体に入ってきましたので、本格的なドライバっぽい書き方に挑戦してみようと思います。LTC Generator は LTC Player と別な時間軸で動かさないといけませんのでマルチスレッドを使うことはマストだと思われます。LTC Generator は import する別ファイルとし、LTC Player とやりとりする部分はクラスとして記述し、そのクラスからスレッドを立ち上げてシリアル通信を制御するのです。これならLTC Player からはシンプルな関数にしか見えませんので構造的に美しく如何にもドライバって風味になりますw シリアルポートのリストを得る関数も別枠で作り、LTC Generator のインスタンスを起こす際にシリアルポートを指定するようにすれば複数の LTC Generator を扱えます。実際には音声信号を分ければいいので複数扱う必要はないのですが、ドライバとしてならこうあるベキかもしれません。
#Python
Python の VLC ライブラリで mp3 を再生するとタイムオーバーします。長さ30秒の音源が32秒くらいまでカウントされて終わるのです。mp3 はデータの前後関係から復号する圧縮データのためでしょうか。
再生ポイントがズレてのことかと思いましたがお尻に無音が付くだけの様子。VLCの再生が終了していなくても再生秒数が長さ分になったことで終了と同じ扱いにしました。
付け焼刃な対策ですが、wav などの非圧縮データでは起こらないことですから、厳密を求めたいなら mp3 などの圧縮データを使わなければいいだけ、、、とします。
条件を織り交ぜた Play List で一晩連続再生しましたがエラーはありません。今後は頻繁な操作を続ける試験が必要です。

#Python
再生ポイントがズレてのことかと思いましたがお尻に無音が付くだけの様子。VLCの再生が終了していなくても再生秒数が長さ分になったことで終了と同じ扱いにしました。
付け焼刃な対策ですが、wav などの非圧縮データでは起こらないことですから、厳密を求めたいなら mp3 などの圧縮データを使わなければいいだけ、、、とします。
条件を織り交ぜた Play List で一晩連続再生しましたがエラーはありません。今後は頻繁な操作を続ける試験が必要です。

#Python
2023年7月 この範囲を時系列順で読む この範囲をファイルに出力する
LTC Player はいい感じに進んできました。
PlayListには「Continue」って項目を入れています。音終わりで止める(AutoPauseする)か曲を続けるかの設定です。単に止めて続けても面白くないし、曲間の時間を設定出来たら面白そうなので、曲が終わって次の曲が始まるまでの待ち時間を設定出来るようにしました。0秒にしておけば普通の曲ツナギです。もちろん、待ち時間が終わらなくても PLAY を押せば次の曲に行きます。ついでにマイナス秒も設定出来るようにしてみました。前倒しで曲を終りにする機能です。お尻の無音が長い曲を曲続きにしたい場合に便利かなと。使う人がいるかわかりませんが、ソースを見たら簡単に入れ込めそうだったので欲を出してみました。ライブラリがVLCなので厳密な時間再現は出来ませんけどね。
それにしても、Python のソースなのに明らかにアセンブラっぽい。どう見ても一般的な Python の流儀から外れています。勉強しながら考えなら書いていると体に染みついたアセンブラ風味になってしまうようです。ソースコードを誰かに納品するワケじゃありませんのでオレ流で構わないのですけどね。けど、オブジェクト指向でクラス・インスタンスをベースにするより、フラグベースでリニアな処理手順にした方が分岐が少なくてバグを見つけやすいかもと思ったり。リニアに書くのが非合理的なのでオブジェクト指向なんでしょ!という正論は聞きませんwww
#Python
PlayListには「Continue」って項目を入れています。音終わりで止める(AutoPauseする)か曲を続けるかの設定です。単に止めて続けても面白くないし、曲間の時間を設定出来たら面白そうなので、曲が終わって次の曲が始まるまでの待ち時間を設定出来るようにしました。0秒にしておけば普通の曲ツナギです。もちろん、待ち時間が終わらなくても PLAY を押せば次の曲に行きます。ついでにマイナス秒も設定出来るようにしてみました。前倒しで曲を終りにする機能です。お尻の無音が長い曲を曲続きにしたい場合に便利かなと。使う人がいるかわかりませんが、ソースを見たら簡単に入れ込めそうだったので欲を出してみました。ライブラリがVLCなので厳密な時間再現は出来ませんけどね。
それにしても、Python のソースなのに明らかにアセンブラっぽい。どう見ても一般的な Python の流儀から外れています。勉強しながら考えなら書いていると体に染みついたアセンブラ風味になってしまうようです。ソースコードを誰かに納品するワケじゃありませんのでオレ流で構わないのですけどね。けど、オブジェクト指向でクラス・インスタンスをベースにするより、フラグベースでリニアな処理手順にした方が分岐が少なくてバグを見つけやすいかもと思ったり。リニアに書くのが非合理的なのでオブジェクト指向なんでしょ!という正論は聞きませんwww
#Python
2023年6月 この範囲を時系列順で読む この範囲をファイルに出力する
今後のこともあり、移動時間にPICのI2Cを勉強し直してみました。
これまではイマイチ理解出来なかったのですが、ボチボチ使い方がわかってきました。わからなかったのはハードウェアとソフトウェアの棲み分けとソフトウェアの手順です。
I2Cの規格を頑張って説明するのはありがたいのですが、一番知りたいソフトウェアの手順がボンヤリした文書ばかり。ちょっと複雑な手順を踏むので突っ込んだ理解が望ましいのはわかるのですが、その説明で力尽きしまうのか、どとのつまりどうすればいいの?に応えてくれる資料が少ないように思います。特に、I2Cの特徴的な要素である「ACK」を扱うのがハードウェアなのかソフトウェアなのかが見えないのです。
正直、Pythonなどではライブラリを使うだけで済んでしまいますので、いくらPICマイコンでもそこまでローレベルの機構まで理解しないといけないのか不思議です。
わかったことは、設定さえしてしまえばソフトウェアの手順はUARTと大差ないことです。
マスタが送信する場合はスレーブアドレスを先頭にしたバイトリストをハードウェアモジュールに渡す(PICではバイト単位で渡す)。
マスタが受信する場合はスレーブアドレスを送り、返信されたバイトデータを取り込んだら取り込み済みのフラグを立てる。
スレーブは、自分のアドレスを設定しておけば自分向けの通信かハードウェアが判断してくれるので、マスターの要望に従って受信値を取り込むか返信値を投げる。
データの終りのストップコンディションは、マスター/スレーブ・送信/受信の立ち位置で違うけどフラグを立てるだけ。
波形をコマンド操作で作るワケじゃありませんし、前後関係で調整することもありません。規格はザックリ概要がわかっていれば十分なのに、ソフトウェアの手順の説明がボンヤリしているのはイマイチ理解不能なワケです。
#PIC
これまではイマイチ理解出来なかったのですが、ボチボチ使い方がわかってきました。わからなかったのはハードウェアとソフトウェアの棲み分けとソフトウェアの手順です。
I2Cの規格を頑張って説明するのはありがたいのですが、一番知りたいソフトウェアの手順がボンヤリした文書ばかり。ちょっと複雑な手順を踏むので突っ込んだ理解が望ましいのはわかるのですが、その説明で力尽きしまうのか、どとのつまりどうすればいいの?に応えてくれる資料が少ないように思います。特に、I2Cの特徴的な要素である「ACK」を扱うのがハードウェアなのかソフトウェアなのかが見えないのです。
正直、Pythonなどではライブラリを使うだけで済んでしまいますので、いくらPICマイコンでもそこまでローレベルの機構まで理解しないといけないのか不思議です。
わかったことは、設定さえしてしまえばソフトウェアの手順はUARTと大差ないことです。
マスタが送信する場合はスレーブアドレスを先頭にしたバイトリストをハードウェアモジュールに渡す(PICではバイト単位で渡す)。
マスタが受信する場合はスレーブアドレスを送り、返信されたバイトデータを取り込んだら取り込み済みのフラグを立てる。
スレーブは、自分のアドレスを設定しておけば自分向けの通信かハードウェアが判断してくれるので、マスターの要望に従って受信値を取り込むか返信値を投げる。
データの終りのストップコンディションは、マスター/スレーブ・送信/受信の立ち位置で違うけどフラグを立てるだけ。
波形をコマンド操作で作るワケじゃありませんし、前後関係で調整することもありません。規格はザックリ概要がわかっていれば十分なのに、ソフトウェアの手順の説明がボンヤリしているのはイマイチ理解不能なワケです。
#PIC
LTC Generator は入荷した修正基板を用いてプリアンプが完成。+4dB(1.23Vp-p)の波形を出しています。
まだPythonプロンプトのレベルですが、シリアルでデータを送ると波形が変化します。Pythonからデータを送る場合、バイト毎ではなく、配列にバイナリを格納してpyserialに渡すのが良さそうです。
タイミングが正しいかは確認出来ませんが、PICからの送信要求も受信出来ています。これを受けてデータを送る段取りです。
本業が詰まっていますのであまり長い時間は出来ませんが、1日0.5課題くらいの気持ちで少しずつ行きましょう。
明晩は仮のLTCデータを送出するPythonプログラムを書いてみます。
あらかじめ2-3秒分の配列データを作っておいて送信要求があれば1フレーム分送出する物ですが、卓に接続してLTCがカウントされれば最大の山場を越えます。
#PIC #タイムコード
まだPythonプロンプトのレベルですが、シリアルでデータを送ると波形が変化します。Pythonからデータを送る場合、バイト毎ではなく、配列にバイナリを格納してpyserialに渡すのが良さそうです。
タイミングが正しいかは確認出来ませんが、PICからの送信要求も受信出来ています。これを受けてデータを送る段取りです。
本業が詰まっていますのであまり長い時間は出来ませんが、1日0.5課題くらいの気持ちで少しずつ行きましょう。
明晩は仮のLTCデータを送出するPythonプログラムを書いてみます。
あらかじめ2-3秒分の配列データを作っておいて送信要求があれば1フレーム分送出する物ですが、卓に接続してLTCがカウントされれば最大の山場を越えます。
#PIC #タイムコード
2023年5月 この範囲を時系列順で読む この範囲をファイルに出力する
昨日に引き続きバレエ発表会です。
道具の転換だけですからリハ中の今はヒマなのでアイデアを整理しています。
課題は「LTC Sound Player」です。
wavやmp3の音源プレイヤーですが、再生している音源と並列のLTCも出力します。先日も書いたネタですが、折角の空き時間ですから改めて整理しています。
音源再生にはVLCのライブラリであるlibvlcを使います。もっと直接的にOSとやりとりする方法もあるようですが、フォーマットやコーデックの違いをVLCが吸収してくれるので頼った方が間違いありません。記述はC言語系ならC++ですから勉強が増えますが、Pythonなら比較的簡単に書けそうです。
LTCの出力にはPICを挟みます。LTCの変調は差動バイフェーズですが、RaspberryPiには専用モジュールはありませんし、ソフトウェアで波形を起こすよりPICを使った方が自分には簡単です。RaspberryPiとはUARTやSPIで通信します。
レイテンシーを管理したガチの業務用ならC++記述しなければなりませんが、とりあえず作ってみようならPythonでイイと思います。
#器具の製作 #タイムコード
道具の転換だけですからリハ中の今はヒマなのでアイデアを整理しています。
課題は「LTC Sound Player」です。
wavやmp3の音源プレイヤーですが、再生している音源と並列のLTCも出力します。先日も書いたネタですが、折角の空き時間ですから改めて整理しています。
音源再生にはVLCのライブラリであるlibvlcを使います。もっと直接的にOSとやりとりする方法もあるようですが、フォーマットやコーデックの違いをVLCが吸収してくれるので頼った方が間違いありません。記述はC言語系ならC++ですから勉強が増えますが、Pythonなら比較的簡単に書けそうです。
LTCの出力にはPICを挟みます。LTCの変調は差動バイフェーズですが、RaspberryPiには専用モジュールはありませんし、ソフトウェアで波形を起こすよりPICを使った方が自分には簡単です。RaspberryPiとはUARTやSPIで通信します。
レイテンシーを管理したガチの業務用ならC++記述しなければなりませんが、とりあえず作ってみようならPythonでイイと思います。
#器具の製作 #タイムコード
2023年4月 この範囲を時系列順で読む この範囲をファイルに出力する
PythonならVLCを簡単に扱えそうですが、C言語で扱うのはちょっと難しそうです。
ネットには先達の情報が少なく、VLCライブラリのヘッダーファイルを読んでも理解不能。ヘッダーファイルには更なるヘッダーファイルが記述してあり、そのヘッダーファイルの中にも更なるヘッダーファイルがあります。どこまで深いのかわからんくらいです。プロトタイプ宣言と思わしき記述もゴリゴリのC++なので何がどうなっているのか追いかけられません。高度で大きなアプリケーションですから簡単ではないのです。
当面はPythonでの実装を目指し、C言語での実装を夢見るってところでしょうか。
となると、Pythonでタイムコードの生成をするのがカギになるかもしれません。
Pythonで安定したLTCの波形を生成するのは厳しそうなのでMIDI-TimeCodeにするのが現実的でしょうか。MIDIは9600bpsのUARTですからPythonでも余裕を持って作れます。ただ、音源操作と照明操作の場所が離れているとMIDIでは接続が難しいので、音声信号として送れるLTCが望みです。MIDIをRS485に変換すればいいって話もありますけどね。
C言語でLTC生成のPythonライブラリを作るのがいいのでしょうか。PythonライブラリをC言語で書いたことはありませんが、C言語のライブラリとして成立していれば比較的簡単な記述でPythonライブラリが作れるそうです。
#タイムコード
ネットには先達の情報が少なく、VLCライブラリのヘッダーファイルを読んでも理解不能。ヘッダーファイルには更なるヘッダーファイルが記述してあり、そのヘッダーファイルの中にも更なるヘッダーファイルがあります。どこまで深いのかわからんくらいです。プロトタイプ宣言と思わしき記述もゴリゴリのC++なので何がどうなっているのか追いかけられません。高度で大きなアプリケーションですから簡単ではないのです。
当面はPythonでの実装を目指し、C言語での実装を夢見るってところでしょうか。
となると、Pythonでタイムコードの生成をするのがカギになるかもしれません。
Pythonで安定したLTCの波形を生成するのは厳しそうなのでMIDI-TimeCodeにするのが現実的でしょうか。MIDIは9600bpsのUARTですからPythonでも余裕を持って作れます。ただ、音源操作と照明操作の場所が離れているとMIDIでは接続が難しいので、音声信号として送れるLTCが望みです。MIDIをRS485に変換すればいいって話もありますけどね。
C言語でLTC生成のPythonライブラリを作るのがいいのでしょうか。PythonライブラリをC言語で書いたことはありませんが、C言語のライブラリとして成立していれば比較的簡単な記述でPythonライブラリが作れるそうです。
#タイムコード
2023年3月 この範囲を時系列順で読む この範囲をファイルに出力する
クリアカムのピンアサインは「音響・映像・電気設備が好き」さんの「Clear-Com(クリアカム)のヘッドセット・ピンアサイン」がわかりやすい。XLRは品番によってピン配置が違う点も解説されているのでとても良い情報です。
#電子工作
#電子工作