連続してループ中のループを実行する問題

HARK FORUM 連続してループ中のループを実行する問題

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #2698
    程治
    Participant

      一度batchflowを実行するだけで、.n拡張子のファイルを無限に実行する方法があるかどうかお伺いしたいです。終了条件は、手動でbatchファイルを停止するまでで、その中でどのファイルを開くかはPyCodeExecutorを使用して選択されます。

      #2699

      お問い合わせありがとうございます。

      Network file (.n 拡張子のファイル) が停止するタイミングは、 CONDITION を設定している出力端子に False が設定された時点となります。AudioStreamFromWave の場合を例に挙げますと、WAVファイルの終端(EOF)に達した時点で NOT_EOF 端子が False となり停止いたします。AudioStreamFromMic の場合はマイク入力ですので常に NOT_EOF 端子が True が設定されており、 Ctrl + C などで停止しない限り動作し続けます。

      CONDITION は iterator 設定のサブネット (LOOP するための Dynamic ノード) の終了条件を示し、該当する iterator 設定のサブネット内に1か所だけ設定可能です。2か所目を設定しようとすると最初の設定が外れて排他的に設定されます。 Bool 値の出力端子であればどこにでも設定可能です。(非推奨ですが、 Int 値の出力端子の場合も動作し、0=False、0以外=Trueとみなします。)

      外部からの Ctrl + C や kill signal 送信をトリガーとして停止したい場合は、 Constant ノードなどで True を固定値として入れて CONDITION を設定します。

      PyCodeExecutor で実装されているノードが読み取るファイルをリストのようなもので処理していて、最後のファイルを処理し終えたことが分かっているようなケースでしたら NOT_EOF や NOT_END など分かりやすい端子名の出力端子を追加し、 Bool 値で True を終了させたいタイミングで False としてください。この端子に CONDITION を設定します。

      複合条件で停止させたい場合は、各ノードの CONDITION 状態 (Bool 値) を出力する端子を AND ノードや OR ノードの入力に接続し、出力端子に CONDITION を設定することも可能です。 つまり、 (A AND B) OR C という状態で停止させることも可能です。

      iterator 設定のサブネットが多重化されている (入れ子状態の) 場合、上位階層へ CONDITION を通知するために CONDITION の端子を該当の iterator 設定のサブネットで OUTPUT し、上位階層のサブネットで配置した LOOP の Dynamic ノードの出力値 (CONDITION の値) を読み取ってください。

      つまり、 CONDITION が設定される出力端子は単なる Bool 値の出力端子で CONDITION として設定されることで LOOP 停止条件となると覚えるのが分かりやすいのではないでしょうか。設定されていない端子の状態は未接続の出力端子と同じ扱いとなりますので無視されます。

      ご不明な点がございましたら、いつでもご返信ください。
      以上、宜しくお願い致します。

      HARK Support Team.

      #2700
      程治
      Participant

        申し訳ありませんが、私はまだ少し混乱しています。参考にできるサンプルプログラムはありますか?また、PyCodeExecutorを使用してファイル名を渡す方法が、画像に示されているようにする必要があるのかどうかも知りたいです。というのも、画像の方法で渡すとエラーが発生するためです。以下にPythonプログラムの画像も添付します。
        (画像のアップロードにエラーがあったため、もう一度新しくアップロードしました。)

        • This reply was modified 2 weeks, 3 days ago by 程治.
        • This reply was modified 2 weeks, 3 days ago by 程治.
        #2707
        nterakado
        Moderator

          ご連絡ありがとうございます。

          こちらで想定していたものと違う使用法でしたので、
          すぐにご用意できるサンプルがありません。
          申し訳ありませんが、少しお時間をいただきたく思います。

          また、確認なのですが、
          複数のファイルを次々に再生するのではなく、
          一度選択したファイルをループ再生するという目的でよろしいでしょうか?

          以上、よろしくお願いいたします。
          HARKサポートチーム

          #2708
          程治
          Participant

            はい、一つのファイルを選択してループ再生することで、
            私はこのファイル中の音声ファイルを継続的に即時で更新する予定です。

            #2713
            程治
            Participant

              失礼いたしますが、参考できる例はありますでしょうか。

              #2714

              回答が遅くなり申し訳ございません。サンプルを作成致しました。

              添付ファイルの Python ノードを LOOP0 の中にある AudioStreamFromMic や AudioStreamFromWave の代わりに使用して頂くとご希望の動作になると考えております。
              MAIN には LOOP0 のみ存在し、また LOOP0 については出力端子のみとなるネットワークになります。InputStream ノードなどは必要なくなります。

              まず、 PyCodeExecutor3 ノードに出力端子 AUDIO と NOT_EOF を追加してください。AUDIO 端子の出力を AudioStreamFromXXXX ノードの出力と同様に接続して頂き、NOT_EOF 端子の出力に CONDITION を設定します (Set as Condition) 。 AudioStreamRepeaterFromWave.png のようになります。
              また、必須ではないのですが NOT_EOF 端子に対して Set as Output で出力端子としても設定して下さい。これは HARK-Designer の不具合なので動作には影響がないのですが、入出力が設定されていない任意の端子(接続が必須でない端子)が存在する場合、次回ネットワークを開いた際に端子が非表示になるという問題を避けられます。
              次にパラメータの設定を添付の AudioStreamRepeaterFromWave_parameters.png のように設定します。

              AudioStreamRepeaterFromWave.py (zipで圧縮して添付しています) の実装の概要ですが、
              load_file メソッドは単独のファイルを読み込んで AudioStream のためのバッファ self.frames を作成します。 self.frames.shape は (frames, channels, length) で calculate メソッドの実行時(各フレームの処理時)に (channels, length) サイズの numpy.array() を出力するために使用します。 2次元配列は C++ 側で HARK::Matrix として変換されるため AudioStreamFromMic や AudioStreamFromWave の出力と同様の形式で出力されます。
              load_files メソッドは複数ファイルを連結して読み込む例として実装させて頂きました。AudioStream のバッファをどのように結合するかの参考になれば幸いです。チャネル数やフレーム長(length)が変わる場合にはバッファを再構築する仕様で実装しております。

              添付の Python ノードをご使用になる際の注意点として、 sliding_window_view を使用しておりますので numpy の 1.20.0 以降が必要となります。

              以上、宜しくお願い致します。
              HARK Support Team.

            Viewing 7 posts - 1 through 7 (of 7 total)
            • You must be logged in to reply to this topic.