1/*
2 * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package com.sun.media.sound;
27
28import javax.sound.midi.MidiChannel;
29
30/**
31 * A MidiChannel proxy object used for external access to synthesizer internal
32 * channel objects.
33 *
34 * @author Karl Helgason
35 */
36public final class SoftChannelProxy implements MidiChannel {
37
38    private MidiChannel channel = null;
39
40    public MidiChannel getChannel() {
41        return channel;
42    }
43
44    public void setChannel(MidiChannel channel) {
45        this.channel = channel;
46    }
47
48    @Override
49    public void allNotesOff() {
50        if (channel == null)
51            return;
52        channel.allNotesOff();
53    }
54
55    @Override
56    public void allSoundOff() {
57        if (channel == null)
58            return;
59        channel.allSoundOff();
60    }
61
62    @Override
63    public void controlChange(int controller, int value) {
64        if (channel == null)
65            return;
66        channel.controlChange(controller, value);
67    }
68
69    @Override
70    public int getChannelPressure() {
71        if (channel == null)
72            return 0;
73        return channel.getChannelPressure();
74    }
75
76    @Override
77    public int getController(int controller) {
78        if (channel == null)
79            return 0;
80        return channel.getController(controller);
81    }
82
83    @Override
84    public boolean getMono() {
85        if (channel == null)
86            return false;
87        return channel.getMono();
88    }
89
90    @Override
91    public boolean getMute() {
92        if (channel == null)
93            return false;
94        return channel.getMute();
95    }
96
97    @Override
98    public boolean getOmni() {
99        if (channel == null)
100            return false;
101        return channel.getOmni();
102    }
103
104    @Override
105    public int getPitchBend() {
106        if (channel == null)
107            return 8192;
108        return channel.getPitchBend();
109    }
110
111    @Override
112    public int getPolyPressure(int noteNumber) {
113        if (channel == null)
114            return 0;
115        return channel.getPolyPressure(noteNumber);
116    }
117
118    @Override
119    public int getProgram() {
120        if (channel == null)
121            return 0;
122        return channel.getProgram();
123    }
124
125    @Override
126    public boolean getSolo() {
127        if (channel == null)
128            return false;
129        return channel.getSolo();
130    }
131
132    @Override
133    public boolean localControl(boolean on) {
134        if (channel == null)
135            return false;
136        return channel.localControl(on);
137    }
138
139    @Override
140    public void noteOff(int noteNumber) {
141        if (channel == null)
142            return;
143        channel.noteOff(noteNumber);
144    }
145
146    @Override
147    public void noteOff(int noteNumber, int velocity) {
148        if (channel == null)
149            return;
150        channel.noteOff(noteNumber, velocity);
151    }
152
153    @Override
154    public void noteOn(int noteNumber, int velocity) {
155        if (channel == null)
156            return;
157        channel.noteOn(noteNumber, velocity);
158    }
159
160    @Override
161    public void programChange(int program) {
162        if (channel == null)
163            return;
164        channel.programChange(program);
165    }
166
167    @Override
168    public void programChange(int bank, int program) {
169        if (channel == null)
170            return;
171        channel.programChange(bank, program);
172    }
173
174    @Override
175    public void resetAllControllers() {
176        if (channel == null)
177            return;
178        channel.resetAllControllers();
179    }
180
181    @Override
182    public void setChannelPressure(int pressure) {
183        if (channel == null)
184            return;
185        channel.setChannelPressure(pressure);
186    }
187
188    @Override
189    public void setMono(boolean on) {
190        if (channel == null)
191            return;
192        channel.setMono(on);
193    }
194
195    @Override
196    public void setMute(boolean mute) {
197        if (channel == null)
198            return;
199        channel.setMute(mute);
200    }
201
202    @Override
203    public void setOmni(boolean on) {
204        if (channel == null)
205            return;
206        channel.setOmni(on);
207    }
208
209    @Override
210    public void setPitchBend(int bend) {
211        if (channel == null)
212            return;
213        channel.setPitchBend(bend);
214    }
215
216    @Override
217    public void setPolyPressure(int noteNumber, int pressure) {
218        if (channel == null)
219            return;
220        channel.setPolyPressure(noteNumber, pressure);
221    }
222
223    @Override
224    public void setSolo(boolean soloState) {
225        if (channel == null)
226            return;
227        channel.setSolo(soloState);
228    }
229}
230