1 |
iliev |
596 |
/* |
2 |
|
|
* jlscp - a java LinuxSampler control protocol API |
3 |
|
|
* |
4 |
iliev |
1139 |
* Copyright (C) 2005-2007 Grigor Iliev <grigor@grigoriliev.com> |
5 |
iliev |
596 |
* |
6 |
|
|
* This file is part of jlscp. |
7 |
|
|
* |
8 |
|
|
* jlscp is free software; you can redistribute it and/or modify |
9 |
|
|
* it under the terms of the GNU General Public License version 2 |
10 |
|
|
* as published by the Free Software Foundation. |
11 |
|
|
* |
12 |
|
|
* jlscp is distributed in the hope that it will be useful, |
13 |
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
|
|
* GNU General Public License for more details. |
16 |
|
|
* |
17 |
|
|
* You should have received a copy of the GNU General Public License |
18 |
|
|
* along with jlscp; if not, write to the Free Software |
19 |
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
20 |
|
|
* MA 02111-1307 USA |
21 |
|
|
*/ |
22 |
|
|
|
23 |
|
|
import java.util.logging.Handler; |
24 |
|
|
import java.util.logging.Logger; |
25 |
|
|
import java.util.logging.SimpleFormatter; |
26 |
|
|
import java.util.logging.StreamHandler; |
27 |
|
|
|
28 |
|
|
import org.linuxsampler.lscp.*; |
29 |
|
|
|
30 |
|
|
|
31 |
|
|
/** |
32 |
|
|
* This class creates one MIDI input device, one audio output device and one sampler channel. |
33 |
|
|
* Then set the MIDI input device and the audio output device of the created sampler channel |
34 |
|
|
* with the newly created devices. Loads sampler engine and the specified instrument. |
35 |
|
|
* @author Grigor Iliev |
36 |
|
|
*/ |
37 |
|
|
public class CreateChannel { |
38 |
|
|
public static void |
39 |
|
|
main(String[] args) { |
40 |
|
|
if(args.length != 2) { |
41 |
|
|
System.out.println("Usage: CreateChannel instrument-file instrument-index"); |
42 |
|
|
return; |
43 |
|
|
} |
44 |
|
|
|
45 |
|
|
initLogger(); |
46 |
|
|
Client client = new Client(); |
47 |
|
|
|
48 |
|
|
try { |
49 |
|
|
client.connect(); |
50 |
|
|
|
51 |
|
|
int mDev, aDev, chn; |
52 |
|
|
|
53 |
|
|
// Creates new MIDI input device using the first availble MIDI driver |
54 |
iliev |
671 |
mDev =client.createMidiInputDevice ( |
55 |
|
|
client.getMidiInputDrivers()[0].getName() |
56 |
|
|
); |
57 |
iliev |
596 |
|
58 |
|
|
// Creates new audio output device using the first audio output driver |
59 |
iliev |
671 |
aDev = client.createAudioOutputDevice ( |
60 |
|
|
client.getAudioOutputDrivers()[0].getName() |
61 |
|
|
); |
62 |
iliev |
596 |
|
63 |
|
|
// Creates new sampler channel |
64 |
|
|
chn = client.addSamplerChannel(); |
65 |
|
|
|
66 |
|
|
// Setting the MIDI input device of the channel |
67 |
|
|
client.setChannelMidiInputDevice(chn, mDev); |
68 |
|
|
|
69 |
|
|
// Setting the audio output device of the channel |
70 |
|
|
client.setChannelAudioOutputDevice(chn, aDev); |
71 |
|
|
|
72 |
|
|
// Setting the engine type |
73 |
iliev |
671 |
client.loadSamplerEngine(client.getEngines()[0].getName(), chn); |
74 |
iliev |
596 |
|
75 |
|
|
// Loading instrument |
76 |
|
|
client.loadInstrument(args[0], Integer.parseInt(args[1]), chn); |
77 |
|
|
|
78 |
|
|
client.disconnect(); |
79 |
|
|
System.exit(0); |
80 |
|
|
} catch(Exception x) { |
81 |
|
|
x.printStackTrace(); |
82 |
|
|
} |
83 |
|
|
|
84 |
|
|
System.exit(-1); |
85 |
|
|
} |
86 |
|
|
|
87 |
|
|
private static void |
88 |
|
|
initLogger() { |
89 |
|
|
final Handler handler = new StreamHandler(System.out, new SimpleFormatter()); |
90 |
|
|
Logger.getLogger("org.linuxsampler.lscp").addHandler(handler); |
91 |
|
|
|
92 |
|
|
// Flushing logs on every second |
93 |
|
|
new java.util.Timer().schedule(new java.util.TimerTask() { |
94 |
|
|
public void |
95 |
|
|
run() { handler.flush(); } |
96 |
|
|
}, 1000, 1000); |
97 |
|
|
} |
98 |
|
|
} |