TuneBrowser.luaの使い方について

フォーラム TuneBrowser TuneBrowser.luaの使い方について

  • このトピックには19件の返信、2人の参加者があり、最後にHayateにより2年、 1ヶ月前に更新されました。
20件の投稿を表示中 - 1 - 20件目 (全20件中)
  • 投稿者
    投稿
  • #4632
    you
    参加者

    Tikiさん、おはようございます。

    TuneBrowserがluaをサポートしているのが過去のフォーラムのやり取りで分かり、TuneBrowser.luaというスクリプトファイルも見つけました。

    ただ私自身がluaにあまり明るくないので、どのように使用していいのかが分からず…お手数ですが、ご教授頂けますでしょうか。

    やりたい事としては、楽曲再生開始時に曲名を引数として外部EXEかバッチファイルを起動したいのですが、TuneBrowser.luaのコメントを見ると、各コールバック関数から「command」と「command line」のペアを返せというような記述がありましたので、OnPlayback関数で試しに、1つ目の文字列に起動したいEXEまたバッチファイルのパスを、2つ目の文字列に適当な引数を記述して返してみたりしたのですが、うまくいきませんでした。

    そもそも使い方が間違っているのは間違いなさそうなのですが、軽くで構いませんので、使い方を教えて頂けますと幸いです。

     

    #4637
    Tiki
    キーマスター

    こんにちわ。

    luaの話なんてしましたっけ? と思ったら、たしかにひとこと触れていますね。(^^; よくお気づきになりましたね。

    luaの対応は、そのひとこと以外は公開していませんでした。以前は個人的な用途として、使用するDACに合わせてアンプを自動制御するような処理に使っていたのですが、再生環境も変わり、わたし自身も使用しなくなっていて、ときおりどうしようかなと思いつつも、そのままにしていました。

    youさんにはluaスクリプトの使い方をご質問いただいているのですが、もうすこしちがう話をさせてください。luaはある特定の業界ではよく使われているようなのですが、全体としてはマイナーです。luaを使用することにしたのは、TuneBrowser内にインタープリタを内蔵できる (ユーザに別途 動作環境を用意してもらう必要がない) からなのですが、2010年当時とは趨勢も変わっていて、なにか外部スクリプトをサポートするにしても、luaではなくべつの形態がいいのかなと思ったりもします。luaの特徴のひとつは、luaスクリプト内から制御元のプログラムの内部データにアクセスできるようにできることなのですが、結局その機構は用意していませんし。

    さて、ご質問の件なのですが、残骸用のようなもので恐縮なのですが、わたしの手許に残っていたスクリプトの一部は次の通りです。

    function    OnPlayback(strType, strDevice, strTune)
        if string.find(strDevice, "Mytek") ~= nil then
            return "command", "irusbcs \"Mytek XLR\""
        elseif string.find(strDevice, "OPPO") ~= nil then
            return "command", "irusbcs \"OPPO XLR\""
        elseif string.find(strDevice, "Chord") ~= nil then
            return "command", "irusbcs \"Chord XLR\""
        elseif string.find(strDevice, "TEAC") ~= nil then
            return "command", "irusbcs \"TEAC\""
        end
        return "", ""
    end
    

    再生開始時に、TuneBrowserが利用しているデバイス名に合わせて、”irusbcs” というプログラムに引数を渡して、入力を切り替えさせています。

    戻り値の “command” はコマンド実行を指示するもので、現在のところこの “command” しかサポートしていません。”command” 以外を返すと, なにもしません。

    (youさんにかぎらず) もしすこし長い目でお付き合いいただけるようであれば、こうした外部スクリプト/プログラム連携を充実させていきたい気持ちはありますので、なにかあれぱぜひご意見、ご質問いただければと思います。

    #4641
    you
    参加者

    こんばんわ。

    ご説明ありがとうございます。
    おかげさまでluaスクリプト経由で外部アプリケーションを起動する事が出来ました!

    luaの特徴のひとつは、luaスクリプト内から制御元のプログラムの内部データにアクセスできるようにできることなのですが、結局その機構は用意していませんし。

    例えば表示に関する制御を行うホスト関数を公開してもらう事とかも可能でしょうか?
    個人的に曲の再生中と停止中でプレイヤービューのピン留めのON/OFFを切り替えたりとかできたらいいなあと思ったりしているのですが。

    (youさんにかぎらず) もしすこし長い目でお付き合いいただけるようであれば、こうした外部スクリプト/プログラム連携を充実させていきたい気持ちはありますので、なにかあれぱぜひご意見、ご質問いただければと思います。

    TuneBrowserとはこれからも長い付き合いになる予定ですので(その分今後もTikiさんには色々とお手数お掛けする事になるかもしれませんが…)、ぜびぜひそのあたりも強化して頂けるとうれしいです。
    私も今後積極的に利用してみて、何かあればご相談させていただこうかと思います。

     

    #4643
    Tiki
    キーマスター

    こんばんわ。

    コマンド動作したようで、よかったです。(^^)

    個人的に曲の再生中と停止中でプレイヤービューのピン留めのON/OFFを切り替えたりとかできたらいいなあと思ったりしているのですが。

    もし大きな期待をさせてしまったとしたら、すいません。そのようなきめ細かい制御を用意しようとか、そういう構想はありませんでした。m(__)m

    もともとの発想は、わたし自身が使っていた外部ツールとか、luaに言及したトピックにあったtwitterのような外部サービスとの連携を、すべてTuneBrowser内部に作り込んでいたのでは、とても追いつかないなというものでした。

    せっかくアイデアいただいたのに、すいません。その辺の温度感というか、イメージをあわせていくのは、意外とむずかしいかもしれませんね…。

    #4645
    BREEZE
    参加者

    很好的软件。即使没有中文还是在使用,喜欢它的声音。在中国的论坛我看到多次这款软件的身影。希望后续能考虑加入中文支持将会大受中国用户喜爱~~

    #4658
    Tiki
    キーマスター

    Googleで翻訳:

    非常に良いソフトウェア。 中国語がない場合でも、私はまだそれを使用し、それを好きです。 私は中国のフォーラムでこのソフトウェアを何度も見てきました。 私はフォローアップが中国のユーザーに大いに愛される中国のサポートに参加すると考えられることができることを願って~~

    BREEZEさん、こんばんわ。 BREEZEさんは翻訳でここを見ておられると思いますので、日本語で書いていいですか?

    TuneBrowserについて好意的に書いていただき、ありがとうございます。光栄です (^^)。もしかしてBREEZEさんは、わたしを中国のフォーラムにお誘いいただいているのでしょうか? わたしは中国語ができませんし、いまはここでの発言で手一杯で、他のフォーラムでのフォローは残念ながらできそうにありません。

    それから、今後もしなにかご発言されるとしたら、ここはluaスクリプトのトピックですので、新しいトピックとしてご発言をお願いします。

    よろしくお願いします。

    #4668
    you
    参加者

    こんばんわ。

    スクリプトの方で細かい制御をすることが構想外なこと承知しました。
    よくよく考えれば、そこに力を入れていくと結局のところfoobar2000のような方向性になっていきますもんね;

    今自分が考えているやりたいことは外部アプリケーションとの連携で実現できますし、今後もその方向で色々と機能を充実させていただければうれしいです。

    あと、ついでにUWP版の素早いリリースありがとうございます。
    この速さなら今後はデスクトップ版に嫉妬せずにすみそうです!(笑)

     

    #4683
    Tiki
    キーマスター

    こんばんわ。

    この件は、まあゆっくりとお願いします。おそらく改善できるとしても、かなり先になると思いますので…。

    「ついで」の話にさらにコメントしてしまいます。先ほどUWP版4.7.1の申請を行いました。UWP版はクラッシュするとマイクロソフトの開発者向けサイトでその状況がある程度わかるのですが、どうも4.7.0で初期化中(?)にクラッシュする事例が多発しているようです。youさんのところでは問題ないですか?

    推定原因に基いてその件だけを対処した版を、リリースします。いつもとは逆ですが、問題の起きているUWP版を先に出して、その後デスクトップ版のリリースを行う予定です。

    #4684
    you
    参加者

    こんばんわ。

    UWP版4.7.0にしてから何度か立ち上げ直したりしていますが、今のところはクラッシュしていませんね。
    何か環境によるものなのかもしれませんね。

    あ、あとこのトピックに関しては私の目的は達成できていますので、いつでも閉じて頂いて問題ありません。

     

    #4689
    you
    参加者

    いつでも閉じてくださいとか言っておきながら申し訳ありません…、ちょっともう一だけつ仕様の確認をさせてください。

    TuneBrowser.luaのOnPlayback関数ですが、「停止状態から再生ボタンを押す」で再生された場合は関数が呼ばれるのですが、「曲A再生終了→曲B再生開始」と「曲Aを再生中→次の曲へボタンを押して曲B再生開始」で次の曲へ移った場合は関数が呼ばれないみたいなのですが、こちらは仕様でしょうか?

     

    #4697
    Tiki
    キーマスター

    こんばんわ。

    UWP4.7.0の件はご確認ありがとうございます。そうですよね、もし起動しないクラスの問題があれば、ここでご指摘が挙がっているだろうとは思いました。今回はマイクロソフトの対応が早く、昨日申請して、すでに公開されています。現在のところは大丈夫そうなので、デスクトップ版も正式版としてリリースしました。

    それで、luaの呼ばれるタイミングですが、現在のところはデフォルトのファイルにある

    • OnPlayback (再生開始)
    • OnPlayerChanged (プレイヤーの変更)
    • OnSampleRateChanged (サンプルレートの変更)

    の3つだけです。(^^;

    すぐに、とはいかないかもしれませんが、追加を検討しましょうか?

    #4699
    you
    参加者

    こんばんわ。

    さっそくUWP版4.7.1に更新しました。
    もし起動しないなどの不具合に遭遇した場合は、別途報告しますね。

    luaの呼ばれるタイミングについてはOnPlaybackは楽曲毎の再生開始タイミングで呼ばれるものと拡大解釈しておりました;

    すぐに、とはいかないかもしれませんが、追加を検討しましょうか?

    全く急ぎでもなんでもありませんので、楽曲毎の再生開始時に呼ばれる関数を追加して頂けたならうれしいです!

    #4700
    hiro
    参加者

    Tikiさん、おはようおざいます。

    Tikiさんが言われるようにクラッシュする事例が多発するなら、このサイトにもっと事例が上がっていると思います。

    TuneBrowserを使い始めて結構な日数が経ちますが私は一度もクラッシュした事は無いですね。

    非常に安定していて感謝しています。

    #11874
    Hayate
    参加者

    Tikiさん、はじめまして。
    TuneBrowser便利に使わせていただいております。

    古いスレッドで恐縮なのですが、曲切り替わり時に呼ばれる関数を追加いただくことは可能でしょうか?
    現在、下記のようにOnPlaybackから自作のPythonスクリプトを呼んで歌詞取得ソフトと連携させているのですが、
    曲切り替わり時にも呼べるようになるとかなり便利になるので要望させていただきます。

    function OnPlayback(strType, strDevice, strTuneFile)
    return “command”, “python \”C:\\Soft\\TuneBrowserLyricsSearch.py\” \””..strTuneFile..”\””
    end

    #11875
    Tiki
    キーマスター

    こんばんわ。

    古いトピックを見つけていただいてありがとうございます。いま見れば、大変申しわけないことに、youさんのご要望をオープンにしたままになっていましたね。あらためて、検討してみます。

    #11898
    Tiki
    キーマスター

    こんばんわ。

    起動不良の問題があったので昨晩あわてて5.1.3の先行版をリリースをしたのですが、このバージョンでトラック再生時に呼び出すLuaの関数を追加しています。

    function OnPlaybackFile(strFileFullPath, strSubsong)
        return "", ""
    end

    strSubSongは、通常のトラック単位のファイルを再生している場合は “0” です。CUESHEETでサブソングが指定されている場合は、 “1” 以降の値が入ります。

    トラック再生ごとにLua関数を呼び出すためには、長さ0のトラック再生が連続するようなケースを考慮する必要がありますので、Luaの関数呼び出し専用のスレッドを設けました。基本的にはご利用に際して影響はないと思いますが、もしなにかお気づきのことがあれば、お知らせいただけると助かります。

    #11901
    Hayate
    参加者

    Tikiさん、こんばんは。

    先行版出ていたのは確認していたのですが、Luaの対応も入れていただいていたんですね。
    早速動作を見させていただき、要望させていただいた挙動であることを確認しました。
    曲送りでも次々歌詞が取得できるようになって、かなり便利になりました!
    思い切ってコメントして良かったです。ありがとうございました。

    #11902
    Hayate
    参加者

    Tikiさん、こんにちは。

    特に困っているわけではありませんが、動作について質問させてください。
    触っていて気づいたのですが、再生中にResampleやBit P、VST3といった再生に関するオプションを変更すると、
    再度OnPlaybackFileが呼ばれているようですが、これはオプション変更後に再度再生開始しているとみなされているからでしょうか?

    #11903
    Tiki
    キーマスター

    さっそくのご確認、ありがとうございました。

    内部のLuaの制御方法を変えたこともあり、もうすこし時間をかけて検証して、と思っていましたが、上にも書いたように大きめの問題のご報告をいただいたと思ったので、すこし焦ってしまいました。

    問題なく動作しているようで、よかったです。

    再生に関する設定を変更した場合に、同一の曲でOnPlaybackFileが呼ばれる事象は、ご賢察の通り、一度内部で停止・再生開始を行っているためです。この動作を抑制する方法もすこし考えてみたのですが、逆にある特定のケースで通知されないというケースが発生してもいけないので、これはこのままのほうが良いように思っています。

    ほかに、内部では再生対象曲を決定するタイミングもあるのですが、これはこれで、再生対象曲は現在再生している曲の最後よりも数秒先に決定しているので、またちょっと微妙な気もします。

    またなにか思いついたらやってみるかもしれませんが、現在のところはこの動作ということになりそうです。

    #11904
    Hayate
    参加者

    Tikiさん、こんばんは。

    ご回答ありがとうございます。

    > この動作を抑制する方法もすこし考えてみたのですが、逆にある特定のケースで通知されないというケースが発生してもいけないので、これはこのままのほうが良いように思っています。

    これに関しては私も同様の考えです。シンプルなほうが動作として説明もつきやすいですよね。
    総じて非常に満足しております。改めてお礼申し上げます。
    ご対応ありがとうございました。

20件の投稿を表示中 - 1 - 20件目 (全20件中)
  • トピック「TuneBrowser.luaの使い方について」には新しい返信をつけることはできません。