1

私は、一連のステムから毎回異なる方法で音楽をシーケンスするプログラムを書いています。これで、トラックの再シーケンス、再生、およびバウンスをトリガーするボタンを備えた基本的な GUI ができました。

そのため、実行時に、プログラムは再順序付け関数を 1 回トリガーし、再生の準備が整った出力値を返します。これは play 関数を使用して再生できますが、関数内で出力を受け取るには、最初の関数を再トリガーする必要があり、正しくありません。

ユーザーがトラックを再生するたびにシーケンス機能を再トリガーする必要はありません。最初の戻りデータにアクセスするだけで済みます。返されたデータを resequence 関数の外に割り当てることはできません。これは、一度しか保存されず、最初のシーケンスしか再生できないためです。

以下のコード例は私が持っているもので、うまくいきません。

私が必要としているのは、再配列が発生するたびに変数を保存し、play 関数からアクセスできるようにする方法です。Play は、値を取得するためだけに再シーケンスを再トリガーするべきではありません。

:::

リシーケンス():

blah blah, sequencing.

return output

遊ぶ():

output=Resequence()   # the value shouldnt change on each play. 

play(output)

:::

出力は、PyDub からのオーディオ セグメントです。テキストファイルに保存しようとしましたが、明らかにうまくいきませんでした。

助けてください :(

4

1 に答える 1

1

Resequence がクラス メソッドではなく関数である場合は、必要なシーケンスを格納するためにグローバル変数を使用する必要があります。次のようなものです。

seq = None
def Resequence():
    global seq
    if seq != None:
        return seq
    #now do your blah, blah, blah
    seq = my_generated_sequence
    return seq

ただし、 Resequence をオブジェクトの一部にする必要があると感じています。毎回異なるファイルを複数回呼び出すことができるようにする必要があります。

class Player(object):
     def __init__(self):
         self._seq = None
     def Resequence(self):
        if self._seq != None:
           #same logic here...
于 2015-07-16T14:50:06.783 に答える