問題タブ [synthesizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
verilog - モジュール インスタンス化のレジスタ
aF
およびbF
レジスタです。他のすべてのシグナルは、それに応じて宣言されます。P1,P2 . . P3
これは合法ですか?合成する前に書くコードがたくさんありますが、うまく合成できないのではないかと感じています。
matlab - リアルタイムオーディオ変調
プロジェクトの進め方がわからず困っています。手短に言えば、加速度計からのデータを使用して FM シンセサイザーを作成し、FM およびピッチのパラメーターをリアルタイムで変更しようとしています。
これが私がそれに基づいているコードのいくつかです:
波を生成する関数がありますが、設定された期間のみです (組み込みの matlab 関数の制限のため)。私はそれを(そのようなユーザー入力が停止するまで)連続させ、「リアルタイム」で変調できるようにしたいと思います(少しの遅れは問題ありません)。
これについては、ここでリアルタイム オーディオ プロセッサ コードを見つけました。
ただし、これはオブジェクト指向プログラミング言語で書かれており、私にはなじみがありません。
上記の関数をこのコード (出力 rtap) に実装する簡単な方法はありますか、それともサブクラスに記述する必要がありますか? もしそうなら、どのように?
コードをダウンロードしたくない人のために、主なクラスは次のとおりです。
パッケージにはサンプルとして使用されている他のファイルもありますが、それらをうまく変更できませんでした。さらに、加速度計データの読み取りとフィルタリングのコードを投稿していないことをお詫びします (少し長いです)。
java - JavaでピッチベンドをMIDIシーケンサーに送信する
MIDI シーケンサーを起動して実行するための基本を理解しています。再生中にシーケンスのピッチを増減できるようにしたいと考えていますが、ピッチ ベンドはシーケンサーではなくシンセサイザーに送信されるメッセージです。
シーケンサーの受信機をシンセサイザーの送信機に設定してみました。ピッチベンドの短いメッセージを送信すると、シーケンサーは同じピッチのままでしたが、シンセサイザーは新しいピッチベンド値で 2 番目のトラックを再生し、かなりひどいサウンドの音楽を作成しました。 .
テンポを変えるのと同じように、再生中にピッチを曲げる良い方法はありますか?
もう 1 つのオプション (大掛かりな作業のように思えます) は、呼び出されたときにすぐにロードできるように、異なるキーでいくつかのバージョンの MIDI ファイルを用意することです。
android - ソフトウェア シンセを使用して MIDI ファイルを生のオーディオに変換する
Android アプリから直接、小さな MP4 オーディオ + ビデオ ファイルを動的に生成しようとしています。
私の当初の攻撃計画:
ユーザーがいくつかの基本的な曲データ (コード進行など) を入力すると、アプリが MIDI ファイルを作成します。
システムはコードごとにコード ダイアグラムを作成し、MIDI リーダーを使用して、MIDI に合わせてアニメーション フレーム配列を生成します。
MIDIを生のPCMオーディオデータに変換します<-このSOの質問はこの時点に固有のものです
生のオーディオをアニメーション フレームに適用し、オーディオ フレームとビデオ フレームを MP4 にエンコードします。
標準の再生コントロールを使用して、結果の MP4 ビデオをユーザーに提供します。
アプリは、テンポ、楽器、音符などのユーザー入力に基づいて MIDI ファイルを既に作成しています。この部分は簡単に実行でき、MIDI ファイルは正しく生成されています。この MIDI は、Android の MediaPlayer から正常に再生されます。(ステップ1)
アニメーション フレームも、MIDI ファイルを読み戻し、シーケンス内の各コードの静的ビットマップのリストを相互参照することによって、正しく作成されています。これらのフレームはビデオになりますが、最初は音声がありません。(ステップ2)
ご覧のとおり、リアルタイム シンセサイザー アプリを作成していないため、Android MIDI レイテンシの問題はそれほど問題ではありません... MIDI をミックスできるオーディオ形式に変換したいだけです。オリジナルの MIDI に既にタイミングが合わせられているビデオに変換します。(ステップ 3)
私が直面している問題は、ステップ 3 です。
ソフトウェア MIDI シンセサイザーを使用して、一連の MIDI イベントから生成される実際のオーディオ出力を取得する必要があることを理解しています。ただし、これを正しく機能させることが大きなハードルになっています。結果として得られるオーディオの正確な品質については気にしません。一般的なデバイス (ala Gravis サウンドフォントやビルトインの Sovinox サウンドなど) からの General MIDI サンプルを使用した場合に誰かが期待するものと非常によく一致することだけです。
そう...
私の最初の試みは、上記の 2 つのプロジェクトでした... MIDI ファイルを生の PCM データ バッファーに変換できるようにそれらをマッシュアップします... まだうまくいきません。
midi ライブラリ (1) は、リアルタイム リスナーで MIDI ファイルを読み取り、オンボード シンセサイザーによって生成された生の PCM データを再生する Midi ドライバー (2) にイベントを送信します。
(注: ドライバーにいくつかの微調整が加えられ、バッファー全体が保存され、MIDI リーダーが終了した後にのみ返されるようになりました。これは、プロセス全体が曲の長さに等しい時間を変換するだけでかかることも意味します。リアルタイムで「聞いている」からです。)
私はまだこれを期待どおりに機能させていません。これをできるだけシンプルに保ち、可能であればオープン ソース プロジェクトを使用することを好みました。リアルタイムリスナーに依存せずにこれを行うことができればより良いでしょう.
私が検討している他のいくつかのライブラリとツール(ただし、やり過ぎかもしれません):
さらに多くの候補 (まだ多くの調査は行われていません):
jFugue/timidity/audacity/fluidSynth/cSound/jMusic/JSyn/Gervill/Softonic/Caustic/LibGDX/JetPlayer/OpenSL-ES
私の質問は次のとおりです。
上記のプロジェクトで正しい道を進んでいますか? 私は MIDI->PCM 変換に比較的慣れていないので、何かを完全に見逃していないことを確認したいと思います。
そうでない場合、MIDI ファイルを何らかのオーディオ形式に変換して、MP4 (または任意のビデオ再生形式) の作成に使用できるようにするにはどうすればよいですか?
Android を使用して MIDI 2 生のオーディオ波形を変換するこの作業に役立つオープン ソース プロジェクトは他にありますか?
そして、Android で使用するために既に作成されたそのようなタスクの例はありますか? (つまり、すでに Android JNI などで使用するために移植されています)
私の願いは、これを些細な作業にする何かを完全に見逃したことです...これには深刻なハッキングとJNIのカンフーが必要になると思います。
それが必要なら、私は困難な道を進んでも構わないと思っています。あらゆるアドバイスをいただければ幸いです。
cocoa-touch - iOS7のnsspeechsynthesizerでユーザーの声を文字列に合成する方法
nsspeechsynthesizer または他の ios7 の方法を使用して、ユーザーの声を文字列に変換します。私は逆の方法しか見つけられません。
arduino - Arduino Uno PWM - 奇妙な結果
ATMega328P で PWM 波形生成モードを試しています。奇妙な結果が得られましたが、それがファームウェアの書き方に問題があるのか、それともデータシートの解釈に問題があるのか わかりません。
analogWrite() 関数をエミュレートするために私が書いた最初のコードは次のとおりです。
上記のコードは、ピン 9 から約 2.5V (49% のデューティ サイクル) の平均電圧出力を生成します。(私にとって) 奇妙なことは、データシートによると、TIMER1 は 16 ビット タイマーであるため、65536 ティックでオーバーフローするはずです。 . 私が理解していることから、OCR1Aを0から65535に設定すると、パルスのデューティサイクルが変更されます。では、OCR1A を 125 に設定すると、2.5V ではなく約 0.01V の出力が得られるのではないでしょうか? 結果は、クロックが 255 でオーバーフローしていることを示しているようです。
PWM ランドへの 2 回目の進出では、ATMega の高速 PWM モードを使用して 2.5V 信号を作成してみました。これが私が得たものです:
ICR1 (オーバーフロー値) を任意に 20000 ティックに設定し、OCR1A (比較値) をその約半分に設定します。チャンネル A を非反転モードに設定しましたが、反転モードに設定しても違いはなかったと思います。これを Arduino にフラッシュしたとき、ピン 9 から平均 5V (100% デューティ サイクル) の安定した電圧が得られました。
あなたが提供できる洞察をいただければ幸いです。
python - キーを押している限りノートを再生する方法 (Fluidsynth)?
私は現在Raspberry Piプロジェクトに取り組んでおり、ボタンを押す限り(gpioに接続されている)ノートを再生する可能性を探しています。私はpyFluidsynthを使用して動作させましたが、ボタンを押している限りノートを保持しているノートです。それは非常に速く繰り返されますが、聞こえないように遅くなります。
私が知らないコントロールはありますか?私はノートオンとノートオフを使用しているだけですが、「ノートホールド」のようなものはありますか?
ありがとう!
synthesis - Synopsys Design Vision を使用したカスタム ライブラリのエリア最適化
XOR、NOR、および IV (インバーターまたは NOT) のみで構成されるシノプシス デザイン ビジョン用のカスタム ライブラリを作成します。私の計画は、結果のネットリストに最小数の NOR ゲートが含まれるように組み合わせロジックを合成することです。ライブラリをフローとして記述します。
ここでは、スペースを節約するためにタイミング コンデンサと入力コンデンサを取り外しています。NOR のエリアを 1000 に設定し、XOR と IV を 1 に設定したので、エリア最適化を使用して不要な NOR を XOR と IV に置き換えることができます。set_max_area 0
そしてを使用して組み合わせロジックをコンパイルしますcompile_ultra -exact_map -no_design_rule -area_high_effort_script
。
問題は、NOR エリアを 1 または 1000 に設定しても、同じ結果 (NOR の数) が得られることです。エリア最適化のトリックがうまくいかないようです。なぜなのかご存知ですか?NOR を最小限に抑えるにはどうすればよいですか?
ありがとう