java - 如何将 jsyn 示波器添加到 Jsyn SawTooth
问题描述
对于一些大学工作,我正在制作一个 java VST/Synthesizer。当需要更改音高时,我已经让振荡器产生声音并将频率更改为所需的值,但我希望在屏幕上有一个视觉示波器,所有选项都用于编辑声音。我怎么能这样做?以下是生成和播放 SawTooth 声音的代码,以防万一:
import com.jsyn.JSyn;
import com.jsyn.Synthesizer;
import com.jsyn.unitgen.LineOut;
import com.jsyn.unitgen.SawtoothOscillatorBL;
import com.jsyn.unitgen.UnitOscillator;
public class SawTooth {
public static Synthesizer synth = JSyn.createSynthesizer();
public static UnitOscillator osc;
public static LineOut lineout;
public static double Frequency = 261.626;
public static double Amplitude = 0.6;
public static int Voices = 1;
public static void Play() {
synth.start();
synth.add(osc = new SawtoothOscillatorBL());
synth.add(lineout = new LineOut());
osc.output.connect(0, lineout.input, 0);
osc.output.connect(0, lineout.input, 1);
osc.frequency.set(Frequency);
osc.amplitude.set(Amplitude);
lineout.start();
System.out.println("Wave Playing");
}
}
提前致谢
解决方案
GitHub 上有一个示例程序,展示了如何添加范围。它包括一些用于控制声音的推子。
https://github.com/philburk/jsyn/blob/master/tests/com/jsyn/examples/SeeGoogleWave.java
以下是主要步骤:
AudioScope scope = new AudioScope(synth);
// Add a scope trace that will be driven by an output port.
scope.addProbe(oscillator.output);
// Trigger on a rising edge.
scope.setTriggerMode(AudioScope.TriggerMode.NORMAL);
// Turn off scope controls if you want a cleaner UI.
scope.getView().setShowControls(false);
// Start a thread that will periodically update the scope.
scope.start();
// Add the scope's View to your UI
add(BorderLayout.CENTER, scope.getView());
推荐阅读
- python - Python 检查参数是按位置还是按关键字传入
- ios - 对未在 SwiftUI 中发布的结构的更改
- javascript - 文本输入不更新值
- c# - Opengl OpenTK - 绘制深度缓冲区时出现白屏
- python - 列表元素配置
- python - 即使失败,Python 服务也会被重新报告为成功
- wordpress - 使用 OpenLiteSpeed Cache 处理时间敏感数据的缓存
- c - C11, 6.6.10:IB:其他形式的常量表达式:需要额外的一致性文档
- php - xpath php - LIBXML_HTML_NOIMPLIED 的问题
- google-app-engine - Google Cloud Platform REST API:获取访问令牌和 API 密钥