問題タブ [synthesis]

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.

0 投票する
7 に答える
92991 参照

python - pythonで音の生成・合成?

Pythonで正弦波のような単純な音を生成することは可能ですか?

これに使用できるモジュールはありますか? そうでない場合、どのように独自の作成を行いますか?

また、サウンドを再生するためにPythonを実行するための何らかのホスト環境が必要ですか、それとも端末から呼び出すだけで実現できますか?

答えが OS に依存する場合、私は mac を使用しています。

0 投票する
2 に答える
1345 参照

python - Pythonで合成されたトーンを連結する

次のコードを使用して、2 秒間続く 440 Hz のトーンを含む wav ファイルを生成します。

Pythonで実際に曲を生成するために、ノートメソッドに基づいてコードを変更できるかどうか疑問に思っていました。

2 つの異なるトーンを追加してみましたが、予想どおり 2 つのトーンが同時に再生され、ダイヤル トーンのようなサウンドが作成されました。

2 つのトーンを掛け合わせることも試みましたが、これでは静電気が発生するだけです。

また、さまざまな長さのトーンをジャンル化して追加しようとしましたが、これにより、次のように例外が発生します。

原因:

それで、私は疑問に思っていました - どうすればこのような異なる音色を連結して曲を作ることができますか?

0 投票する
3 に答える
1734 参照

ios - iOSの正弦波の生成-カチッという音が聞こえる

iOS用のシンセサイザーを作成中です。遊んでコアオーディオを学ぼうとすると、頭が動かないという問題が発生しました。私の正弦波は一定の間隔でカチッという音を立てますが、これは位相に関係していると推測しています。私はこの主題に関するいくつかのガイドと本を見てきました、そしてすべては私がそれを正しくやっていると示唆しています。

誰かが私のコードを見てくれてとても親切なら、それは大いにありがたいです。

0 投票する
1 に答える
377 参照

flash - Flashは低レイテンシのオーディオ合成を行うことができますか?

SoundクラスのSAMPLE_DATAイベントを使用してサウンドを合成する場合、Flashのドキュメントでは、最大8192までの可能な限り多くのサンプルを書き出すことを推奨しています。私のシステムでは、各イベントに少なくとも4192サンプルを書き込まない限り、サウンドがカットされます。これは10分の1秒であり、ユーザーが気付くはずです。

事前にバッファリングするオプションがあるかもしれませんが、これは私のアプリケーションにとって大きな煩わしさです。低遅延のオーディオ出力を取得する方法はありますか?

0 投票する
1 に答える
6544 参照

java - Androidオーディオ-ストリーミング正弦波ジェネレータの奇妙な動作

初めてのポスターはこちら。私は通常、自分で答えを見つけるのが好きですが(調査であれ試行錯誤であれ)、ここで困惑しています。

私がやろうとしていること: 私はシンプルなAndroidオーディオシンセサイザーを構築しています。現在、ユーザーが調整するとトーンの周波数を変更するUIのスライダーを使用して、リアルタイムで正弦波を再生しています。

構築方法: 基本的に、ワーカースレッドと出力スレッドの2つのスレッドがあります。ワーカースレッドは、tick()メソッドが呼び出されるたびに、正弦波データでバッファーを埋めるだけです。バッファがいっぱいになると、データをオーディオトラックに書き込む準備ができたことを出力スレッドに警告します。2つのスレッドを使用している理由は、audiotrack.write()ブロックであり、ワーカースレッドが(オーディオトラックの書き込みが完了するのを待つのではなく)できるだけ早くデータの処理を開始できるようにするためです。UIのスライダーは、ワーカースレッドの変数を変更するだけなので、(スライダーを介した)頻度の変更は、ワーカースレッドのtick()メソッドによって読み取られます。

動作するもの: ほとんどすべて。スレッドはうまく通信し、再生にギャップやクリックはないようです。大きなバッファサイズ(androidのおかげで)にもかかわらず、応答性はOKです。周波数変数は、tick()メソッドのバッファー計算中に使用される中間値(Log.i()によって検証される)と同様に変更されます。

動作しないもの: 何らかの理由で、可聴周波数が継続的に変化するようには見えません。スライダーを調整すると、周波数は段階的に変化します。多くの場合、4分の1または5分の1の幅です。理論的には、1Hz程度の変化が聞こえるはずですが、そうではありません。奇妙なことに、スライダーを変更すると、正弦波が調和級数の間隔で再生されているように見えます。ただし、周波数変数がデフォルト周波数の整数倍にスナップしていないことを確認できます。

私のオーディオトラックは次のように設定されています。

ワーカースレッドのバッファーは、次のように(tick()を介して)入力されています。

オーディオデータは次のように書き込まれます。

どんな助けでも大歓迎です。どうすれば周波数を徐々に変化させることができますか?Log.i()は、変数angleIncrementとcurrentAngleが適切に更新されていることを確認するため、tick()のロジックは適切であると確信しています。

