0

プログラムでメロディーを作って少し遊んでみたいです。

音色はあまり気にしませんが、昔ながらの 8 ビット音楽のように聴こえたら最高です。

各音符の長さ、いつ再生するか (曲の先頭から)、ピッチを指定するだけで音楽を再生できるようにしたいと考えています。

以下のような使い方をしたいです。

from awesomeMelodyLibrary import play

# Perhaps play accepts an iterable of 3-tuples where 
# the items of the tuple are (pitch, duration_of_note, when_to_play)
# and then it would play those notes.
play([ (440, 200, 0),    # A4
       (440, 200, 200),
       (660, 200, 400),  # E5
       (660, 200, 600),
       (740, 200, 800),  # F#5
       (740, 200,1000),
       (660, 400,1200) ])

そして、アルファベットの歌の冒頭を演奏します。

必ずしもそうである必要はなく、いくつかの制限があっても問題ありません (たとえば、同時に 3 つのノートしか演奏できないなど)。サウンド データ、和音、サウンド クリップなどを演奏するために異なるサウンド クリップのミキシングの詳細を処理します。

4

1 に答える 1

1

Python フロントエンドで RTcmix を試してください。

OS X で最適に動作しますが、私は Ubuntu でも使用しています。簡単なビルド プロセスではありませんでしたが、Ubuntu 12.04 でのインストール プロセスに関するディスカッション リストへの私の投稿をご覧ください。

彼らは利用可能なさまざまな楽器を持っています。私のお気に入りの 1 つは、撥弦楽器のSTRUM2です。

Python でいくつかの音符を演奏する方法を次に示します。

from rtcmix import *
rtsetparams(44100, 2)
load("STRUM2")
noteOnset = 0 #in seconds
duration = 1.0 # in seconds
amplitude = 10000
pitch = 440 # specified in hertz
squish = 1
decay = 1.0
pan = .5 
STRUM2(noteOnset, duration, amplitude, pitch, squish, decay, pan)

デフォルトではピッチはヘルツですが、この関数は MIDI キー番号からヘルツに変換できます。

def keynumToHertz(keynum):
  lowestfreq = 8.175 #C-1
  return lowestfreq * math.pow(2.0, float(keynum)/12.0)

標準表記で音符を指定したい場合は、私が書い('Bb6', 'G#8', 'F-1', 'A4')た関数を使用できます。nameToNumここで見つけてください

より複雑な例については、彼らのサイトのドキュメント、またはアルゴリズム構成に関するテキストである Metalevelの Notes のいくつかの章の実装を含む私のGithub リポジトリを確認してください。手で指定された音符を演奏するだけでなく、それ以上のことをすることに興味がある場合は、その本を読むことを強くお勧めします. これは Lisp/Common Music 用に書かれていますが、私のレポにはその多くの Python/RTcmix 翻訳があります。

于 2013-01-15T03:24:25.660 に答える