aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/jsyn/scope/AudioScope.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/jsyn/scope/AudioScope.java')
-rw-r--r--src/main/java/com/jsyn/scope/AudioScope.java101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/main/java/com/jsyn/scope/AudioScope.java b/src/main/java/com/jsyn/scope/AudioScope.java
new file mode 100644
index 0000000..7b2a98c
--- /dev/null
+++ b/src/main/java/com/jsyn/scope/AudioScope.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2010 Phil Burk, Mobileer Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.jsyn.scope;
+
+import com.jsyn.Synthesizer;
+import com.jsyn.ports.UnitOutputPort;
+import com.jsyn.scope.swing.AudioScopeView;
+
+// TODO Auto and Manual triggers.
+// TODO Auto scaling of vertical.
+// TODO Fixed size Y scale knobs.
+// TODO Pan back and forth around trigger.
+// TODO Continuous capture
+/**
+ * Digital oscilloscope for JSyn.
+ *
+ * @author Phil Burk (C) 2010 Mobileer Inc
+ */
+public class AudioScope {
+ public enum TriggerMode {
+ AUTO, NORMAL // , MANUAL
+ }
+
+ public enum ViewMode {
+ WAVEFORM, SPECTRUM
+ }
+
+ private AudioScopeView audioScopeView = null;
+ private AudioScopeModel audioScopeModel;
+
+ public AudioScope(Synthesizer synth) {
+ audioScopeModel = new AudioScopeModel(synth);
+ }
+
+ public AudioScopeProbe addProbe(UnitOutputPort output) {
+ return addProbe(output, 0);
+ }
+
+ public AudioScopeProbe addProbe(UnitOutputPort output, int partIndex) {
+ return audioScopeModel.addProbe(output, partIndex);
+ }
+
+ public void start() {
+ audioScopeModel.start();
+ }
+
+ public void stop() {
+ audioScopeModel.stop();
+ }
+
+ public AudioScopeModel getModel() {
+ return audioScopeModel;
+ }
+
+ public AudioScopeView getView() {
+ if (audioScopeView == null) {
+ audioScopeView = new AudioScopeView();
+ audioScopeView.setModel(audioScopeModel);
+ }
+ return audioScopeView;
+ }
+
+ public void setTriggerMode(TriggerMode triggerMode) {
+ audioScopeModel.setTriggerMode(triggerMode);
+ }
+
+ public void setTriggerSource(AudioScopeProbe probe) {
+ audioScopeModel.setTriggerSource(probe);
+ }
+
+ public void setTriggerLevel(double level) {
+ getModel().getTriggerModel().getLevelModel().setDoubleValue(level);
+ }
+
+ public double getTriggerLevel() {
+ return getModel().getTriggerModel().getLevelModel().getDoubleValue();
+ }
+
+ /**
+ * Not yet implemented.
+ * @param viewMode
+ */
+ public void setViewMode(ViewMode viewMode) {
+ // TODO Auto-generated method stub
+ }
+
+}