Как добавить осциллограф jsyn в зубчатую пилу Jsyn
Для какой-то работы в колледже я делаю Java VST/ синтезатор. У меня есть осцилляторы, производящие звуки и меняющие частоту до желаемых значений, когда необходимо изменить высоту тона, но мне бы хотелось, чтобы на экране был визуальный осциллограф, где есть все возможности для редактирования звука. Как я мог это сделать? Вот код, из которого генерируется и воспроизводится звук 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");
}
}
заранее спасибо
1 ответ
На 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());