ありがとうございました!

アップデート:

私はここで同様の問題を見つけました:Android AudioTrackバッファリング の問題ソリューションは、audioTrackに十分な速度でサンプルを生成できなければならないことを提案しました。これは理にかなっています。サンプルレートを22050Hzに下げ、いくつかの経験的テストを実行しました。最悪の場合、約6msで(tick()を介して)バッファーを埋めることができます。これで十分です。22050Hzで、audioTrackは2048サンプル(または4096バイト)のバッファサイズを提供します。したがって、満たされた各バッファは約0.0928秒のオーディオで持続します。これは、データの作成にかかる時間(1〜6ミリ秒)よりもはるかに長くなります。だから、私はサンプルを十分に速く生成することに問題がないことを知っています。

また、アプリケーションのライフサイクルの最初の約3秒間は正常に機能します。スライダーをスムーズにスイープすると、オーディオ出力がスムーズにスイープされます。この後、それは本当に途切れ途切れになり始め(音は約100Mhzごとに変化するだけです)、その後、それはスライダー入力にまったく反応しなくなります。

バグも1つ修正しましたが、効果がないと思います。AudioTrack.getMinBufferSize()は、BYTESで許容される最小のバッファーサイズを返します。この数値をtick()のバッファーの長さとして使用していました。現在、この数値の半分(サンプルあたり2バイト)を使用しています。

0 投票する
2 に答える
192 参照

vhdl - 追加の LE を必要とする VHDL 関数?

次のような複数の定義を持つパッケージを作成しています

次のような関数を使用して、レコード タイプ内のフィールドを変更したいと考えています。

私の質問は、示されている例と同様の関数を使用して、レコード値を明示的に変更するよりも多くの LE を使用するかどうかです。

0 投票する
1 に答える
570 参照

c# - .netシンセサイザー

.NETアプリケーションと統合できるシンセサイザーを探しています。利用可能な.NETシンセサイザーはありますか?VSTプラグインを.NETアプリケーションに統合する方法はありますか?

MIDI入力に基づいたサウンド、できれば正弦波/方形波/のこぎり波よりも魅力的なサウンドを作成したいと思います。

0 投票する
2 に答える
2852 参照

vhdl - 双方向バスのRAMをブロックする

ザイリンクスSpartan6FPGAのコアで生成されたブロックRAMを双方向データバスに接続する方法を理解しようとしています。私が見つけることができるすべての例は、入力データポートと出力データポートを個別に使用することを示していますが、私の場合、双方向データバスとして使用することを余儀なくされています。

VHDLを使用しています。

生成されたコンポーネントの定義は次のとおりです。

これは次のようにインスタンス化されます。

dina誰かが私に接続しdoutainout呼ばれるポートに接続するプロセスブロックを見せてもらえますかdata

私は次のことを試しましたが、0%の成功でした:

ご協力いただきありがとうございます!

0 投票する
3 に答える
3704 参照

xilinx - この VHDL が XST で BRAM を推論しないのはなぜですか。

ISE 13.4 を使用する Virtex-5 のブロック RAM に格納したいベクターの配列があります。1 つの BRAM に収まるはずの 32Kb ですが、すべてロジックに格納されています。私のシステムは AMBA APB バスを使用しているので、select ラインと enable ラインをチェックします。このコードが BRAM を推論しない理由を理解してください。注: これはダミーの例であり、理解しやすく、他のコードで役立つはずです。

ram_style配列を次のように宣言しますblockが、XST レポートには次のように記載されています。WARNING:Xst:3211 - Cannot use block RAM resources for signal <Mram_memory>. Please check that the RAM contents is read synchronously.

問題は read_enable 状態にあるようですが、Virtex 5 ユーザー ガイドでは BRAM ハード ブロックにenableとがあるように見えます。write_enable私は常に出力を駆動することができましたが、私はしたくありません。それは電力を浪費します。他のアイデアはありますか?

0 投票する
2 に答える
932 参照

vhdl - VHDL コード合成エラー

PWM コントローラーの機能を実装する VHDL コードを作成しました。正常にシミュレートしましたが、結果は期待どおりです。合成の構文もチェックしましたが、エラーは表示されませんでした。XILINX ISE 12.4 を使用して合成しようとすると、合成されず、エラーが表示されます。

「エラー: Xst:827 - 67 行目: 信号 tmp_PC を合成できません。同期記述が正しくありません。同期要素 (レジスタ、メモリなど) を記述するために使用している記述スタイルは、現在のソフトウェア リリースではサポートされていません。」

エラーメッセージを調べてみましたが、異なる答えが得られました。考えられる理由は次のとおりです。1: 合成テンプレートに従っていない不適切な "IF" ネスティング。2: 通常の「(clk'event and clk='1')」の代わりに「risisng_edge(clk)」を使用。

正確な問題が何であるかはまだ完全にはわかりません。私が見落としている可能性のあるエラーを誰かが提案してくれると本当に助かります。