Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java
41159 views
1
/*
2
* Copyright (c) 2009, 2015, 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.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/* @test
25
@summary Test SoftChannel overflow test 2
26
@modules java.desktop/com.sun.media.sound
27
*/
28
29
import java.util.HashMap;
30
import java.util.Map;
31
32
import javax.sound.midi.MidiChannel;
33
import javax.sound.midi.Patch;
34
import javax.sound.midi.VoiceStatus;
35
import javax.sound.sampled.AudioFormat;
36
import javax.sound.sampled.AudioInputStream;
37
38
import com.sun.media.sound.AudioSynthesizer;
39
import com.sun.media.sound.SF2Instrument;
40
import com.sun.media.sound.SF2InstrumentRegion;
41
import com.sun.media.sound.SF2Layer;
42
import com.sun.media.sound.SF2LayerRegion;
43
import com.sun.media.sound.SF2Region;
44
import com.sun.media.sound.SF2Sample;
45
import com.sun.media.sound.SF2Soundbank;
46
import com.sun.media.sound.SoftSynthesizer;
47
48
public class NoteOverFlowTest2 {
49
50
public static void main(String[] args) throws Exception
51
{
52
// Create instance of the synthesizer with very low polyphony
53
AudioSynthesizer synth = new SoftSynthesizer();
54
AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
55
Map<String, Object> p = new HashMap<String, Object>();
56
p.put("max polyphony", new Integer(5));
57
AudioInputStream stream = synth.openStream(format, p);
58
59
// Create instrument with too many regions (more than max polyphony)
60
SF2Soundbank sf2 = new SF2Soundbank();
61
62
SF2Sample sample = new SF2Sample(sf2);
63
sample.setName("test sample");
64
sample.setData(new byte[100]);
65
sample.setSampleRate(44100);
66
sample.setOriginalPitch(20);
67
sf2.addResource(sample);
68
69
SF2Layer layer = new SF2Layer(sf2);
70
layer.setName("test layer");
71
sf2.addResource(layer);
72
73
for (int i = 0; i < 100; i++) {
74
SF2LayerRegion region = new SF2LayerRegion();
75
region.setSample(sample);
76
layer.getRegions().add(region);
77
}
78
79
SF2Instrument ins = new SF2Instrument(sf2);
80
ins.setPatch(new Patch(0,0));
81
ins.setName("test instrument");
82
sf2.addInstrument(ins);
83
84
SF2InstrumentRegion insregion = new SF2InstrumentRegion();
85
insregion.setLayer(layer);
86
ins.getRegions().add(insregion);
87
88
// Load the test soundbank into the synthesizer
89
synth.unloadAllInstruments(synth.getDefaultSoundbank());
90
synth.loadAllInstruments(sf2);
91
92
// Send out one midi on message
93
MidiChannel ch1 = synth.getChannels()[0];
94
ch1.programChange(0);
95
ch1.noteOn(64, 64);
96
97
// Read 1 sec from stream
98
stream.skip(format.getFrameSize() * ((int)(format.getFrameRate() * 2)));
99
100
// Close the synthesizer after use
101
synth.close();
102
}
103
}
104
105