5

私はギターのコードをバンジョーのコードに変換するアプリケーションに取り組んでおり、オブジェクトを構築しているので、タブ/書き込みしたコードをすばやく再生する一種のオーディオ「印刷ステートメント」も作成したいと考えています。 .

Python を使用して、ある種のミキシング作業やすべての pygame の組み込み、またはファイルへの書き込みを行わずに複数のサウンドを同時に再生する方法について、私は非常に混乱しています。

私が探しているのは、できるものです...

  1. 440 で A を生成し、880 でそのオクターブを生成するなど、周波数を取得します。
  2. おそらくMIDI楽器を介して、ディスクに書き込むことなくそれらを再生します。

楽器のチューニングを考慮して、フレットから周波数に変換できる関数を用意しています。それらに基づいて、次のように言いたいと思います。

fretboard.play([440, 880])

トーンが聞こえます。もしくは時間指定できれば...

fretboard.play([(440,1), (880,1)])

それぞれを同時に 1 秒間聞くことができます。

この種のサウンドを簡単に得るための最良のアプローチは何ですか?また、プリミティブなメロディーを作成したい場合に、これらのいくつかをシーケンスできるようにする方法はありますか?

さらに、これがまったく別の種類のプログラミングであり、私の質問が単純すぎるように思われる場合 (「やあミトンチョップ、チャンネルについてもっと学ぶ必要があります!」)、私に知らせてください。学習リソース。

4

2 に答える 2

2

以前、Python のサウンド分析を探していたときに、このサイトPythonInMusicに出くわしました。このサイトには、Python 用の音楽ソフトウェアのリンクがたくさんあります。

もう一度振り返ってみると、MIDI ノートをリアルタイムで出力するために最初に使用しようとするのはPyFluidSynthと呼ばれるものだと思います。Python 用の MIDI シンセです。彼らのサイトからのサンプルコードは次のとおりです。

import time
import fluidsynth

fs = fluidsynth.Synth()
fs.start()

sfid = fs.sfload("example.sf2")
fs.program_select(0, sfid, 0, 0)

fs.noteon(0, 60, 30)
fs.noteon(0, 67, 30)
fs.noteon(0, 76, 30)

time.sleep(1.0)

fs.noteoff(0, 60)
fs.noteoff(0, 67)
fs.noteoff(0, 76)

time.sleep(1.0)

fs.delete()

それがあなたを正しい方向に向けるのに役立つことを願っています!

于 2013-10-29T22:54:49.827 に答える