• R/O
  • SSH
  • HTTPS

midicrossport: Commit


Commit MetaInfo

Revision78 (tree)
Zeit2019-09-07 06:41:22
Autorflowflower

Log Message

under progress

Ändern Zusammenfassung

Diff

--- working-not-tested/CrossControl1.xml (revision 77)
+++ working-not-tested/CrossControl1.xml (nonexistent)
@@ -1,296 +0,0 @@
1-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-<document>
3- <tag-name>tag-value</tag-name>
4- <CrossControl input="*Sequencer*">
5- <CrossLine id="1">
6- <monitoringChannel>0</monitoringChannel>
7- <messageStatus>176</messageStatus>
8- <parameter1>7</parameter1>
9- <valueName>channelVolume</valueName>
10- <valueCurrent>127</valueCurrent>
11- <valueResetPosition>127</valueResetPosition>
12- <valueMin>0</valueMin>
13- <valueMax>127</valueMax>
14- </CrossLine>
15- <CrossLine id="2">
16- <monitoringChannel>0</monitoringChannel>
17- <messageStatus>176</messageStatus>
18- <parameter1>1</parameter1>
19- <valueName>modulation</valueName>
20- <valueCurrent>0</valueCurrent>
21- <valueResetPosition>0</valueResetPosition>
22- <valueMin>0</valueMin>
23- <valueMax>127</valueMax>
24- </CrossLine>
25- <CrossLine id="3">
26- <monitoringChannel>0</monitoringChannel>
27- <messageStatus>224</messageStatus>
28- <parameter1>0</parameter1>
29- <valueName>pitchWheel</valueName>
30- <valueCurrent>8192</valueCurrent>
31- <valueResetPosition>8192</valueResetPosition>
32- <valueMin>0</valueMin>
33- <valueMax>16383</valueMax>
34- </CrossLine>
35- <CrossLine id="4">
36- <monitoringChannel>0</monitoringChannel>
37- <messageStatus>176</messageStatus>
38- <parameter1>73</parameter1>
39- <valueName>attackTime</valueName>
40- <valueCurrent>64</valueCurrent>
41- <valueResetPosition>64</valueResetPosition>
42- <valueMin>0</valueMin>
43- <valueMax>127</valueMax>
44- </CrossLine>
45- <CrossLine id="5">
46- <monitoringChannel>0</monitoringChannel>
47- <messageStatus>176</messageStatus>
48- <parameter1>74</parameter1>
49- <valueName>blightness</valueName>
50- <valueCurrent>64</valueCurrent>
51- <valueResetPosition>64</valueResetPosition>
52- <valueMin>0</valueMin>
53- <valueMax>127</valueMax>
54- </CrossLine>
55- <CrossLine id="6">
56- <monitoringChannel>1</monitoringChannel>
57- <messageStatus>177</messageStatus>
58- <parameter1>7</parameter1>
59- <valueName>channelVolume</valueName>
60- <valueCurrent>127</valueCurrent>
61- <valueResetPosition>127</valueResetPosition>
62- <valueMin>0</valueMin>
63- <valueMax>127</valueMax>
64- </CrossLine>
65- <CrossLine id="7">
66- <monitoringChannel>1</monitoringChannel>
67- <messageStatus>177</messageStatus>
68- <parameter1>1</parameter1>
69- <valueName>modulation</valueName>
70- <valueCurrent>0</valueCurrent>
71- <valueResetPosition>0</valueResetPosition>
72- <valueMin>0</valueMin>
73- <valueMax>127</valueMax>
74- </CrossLine>
75- <CrossLine id="8">
76- <monitoringChannel>1</monitoringChannel>
77- <messageStatus>225</messageStatus>
78- <parameter1>0</parameter1>
79- <valueName>pitchWheel</valueName>
80- <valueCurrent>8192</valueCurrent>
81- <valueResetPosition>8192</valueResetPosition>
82- <valueMin>0</valueMin>
83- <valueMax>16383</valueMax>
84- </CrossLine>
85- <CrossLine id="9">
86- <monitoringChannel>1</monitoringChannel>
87- <messageStatus>177</messageStatus>
88- <parameter1>73</parameter1>
89- <valueName>attackTime</valueName>
90- <valueCurrent>64</valueCurrent>
91- <valueResetPosition>64</valueResetPosition>
92- <valueMin>0</valueMin>
93- <valueMax>127</valueMax>
94- </CrossLine>
95- <CrossLine id="10">
96- <monitoringChannel>1</monitoringChannel>
97- <messageStatus>177</messageStatus>
98- <parameter1>74</parameter1>
99- <valueName>blightness</valueName>
100- <valueCurrent>64</valueCurrent>
101- <valueResetPosition>64</valueResetPosition>
102- <valueMin>0</valueMin>
103- <valueMax>127</valueMax>
104- </CrossLine>
105- <CrossCircle id="1">
106- <monitoringChannel>0</monitoringChannel>
107- <messageStatus>176</messageStatus>
108- <parameter1>91</parameter1>
109- <valueName>reverve</valueName>
110- <valueCurrent>0</valueCurrent>
111- <valueResetPosition>0</valueResetPosition>
112- <valueMin>0</valueMin>
113- <valueMax>127</valueMax>
114- </CrossCircle>
115- <CrossCircle id="2">
116- <monitoringChannel>0</monitoringChannel>
117- <messageStatus>176</messageStatus>
118- <parameter1>93</parameter1>
119- <valueName>chorus</valueName>
120- <valueCurrent>0</valueCurrent>
121- <valueResetPosition>0</valueResetPosition>
122- <valueMin>0</valueMin>
123- <valueMax>127</valueMax>
124- </CrossCircle>
125- <CrossCircle id="3">
126- <monitoringChannel>0</monitoringChannel>
127- <messageStatus>176</messageStatus>
128- <parameter1>95</parameter1>
129- <valueName>phaser</valueName>
130- <valueCurrent>0</valueCurrent>
131- <valueResetPosition>0</valueResetPosition>
132- <valueMin>0</valueMin>
133- <valueMax>127</valueMax>
134- </CrossCircle>
135- <CrossCircle id="4">
136- <monitoringChannel>0</monitoringChannel>
137- <messageStatus>176</messageStatus>
138- <parameter1>76</parameter1>
139- <valueName>vibrateRate</valueName>
140- <valueCurrent>0</valueCurrent>
141- <valueResetPosition>0</valueResetPosition>
142- <valueMin>0</valueMin>
143- <valueMax>127</valueMax>
144- </CrossCircle>
145- <CrossCircle id="5">
146- <monitoringChannel>0</monitoringChannel>
147- <messageStatus>176</messageStatus>
148- <parameter1>77</parameter1>
149- <valueName>vibrateDepth</valueName>
150- <valueCurrent>0</valueCurrent>
151- <valueResetPosition>0</valueResetPosition>
152- <valueMin>0</valueMin>
153- <valueMax>127</valueMax>
154- </CrossCircle>
155- <CrossCircle id="6">
156- <monitoringChannel>1</monitoringChannel>
157- <messageStatus>177</messageStatus>
158- <parameter1>91</parameter1>
159- <valueName>reverve</valueName>
160- <valueCurrent>0</valueCurrent>
161- <valueResetPosition>0</valueResetPosition>
162- <valueMin>0</valueMin>
163- <valueMax>127</valueMax>
164- </CrossCircle>
165- <CrossCircle id="7">
166- <monitoringChannel>1</monitoringChannel>
167- <messageStatus>177</messageStatus>
168- <parameter1>93</parameter1>
169- <valueName>chorus</valueName>
170- <valueCurrent>0</valueCurrent>
171- <valueResetPosition>0</valueResetPosition>
172- <valueMin>0</valueMin>
173- <valueMax>127</valueMax>
174- </CrossCircle>
175- <CrossCircle id="8">
176- <monitoringChannel>1</monitoringChannel>
177- <messageStatus>177</messageStatus>
178- <parameter1>95</parameter1>
179- <valueName>phaser</valueName>
180- <valueCurrent>0</valueCurrent>
181- <valueResetPosition>0</valueResetPosition>
182- <valueMin>0</valueMin>
183- <valueMax>127</valueMax>
184- </CrossCircle>
185- <CrossCircle id="9">
186- <monitoringChannel>1</monitoringChannel>
187- <messageStatus>177</messageStatus>
188- <parameter1>76</parameter1>
189- <valueName>vibrateRate</valueName>
190- <valueCurrent>0</valueCurrent>
191- <valueResetPosition>0</valueResetPosition>
192- <valueMin>0</valueMin>
193- <valueMax>127</valueMax>
194- </CrossCircle>
195- <CrossCircle id="10">
196- <monitoringChannel>1</monitoringChannel>
197- <messageStatus>177</messageStatus>
198- <parameter1>77</parameter1>
199- <valueName>vibrateDepth</valueName>
200- <valueCurrent>0</valueCurrent>
201- <valueResetPosition>0</valueResetPosition>
202- <valueMin>0</valueMin>
203- <valueMax>127</valueMax>
204- </CrossCircle>
205- <CrossRhythm id="1">
206- <channel>0</channel>
207- <type>0</type>
208- <NoteOrCCNumber>51</NoteOrCCNumber>
209- <scanToggle>false</scanToggle>
210- <onValue>127</onValue>
211- <offValue>0</offValue>
212- <uiVelocity>100</uiVelocity>
213- </CrossRhythm>
214- <CrossRhythm id="2">
215- <channel>0</channel>
216- <type>0</type>
217- <NoteOrCCNumber>48</NoteOrCCNumber>
218- <scanToggle>false</scanToggle>
219- <onValue>127</onValue>
220- <offValue>0</offValue>
221- <uiVelocity>100</uiVelocity>
222- </CrossRhythm>
223- <CrossRhythm id="3">
224- <channel>9</channel>
225- <type>0</type>
226- <NoteOrCCNumber>60</NoteOrCCNumber>
227- <scanToggle>false</scanToggle>
228- <onValue>127</onValue>
229- <offValue>0</offValue>
230- <uiVelocity>100</uiVelocity>
231- </CrossRhythm>
232- <CrossRhythm id="4">
233- <channel>9</channel>
234- <type>0</type>
235- <NoteOrCCNumber>61</NoteOrCCNumber>
236- <scanToggle>false</scanToggle>
237- <onValue>127</onValue>
238- <offValue>0</offValue>
239- <uiVelocity>100</uiVelocity>
240- </CrossRhythm>
241- <CrossRhythm id="5">
242- <channel>9</channel>
243- <type>0</type>
244- <NoteOrCCNumber>62</NoteOrCCNumber>
245- <scanToggle>false</scanToggle>
246- <onValue>127</onValue>
247- <offValue>0</offValue>
248- <uiVelocity>100</uiVelocity>
249- </CrossRhythm>
250- <CrossRhythm id="6">
251- <channel>9</channel>
252- <type>0</type>
253- <NoteOrCCNumber>63</NoteOrCCNumber>
254- <scanToggle>false</scanToggle>
255- <onValue>127</onValue>
256- <offValue>0</offValue>
257- <uiVelocity>100</uiVelocity>
258- </CrossRhythm>
259- <CrossRhythm id="7">
260- <channel>9</channel>
261- <type>0</type>
262- <NoteOrCCNumber>64</NoteOrCCNumber>
263- <scanToggle>false</scanToggle>
264- <onValue>127</onValue>
265- <offValue>0</offValue>
266- <uiVelocity>100</uiVelocity>
267- </CrossRhythm>
268- <CrossRhythm id="8">
269- <channel>9</channel>
270- <type>0</type>
271- <NoteOrCCNumber>65</NoteOrCCNumber>
272- <scanToggle>false</scanToggle>
273- <onValue>127</onValue>
274- <offValue>0</offValue>
275- <uiVelocity>100</uiVelocity>
276- </CrossRhythm>
277- <CrossRhythm id="9">
278- <channel>9</channel>
279- <type>0</type>
280- <NoteOrCCNumber>66</NoteOrCCNumber>
281- <scanToggle>false</scanToggle>
282- <onValue>127</onValue>
283- <offValue>0</offValue>
284- <uiVelocity>100</uiVelocity>
285- </CrossRhythm>
286- <CrossRhythm id="10">
287- <channel>9</channel>
288- <type>0</type>
289- <NoteOrCCNumber>67</NoteOrCCNumber>
290- <scanToggle>false</scanToggle>
291- <onValue>127</onValue>
292- <offValue>0</offValue>
293- <uiVelocity>100</uiVelocity>
294- </CrossRhythm>
295- </CrossControl>
296-</document>
--- working-not-tested/CrossControl2.xml (revision 77)
+++ working-not-tested/CrossControl2.xml (nonexistent)
@@ -1,296 +0,0 @@
1-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-<document>
3- <tag-name>tag-value</tag-name>
4- <CrossControl input="*Sequencer*">
5- <CrossLine id="1">
6- <monitoringChannel>0</monitoringChannel>
7- <messageStatus>176</messageStatus>
8- <parameter1>11</parameter1>
9- <valueName>expression</valueName>
10- <valueCurrent>127</valueCurrent>
11- <valueResetPosition>127</valueResetPosition>
12- <valueMin>0</valueMin>
13- <valueMax>127</valueMax>
14- </CrossLine>
15- <CrossLine id="2">
16- <monitoringChannel>1</monitoringChannel>
17- <messageStatus>177</messageStatus>
18- <parameter1>11</parameter1>
19- <valueName>expression</valueName>
20- <valueCurrent>127</valueCurrent>
21- <valueResetPosition>127</valueResetPosition>
22- <valueMin>0</valueMin>
23- <valueMax>127</valueMax>
24- </CrossLine>
25- <CrossLine id="3">
26- <monitoringChannel>2</monitoringChannel>
27- <messageStatus>178</messageStatus>
28- <parameter1>11</parameter1>
29- <valueName>expression</valueName>
30- <valueCurrent>127</valueCurrent>
31- <valueResetPosition>127</valueResetPosition>
32- <valueMin>0</valueMin>
33- <valueMax>127</valueMax>
34- </CrossLine>
35- <CrossLine id="4">
36- <monitoringChannel>3</monitoringChannel>
37- <messageStatus>179</messageStatus>
38- <parameter1>11</parameter1>
39- <valueName>expression</valueName>
40- <valueCurrent>127</valueCurrent>
41- <valueResetPosition>127</valueResetPosition>
42- <valueMin>0</valueMin>
43- <valueMax>127</valueMax>
44- </CrossLine>
45- <CrossLine id="5">
46- <monitoringChannel>4</monitoringChannel>
47- <messageStatus>180</messageStatus>
48- <parameter1>11</parameter1>
49- <valueName>expression</valueName>
50- <valueCurrent>127</valueCurrent>
51- <valueResetPosition>127</valueResetPosition>
52- <valueMin>0</valueMin>
53- <valueMax>127</valueMax>
54- </CrossLine>
55- <CrossLine id="6">
56- <monitoringChannel>5</monitoringChannel>
57- <messageStatus>181</messageStatus>
58- <parameter1>11</parameter1>
59- <valueName>expression</valueName>
60- <valueCurrent>127</valueCurrent>
61- <valueResetPosition>127</valueResetPosition>
62- <valueMin>0</valueMin>
63- <valueMax>127</valueMax>
64- </CrossLine>
65- <CrossLine id="7">
66- <monitoringChannel>6</monitoringChannel>
67- <messageStatus>182</messageStatus>
68- <parameter1>11</parameter1>
69- <valueName>expression</valueName>
70- <valueCurrent>127</valueCurrent>
71- <valueResetPosition>127</valueResetPosition>
72- <valueMin>0</valueMin>
73- <valueMax>127</valueMax>
74- </CrossLine>
75- <CrossLine id="8">
76- <monitoringChannel>7</monitoringChannel>
77- <messageStatus>183</messageStatus>
78- <parameter1>11</parameter1>
79- <valueName>expression</valueName>
80- <valueCurrent>127</valueCurrent>
81- <valueResetPosition>127</valueResetPosition>
82- <valueMin>0</valueMin>
83- <valueMax>127</valueMax>
84- </CrossLine>
85- <CrossLine id="9">
86- <monitoringChannel>8</monitoringChannel>
87- <messageStatus>184</messageStatus>
88- <parameter1>11</parameter1>
89- <valueName>expression</valueName>
90- <valueCurrent>127</valueCurrent>
91- <valueResetPosition>127</valueResetPosition>
92- <valueMin>0</valueMin>
93- <valueMax>127</valueMax>
94- </CrossLine>
95- <CrossLine id="10">
96- <monitoringChannel>9</monitoringChannel>
97- <messageStatus>185</messageStatus>
98- <parameter1>11</parameter1>
99- <valueName>expression</valueName>
100- <valueCurrent>127</valueCurrent>
101- <valueResetPosition>127</valueResetPosition>
102- <valueMin>0</valueMin>
103- <valueMax>127</valueMax>
104- </CrossLine>
105- <CrossCircle id="1">
106- <monitoringChannel>0</monitoringChannel>
107- <messageStatus>176</messageStatus>
108- <parameter1>10</parameter1>
109- <valueName>pan</valueName>
110- <valueCurrent>64</valueCurrent>
111- <valueResetPosition>64</valueResetPosition>
112- <valueMin>0</valueMin>
113- <valueMax>127</valueMax>
114- </CrossCircle>
115- <CrossCircle id="2">
116- <monitoringChannel>1</monitoringChannel>
117- <messageStatus>177</messageStatus>
118- <parameter1>10</parameter1>
119- <valueName>pan</valueName>
120- <valueCurrent>64</valueCurrent>
121- <valueResetPosition>64</valueResetPosition>
122- <valueMin>0</valueMin>
123- <valueMax>127</valueMax>
124- </CrossCircle>
125- <CrossCircle id="3">
126- <monitoringChannel>2</monitoringChannel>
127- <messageStatus>178</messageStatus>
128- <parameter1>10</parameter1>
129- <valueName>pan</valueName>
130- <valueCurrent>64</valueCurrent>
131- <valueResetPosition>64</valueResetPosition>
132- <valueMin>0</valueMin>
133- <valueMax>127</valueMax>
134- </CrossCircle>
135- <CrossCircle id="4">
136- <monitoringChannel>3</monitoringChannel>
137- <messageStatus>179</messageStatus>
138- <parameter1>10</parameter1>
139- <valueName>pan</valueName>
140- <valueCurrent>64</valueCurrent>
141- <valueResetPosition>64</valueResetPosition>
142- <valueMin>0</valueMin>
143- <valueMax>127</valueMax>
144- </CrossCircle>
145- <CrossCircle id="5">
146- <monitoringChannel>4</monitoringChannel>
147- <messageStatus>180</messageStatus>
148- <parameter1>10</parameter1>
149- <valueName>pan</valueName>
150- <valueCurrent>64</valueCurrent>
151- <valueResetPosition>64</valueResetPosition>
152- <valueMin>0</valueMin>
153- <valueMax>127</valueMax>
154- </CrossCircle>
155- <CrossCircle id="6">
156- <monitoringChannel>5</monitoringChannel>
157- <messageStatus>181</messageStatus>
158- <parameter1>10</parameter1>
159- <valueName>pan</valueName>
160- <valueCurrent>64</valueCurrent>
161- <valueResetPosition>64</valueResetPosition>
162- <valueMin>0</valueMin>
163- <valueMax>127</valueMax>
164- </CrossCircle>
165- <CrossCircle id="7">
166- <monitoringChannel>6</monitoringChannel>
167- <messageStatus>182</messageStatus>
168- <parameter1>10</parameter1>
169- <valueName>pan</valueName>
170- <valueCurrent>64</valueCurrent>
171- <valueResetPosition>64</valueResetPosition>
172- <valueMin>0</valueMin>
173- <valueMax>127</valueMax>
174- </CrossCircle>
175- <CrossCircle id="8">
176- <monitoringChannel>7</monitoringChannel>
177- <messageStatus>183</messageStatus>
178- <parameter1>10</parameter1>
179- <valueName>pan</valueName>
180- <valueCurrent>64</valueCurrent>
181- <valueResetPosition>64</valueResetPosition>
182- <valueMin>0</valueMin>
183- <valueMax>127</valueMax>
184- </CrossCircle>
185- <CrossCircle id="9">
186- <monitoringChannel>8</monitoringChannel>
187- <messageStatus>184</messageStatus>
188- <parameter1>10</parameter1>
189- <valueName>pan</valueName>
190- <valueCurrent>64</valueCurrent>
191- <valueResetPosition>64</valueResetPosition>
192- <valueMin>0</valueMin>
193- <valueMax>127</valueMax>
194- </CrossCircle>
195- <CrossCircle id="10">
196- <monitoringChannel>9</monitoringChannel>
197- <messageStatus>185</messageStatus>
198- <parameter1>10</parameter1>
199- <valueName>pan</valueName>
200- <valueCurrent>64</valueCurrent>
201- <valueResetPosition>64</valueResetPosition>
202- <valueMin>0</valueMin>
203- <valueMax>127</valueMax>
204- </CrossCircle>
205- <CrossRhythm id="1">
206- <channel>0</channel>
207- <type>1</type>
208- <NoteOrCCNumber>64</NoteOrCCNumber>
209- <scanToggle>true</scanToggle>
210- <onValue>127</onValue>
211- <offValue>0</offValue>
212- <uiVelocity>100</uiVelocity>
213- </CrossRhythm>
214- <CrossRhythm id="2">
215- <channel>0</channel>
216- <type>0</type>
217- <NoteOrCCNumber>60</NoteOrCCNumber>
218- <scanToggle>false</scanToggle>
219- <onValue>127</onValue>
220- <offValue>0</offValue>
221- <uiVelocity>100</uiVelocity>
222- </CrossRhythm>
223- <CrossRhythm id="3">
224- <channel>9</channel>
225- <type>0</type>
226- <NoteOrCCNumber>60</NoteOrCCNumber>
227- <scanToggle>false</scanToggle>
228- <onValue>127</onValue>
229- <offValue>0</offValue>
230- <uiVelocity>100</uiVelocity>
231- </CrossRhythm>
232- <CrossRhythm id="4">
233- <channel>9</channel>
234- <type>0</type>
235- <NoteOrCCNumber>61</NoteOrCCNumber>
236- <scanToggle>false</scanToggle>
237- <onValue>127</onValue>
238- <offValue>0</offValue>
239- <uiVelocity>100</uiVelocity>
240- </CrossRhythm>
241- <CrossRhythm id="5">
242- <channel>9</channel>
243- <type>0</type>
244- <NoteOrCCNumber>62</NoteOrCCNumber>
245- <scanToggle>false</scanToggle>
246- <onValue>127</onValue>
247- <offValue>0</offValue>
248- <uiVelocity>100</uiVelocity>
249- </CrossRhythm>
250- <CrossRhythm id="6">
251- <channel>9</channel>
252- <type>0</type>
253- <NoteOrCCNumber>63</NoteOrCCNumber>
254- <scanToggle>false</scanToggle>
255- <onValue>127</onValue>
256- <offValue>0</offValue>
257- <uiVelocity>100</uiVelocity>
258- </CrossRhythm>
259- <CrossRhythm id="7">
260- <channel>9</channel>
261- <type>0</type>
262- <NoteOrCCNumber>64</NoteOrCCNumber>
263- <scanToggle>false</scanToggle>
264- <onValue>127</onValue>
265- <offValue>0</offValue>
266- <uiVelocity>100</uiVelocity>
267- </CrossRhythm>
268- <CrossRhythm id="8">
269- <channel>9</channel>
270- <type>0</type>
271- <NoteOrCCNumber>65</NoteOrCCNumber>
272- <scanToggle>false</scanToggle>
273- <onValue>127</onValue>
274- <offValue>0</offValue>
275- <uiVelocity>100</uiVelocity>
276- </CrossRhythm>
277- <CrossRhythm id="9">
278- <channel>9</channel>
279- <type>0</type>
280- <NoteOrCCNumber>66</NoteOrCCNumber>
281- <scanToggle>false</scanToggle>
282- <onValue>127</onValue>
283- <offValue>0</offValue>
284- <uiVelocity>100</uiVelocity>
285- </CrossRhythm>
286- <CrossRhythm id="10">
287- <channel>9</channel>
288- <type>0</type>
289- <NoteOrCCNumber>67</NoteOrCCNumber>
290- <scanToggle>false</scanToggle>
291- <onValue>127</onValue>
292- <offValue>0</offValue>
293- <uiVelocity>100</uiVelocity>
294- </CrossRhythm>
295- </CrossControl>
296-</document>
--- working-not-tested/build/depcache/dependencies.txt (revision 77)
+++ working-not-tested/build/depcache/dependencies.txt (revision 78)
@@ -9,8 +9,10 @@
99 net.osdn.projects.midicrossport.midi.XOutput
1010 net.osdn.projects.midicrossport.utilities.ICell
1111 java.lang.String
12+java.lang.invoke.MethodHandles$Lookup
1213 java.util.Iterator
1314 net.osdn.projects.midicrossport.utilities.ExceptionView
15+java.lang.invoke.MethodHandles
1416 javax.swing.JList
1517 net.osdn.projects.midicrossport.midi.MidiDevicePicker$3
1618 net.osdn.projects.midicrossport.midi.XInput
@@ -28,7 +30,7 @@
2830 net.osdn.projects.midicrossport.swing.CheckBoxListCellRenderer
2931 net.osdn.projects.midicrossport.midi.MidiDevicePicker$5
3032 javax.swing.JCheckBox
31-java.lang.StringBuilder
33+java.lang.invoke.StringConcatFactory
3234 java.awt.GridBagLayout
3335 net.osdn.projects.midicrossport.utilities.CellList
3436 javax.swing.JPanel
@@ -52,9 +54,11 @@
5254 net.osdn.projects.midicrossport.utilities.ICell
5355 ||:net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers
5456 java.io.PrintStream
57+java.lang.invoke.MethodHandles$Lookup
5558 java.lang.System
56-java.lang.StringBuilder
59+java.lang.invoke.MethodHandles
5760 net.osdn.projects.midicrossport.utilities.ICell
61+java.lang.invoke.StringConcatFactory
5862 net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers
5963 net.osdn.projects.midicrossport.midi.programlist.ProgramList
6064 ||:net.osdn.projects.midicrossport.midi.programlist.ProgramList
@@ -72,22 +76,26 @@
7276 ||:net.osdn.projects.midicrossport.midi.XLetter
7377 net.osdn.projects.midicrossport.XStatic
7478 javax.sound.midi.ShortMessage
75-java.lang.StringBuilder
79+java.lang.invoke.MethodHandles$Lookup
80+java.lang.invoke.MethodHandles
7681 java.lang.Object
7782 java.lang.String
83+java.lang.invoke.StringConcatFactory
7884 net.osdn.projects.midicrossport.midi.XLetter
7985 ||:net.osdn.projects.midicrossport.utilities.MessageQueue$1
8086 java.io.PrintStream
81-net.osdn.projects.midicrossport.utilities.MessageQueue$1
87+java.lang.invoke.MethodHandles$Lookup
8288 net.osdn.projects.midicrossport.utilities.ExceptionView
83-java.lang.InterruptedException
8489 java.lang.System
85-java.lang.Thread
86-java.lang.StringBuilder
87-java.lang.Object
90+java.lang.invoke.MethodHandles
8891 net.osdn.projects.midicrossport.utilities.MessageQueue
8992 java.lang.Integer
9093 java.lang.Runnable
94+net.osdn.projects.midicrossport.utilities.MessageQueue$1
95+java.lang.InterruptedException
96+java.lang.Thread
97+java.lang.Object
98+java.lang.invoke.StringConcatFactory
9199 ||:net.osdn.projects.midicrossport.utilities.MessageQueue$2
92100 net.osdn.projects.midicrossport.utilities.MessageQueue$2
93101 java.lang.InterruptedException
@@ -102,9 +110,11 @@
102110 ||:net.osdn.projects.midicrossport.XStatic
103111 net.osdn.projects.midicrossport.XStatic
104112 javax.sound.midi.ShortMessage
105-java.lang.StringBuilder
113+java.lang.invoke.MethodHandles$Lookup
114+java.lang.invoke.MethodHandles
106115 java.lang.Object
107116 java.lang.String
117+java.lang.invoke.StringConcatFactory
108118 java.lang.Integer
109119 ||:net.osdn.projects.midicrossport.midi.XInput
110120 net.osdn.projects.midicrossport.midi.XInput$1
@@ -128,6 +138,30 @@
128138 java.lang.Runnable
129139 javax.swing.JProgressBar
130140 java.lang.Exception
141+||:net.osdn.projects.midicrossport.swing.CurvedSlider
142+javax.swing.event.ChangeEvent
143+java.awt.Color
144+java.awt.geom.Ellipse2D$Double
145+java.awt.geom.Line2D
146+java.awt.geom.Area
147+java.awt.RenderingHints
148+java.awt.Point
149+net.osdn.projects.midicrossport.swing.CurvedSlider
150+java.awt.event.MouseEvent
151+java.util.ArrayList
152+java.awt.Dimension
153+java.awt.geom.Arc2D$Double
154+java.awt.geom.Line2D$Double
155+java.awt.geom.Ellipse2D
156+java.awt.Graphics2D
157+java.awt.event.MouseMotionListener
158+java.awt.geom.Arc2D
159+java.awt.RenderingHints$Key
160+java.lang.Math
161+java.awt.BasicStroke
162+javax.swing.event.ChangeListener
163+javax.swing.JPanel
164+java.awt.event.MouseListener
131165 ||:net.osdn.projects.midicrossport.Main
132166 java.lang.Throwable
133167 javax.swing.UIManager
@@ -164,6 +198,7 @@
164198 net.osdn.projects.midicrossport.crossplayer.CrossPlayerRhythm
165199 javax.swing.BoxLayout
166200 ||:net.osdn.projects.midicrossport.midi.XInputThread$1
201+java.lang.Throwable
167202 net.osdn.projects.midicrossport.midi.XInputThread$1
168203 java.lang.Thread
169204 net.osdn.projects.midicrossport.midi.XInputThread
@@ -173,14 +208,16 @@
173208 java.io.PrintStream
174209 net.osdn.projects.midicrossport.XStatic
175210 javax.sound.midi.ShortMessage
176-net.osdn.projects.midicrossport.midi.XNumber
211+java.lang.invoke.MethodHandles$Lookup
177212 javax.sound.midi.InvalidMidiDataException
178213 java.lang.System
179-java.lang.StringBuilder
180-java.lang.Object
214+java.lang.invoke.MethodHandles
181215 java.lang.IllegalArgumentException
182216 java.lang.NullPointerException
183217 net.osdn.projects.midicrossport.midi.XLetter
218+net.osdn.projects.midicrossport.midi.XNumber
219+java.lang.Object
220+java.lang.invoke.StringConcatFactory
184221 ||:net.osdn.projects.midicrossport.utilities.CSVTool
185222 java.lang.System
186223 [B
@@ -195,6 +232,7 @@
195232 javax.swing.JSplitPane
196233 javax.swing.tree.TreeModel
197234 net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers
235+java.lang.Integer
198236 net.osdn.projects.midicrossport.swing.CrossUITool
199237 java.util.ArrayList
200238 net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$4
@@ -203,14 +241,16 @@
203241 net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$2
204242 java.lang.StringBuffer
205243 net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$3
244+java.lang.String
206245 net.osdn.projects.midicrossport.utilities.ICell
207-java.lang.String
208246 javax.swing.JComboBox
209247 javax.swing.BoxLayout
210248 javax.swing.tree.DefaultTreeModel
211249 net.osdn.projects.midicrossport.crosssmodule.RiverOriginShape
212250 net.osdn.projects.midicrossport.XStatic
251+java.lang.invoke.MethodHandles$Lookup
213252 javax.swing.JButton
253+java.lang.invoke.MethodHandles
214254 javax.swing.JList
215255 net.osdn.projects.midicrossport.midi.XInput
216256 javax.swing.BorderFactory
@@ -218,11 +258,12 @@
218258 javax.swing.JTree
219259 java.awt.GridBagConstraints
220260 javax.swing.JOptionPane
261+java.lang.Exception
221262 javax.swing.tree.DefaultMutableTreeNode
222263 javax.swing.JScrollPane
223264 javax.swing.DefaultListModel
224265 javax.swing.JLabel
225-java.lang.StringBuilder
266+java.lang.invoke.StringConcatFactory
226267 net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel
227268 java.awt.GridBagLayout
228269 javax.swing.JPanel
@@ -234,11 +275,14 @@
234275 net.osdn.projects.midicrossport.crosssmodule.CrossModule
235276 javax.sound.midi.InvalidMidiDataException
236277 net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection
278+net.osdn.projects.midicrossport.midi.NoteOffListener
237279 net.osdn.projects.midicrossport.midi.XLetter
238280 net.osdn.projects.midicrossport.swing.CrossUITool
239281 java.util.ArrayList
240282 net.osdn.projects.midicrossport.crosssmodule.CrossModule$1
241283 net.osdn.projects.midicrossport.midi.XOutputThread
284+net.osdn.projects.midicrossport.crosssmodule.CrossModule$3
285+net.osdn.projects.midicrossport.crosssmodule.CrossModule$2
242286 java.lang.Object
243287 net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel
244288 ||:net.osdn.projects.midicrossport.crosscontrol.XRhythm$1
@@ -263,6 +307,8 @@
263307 ||:net.osdn.projects.midicrossport.swing.CrossConsole
264308 net.osdn.projects.midicrossport.swing.CrossConsole$1
265309 net.osdn.projects.midicrossport.utilities.UIThread
310+java.lang.invoke.MethodHandles$Lookup
311+java.lang.invoke.MethodHandles
266312 java.time.LocalDateTime
267313 javax.swing.JList
268314 net.osdn.projects.midicrossport.utilities.MessageQueue
@@ -276,32 +322,10 @@
276322 net.osdn.projects.midicrossport.midi.XNumber
277323 java.lang.Thread
278324 javax.swing.event.ListDataEvent
279-java.lang.StringBuilder
280325 java.lang.Object
281326 java.lang.String
327+java.lang.invoke.StringConcatFactory
282328 javax.swing.ListModel
283-||:net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$1
284-java.awt.event.ActionListener
285-net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$1
286-java.lang.Object
287-net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel
288-||:net.osdn.projects.midicrossport.midi.XOutput
289-java.lang.Throwable
290-java.io.PrintStream
291-net.osdn.projects.midicrossport.XStatic
292-javax.sound.midi.ShortMessage
293-javax.sound.midi.MidiDevice
294-javax.sound.midi.InvalidMidiDataException
295-java.lang.System
296-javax.sound.midi.MidiUnavailableException
297-java.lang.Exception
298-net.osdn.projects.midicrossport.midi.XLetter
299-net.osdn.projects.midicrossport.swing.CrossConsole
300-net.osdn.projects.midicrossport.midi.XOutput
301-java.lang.Object
302-javax.sound.midi.Receiver
303-java.lang.String
304-net.osdn.projects.midicrossport.XResource
305329 ||:net.osdn.projects.midicrossport.swing.ProgressCircleUI
306330 java.awt.Color
307331 java.awt.Insets
@@ -331,6 +355,28 @@
331355 java.awt.Graphics
332356 java.awt.RenderingHints$Key
333357 javax.swing.JPanel
358+||:net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$1
359+java.awt.event.ActionListener
360+net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$1
361+java.lang.Object
362+net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel
363+||:net.osdn.projects.midicrossport.midi.XOutput
364+java.lang.Throwable
365+java.io.PrintStream
366+net.osdn.projects.midicrossport.XStatic
367+javax.sound.midi.ShortMessage
368+javax.sound.midi.MidiDevice
369+javax.sound.midi.InvalidMidiDataException
370+java.lang.System
371+javax.sound.midi.MidiUnavailableException
372+java.lang.Exception
373+net.osdn.projects.midicrossport.midi.XLetter
374+net.osdn.projects.midicrossport.swing.CrossConsole
375+net.osdn.projects.midicrossport.midi.XOutput
376+java.lang.Object
377+javax.sound.midi.Receiver
378+java.lang.String
379+net.osdn.projects.midicrossport.XResource
334380 ||:net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$2
335381 java.awt.event.ActionListener
336382 net.osdn.projects.midicrossport.crosssmodule.CrossModulePanel$2
@@ -374,10 +420,12 @@
374420 net.osdn.projects.midicrossport.XResource
375421 ||:net.osdn.projects.midicrossport.swing.AppCustomFileChooser
376422 net.osdn.projects.midicrossport.swing.AppCustomFileChooser
423+java.lang.invoke.MethodHandles$Lookup
377424 java.lang.StringBuffer
425+java.lang.invoke.MethodHandles
378426 [Ljava.io.File;
379-java.lang.StringBuilder
380427 javax.swing.JFileChooser
428+java.lang.invoke.StringConcatFactory
381429 javax.swing.JOptionPane
382430 java.lang.Integer
383431 java.io.File
@@ -391,15 +439,6 @@
391439 java.lang.Throwable
392440 net.osdn.projects.midicrossport.utilities.ExceptionView
393441 java.lang.Object
394-||:net.osdn.projects.midicrossport.crosscontrol.XLine$3
395-net.osdn.projects.midicrossport.crosscontrol.XLine
396-net.osdn.projects.midicrossport.crosscontrol.XLine$3
397-java.lang.Object
398-javax.swing.event.ChangeListener
399-||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$3
400-net.osdn.projects.midicrossport.midi.MidiDevicePicker
401-net.osdn.projects.midicrossport.midi.MidiDevicePicker$3
402-java.awt.event.MouseAdapter
403442 ||:net.osdn.projects.midicrossport.midi.XInputThread
404443 javax.sound.midi.ShortMessage
405444 net.osdn.projects.midicrossport.midi.XLetterCapture
@@ -417,11 +456,15 @@
417456 java.lang.Thread
418457 java.lang.Object
419458 net.osdn.projects.midicrossport.XResource
420-||:net.osdn.projects.midicrossport.crosscontrol.XLine$2
421-java.awt.event.ActionListener
459+||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$3
460+net.osdn.projects.midicrossport.midi.MidiDevicePicker
461+net.osdn.projects.midicrossport.midi.MidiDevicePicker$3
462+java.awt.event.MouseAdapter
463+||:net.osdn.projects.midicrossport.crosscontrol.XLine$3
422464 net.osdn.projects.midicrossport.crosscontrol.XLine
423-net.osdn.projects.midicrossport.crosscontrol.XLine$2
465+net.osdn.projects.midicrossport.crosscontrol.XLine$3
424466 java.lang.Object
467+javax.swing.event.ChangeListener
425468 ||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$4
426469 javax.swing.event.ChangeEvent
427470 net.osdn.projects.midicrossport.midi.MidiDevicePicker
@@ -429,11 +472,20 @@
429472 net.osdn.projects.midicrossport.midi.MidiDevicePicker$4
430473 java.lang.Object
431474 javax.swing.event.ChangeListener
475+||:net.osdn.projects.midicrossport.crosscontrol.XLine$2
476+java.awt.event.ActionListener
477+net.osdn.projects.midicrossport.crosscontrol.XLine
478+net.osdn.projects.midicrossport.crosscontrol.XLine$2
479+java.lang.Object
432480 ||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$1
433481 net.osdn.projects.midicrossport.midi.MidiDevicePicker
434482 java.awt.event.HierarchyListener
435483 net.osdn.projects.midicrossport.midi.MidiDevicePicker$1
436484 java.lang.Object
485+||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$2
486+net.osdn.projects.midicrossport.midi.MidiDevicePicker
487+java.awt.event.MouseAdapter
488+net.osdn.projects.midicrossport.midi.MidiDevicePicker$2
437489 ||:net.osdn.projects.midicrossport.crosscontrol.XLine$4
438490 net.osdn.projects.midicrossport.crosscontrol.XLine
439491 java.lang.Object
@@ -442,28 +494,36 @@
442494 ||:net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection
443495 net.osdn.projects.midicrossport.XStatic
444496 javax.sound.midi.ShortMessage
497+java.lang.invoke.MethodHandles$Lookup
445498 java.util.Iterator
446499 javax.sound.midi.InvalidMidiDataException
500+java.lang.invoke.MethodHandles
447501 net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection
448502 net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers
503+net.osdn.projects.midicrossport.midi.NoteOffListener
449504 net.osdn.projects.midicrossport.midi.XLetter
450505 java.util.ArrayList
451506 net.osdn.projects.midicrossport.midi.XOutput
452507 java.lang.StringBuffer
453-java.lang.StringBuilder
454508 java.lang.Object
455509 net.osdn.projects.midicrossport.utilities.ICell
510+java.lang.invoke.StringConcatFactory
456511 net.osdn.projects.midicrossport.XResource
457512 net.osdn.projects.midicrossport.crosssmodule.RiverOriginShape
458-||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$2
459-net.osdn.projects.midicrossport.midi.MidiDevicePicker
460-java.awt.event.MouseAdapter
461-net.osdn.projects.midicrossport.midi.MidiDevicePicker$2
513+net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection$1
462514 ||:net.osdn.projects.midicrossport.crosscontrol.XLine$1
463515 net.osdn.projects.midicrossport.crosscontrol.XLine
464516 java.lang.Object
465517 javax.swing.event.ChangeListener
466518 net.osdn.projects.midicrossport.crosscontrol.XLine$1
519+||:net.osdn.projects.midicrossport.midi.NoteOffListener
520+java.util.Iterator
521+net.osdn.projects.midicrossport.midi.NoteOffListener$WaitingElement
522+net.osdn.projects.midicrossport.midi.XInput
523+java.lang.Object
524+java.util.LinkedList
525+java.lang.Runnable
526+net.osdn.projects.midicrossport.midi.NoteOffListener
467527 ||:net.osdn.projects.midicrossport.midi.programlist.GMDrumNotes
468528 net.osdn.projects.midicrossport.midi.programlist.GMDrumNotes
469529 net.osdn.projects.midicrossport.midi.programlist.ProgramList
@@ -473,17 +533,18 @@
473533 java.lang.Integer
474534 java.util.ArrayList
475535 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
476-net.osdn.projects.midicrossport.swing.ProgressCircleUI
477536 javax.swing.ImageIcon
478537 java.lang.String
479538 java.lang.Number
480-javax.swing.JProgressBar
481539 net.osdn.projects.midicrossport.utilities.UIThread
540+java.lang.invoke.MethodHandles$Lookup
482541 javax.swing.JButton
483542 javax.swing.JSpinner
484543 java.awt.Font
485544 net.osdn.projects.midicrossport.crosscontrol.XCircleData
545+java.lang.invoke.MethodHandles
486546 javax.swing.border.BevelBorder
547+net.osdn.projects.midicrossport.swing.CurvedSlider
487548 java.awt.GridBagConstraints
488549 java.lang.Exception
489550 net.osdn.projects.midicrossport.crosscontrol.CrossControl
@@ -493,9 +554,9 @@
493554 net.osdn.projects.midicrossport.midi.XNumber
494555 javax.swing.JLabel
495556 net.osdn.projects.midicrossport.crosscontrol.XLineSettings
496-java.lang.StringBuilder
497557 java.lang.Object
498558 java.lang.Class
559+java.lang.invoke.StringConcatFactory
499560 java.awt.GridBagLayout
500561 net.osdn.projects.midicrossport.crosscontrol.XCircle$2
501562 net.osdn.projects.midicrossport.crosscontrol.XCircle$3
@@ -508,14 +569,25 @@
508569 java.lang.String
509570 javax.swing.filechooser.FileFilter
510571 java.io.File
572+||:net.osdn.projects.midicrossport.midi.XOutputThread
573+net.osdn.projects.midicrossport.midi.XOutputThread
574+java.lang.Thread
575+java.lang.Object
576+net.osdn.projects.midicrossport.utilities.MessageQueue
577+net.osdn.projects.midicrossport.midi.XOutputThread$1
578+java.lang.NullPointerException
579+net.osdn.projects.midicrossport.XResource
580+net.osdn.projects.midicrossport.midi.XLetter
511581 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$6
512582 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
513583 net.osdn.projects.midicrossport.swing.AppCustomFileChooser
584+java.lang.invoke.MethodHandles$Lookup
514585 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$6
515-java.lang.StringBuilder
586+java.lang.invoke.MethodHandles
516587 java.lang.Object
517588 javax.swing.JFileChooser
518589 java.lang.String
590+java.lang.invoke.StringConcatFactory
519591 javax.swing.JOptionPane
520592 java.io.File
521593 ||:net.osdn.projects.midicrossport.crosssmodule.CrossModule$1
@@ -523,15 +595,6 @@
523595 net.osdn.projects.midicrossport.crosssmodule.CrossModule$1
524596 java.lang.Object
525597 java.lang.Runnable
526-||:net.osdn.projects.midicrossport.midi.XOutputThread
527-net.osdn.projects.midicrossport.midi.XOutputThread
528-java.lang.Thread
529-java.lang.Object
530-net.osdn.projects.midicrossport.utilities.MessageQueue
531-net.osdn.projects.midicrossport.midi.XOutputThread$1
532-java.lang.NullPointerException
533-net.osdn.projects.midicrossport.XResource
534-net.osdn.projects.midicrossport.midi.XLetter
535598 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$5
536599 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
537600 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$5
@@ -538,6 +601,24 @@
538601 java.lang.String
539602 javax.swing.filechooser.FileFilter
540603 java.io.File
604+||:net.osdn.projects.midicrossport.utilities.UIThread$1
605+java.lang.Throwable
606+net.osdn.projects.midicrossport.utilities.UIThread
607+javax.swing.SwingUtilities
608+net.osdn.projects.midicrossport.utilities.UIThread$1
609+java.lang.Thread
610+java.lang.Class
611+net.osdn.projects.midicrossport.utilities.MessageQueue
612+java.util.logging.Logger
613+java.lang.Runnable
614+java.util.logging.Level
615+||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$5
616+javax.swing.event.ChangeEvent
617+net.osdn.projects.midicrossport.midi.MidiDevicePicker
618+net.osdn.projects.midicrossport.midi.MidiDevicePicker$5
619+javax.swing.JCheckBox
620+java.lang.Object
621+javax.swing.event.ChangeListener
541622 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$4
542623 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
543624 java.awt.event.ActionListener
@@ -562,8 +643,10 @@
562643 java.awt.Container
563644 javax.swing.JComboBox
564645 net.osdn.projects.midicrossport.XStatic
646+java.lang.invoke.MethodHandles$Lookup
565647 javax.swing.JSpinner
566648 javax.swing.JButton
649+java.lang.invoke.MethodHandles
567650 javax.swing.BorderFactory
568651 java.awt.GridBagConstraints
569652 net.osdn.projects.midicrossport.midi.XNumber
@@ -571,29 +654,24 @@
571654 javax.swing.JLabel
572655 javax.swing.JCheckBox
573656 net.osdn.projects.midicrossport.crosscontrol.XLineSettings$2
574-java.lang.StringBuilder
575657 net.osdn.projects.midicrossport.crosscontrol.XLineSettings$1
658+java.lang.invoke.StringConcatFactory
576659 java.awt.GridBagLayout
577660 net.osdn.projects.midicrossport.utilities.CellList
578661 javax.swing.JPanel
579662 net.osdn.projects.midicrossport.XResource
580-||:net.osdn.projects.midicrossport.midi.MidiDevicePicker$5
581-javax.swing.event.ChangeEvent
582-net.osdn.projects.midicrossport.midi.MidiDevicePicker
583-net.osdn.projects.midicrossport.midi.MidiDevicePicker$5
584-javax.swing.JCheckBox
663+||:net.osdn.projects.midicrossport.crosssmodule.CrossModule$3
664+net.osdn.projects.midicrossport.XStatic
665+javax.sound.midi.ShortMessage
666+net.osdn.projects.midicrossport.crosssmodule.CrossModule
667+net.osdn.projects.midicrossport.midi.XOutputThread
668+javax.sound.midi.InvalidMidiDataException
669+net.osdn.projects.midicrossport.crosssmodule.CrossModule$3
585670 java.lang.Object
586-javax.swing.event.ChangeListener
587-||:net.osdn.projects.midicrossport.utilities.UIThread$1
588-java.lang.Throwable
589-net.osdn.projects.midicrossport.utilities.UIThread
590-javax.swing.SwingUtilities
591-net.osdn.projects.midicrossport.utilities.UIThread$1
592-java.lang.Thread
593671 java.lang.Class
594-net.osdn.projects.midicrossport.utilities.MessageQueue
595672 java.util.logging.Logger
596673 java.lang.Runnable
674+net.osdn.projects.midicrossport.midi.XLetter
597675 java.util.logging.Level
598676 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$3
599677 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
@@ -600,22 +678,38 @@
600678 java.awt.event.ActionListener
601679 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$3
602680 java.lang.Object
681+||:net.osdn.projects.midicrossport.crosssmodule.CrossModule$2
682+net.osdn.projects.midicrossport.XStatic
683+javax.sound.midi.ShortMessage
684+net.osdn.projects.midicrossport.crosssmodule.CrossModule
685+javax.sound.midi.InvalidMidiDataException
686+net.osdn.projects.midicrossport.crosssmodule.CrossModule$2
687+java.lang.Object
688+java.lang.Class
689+net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection
690+java.util.logging.Logger
691+java.lang.Runnable
692+net.osdn.projects.midicrossport.midi.XLetter
693+java.util.logging.Level
603694 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$2
604695 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
605696 java.awt.event.ActionListener
606697 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$2
607698 java.lang.Object
699+||:net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$Item
700+net.osdn.projects.midicrossport.utilities.NoneCriticalTimer
701+net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$Item
702+java.lang.Object
608703 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$1
609704 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
610705 java.awt.event.ActionListener
611706 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$1
612707 java.lang.Object
613-||:net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$Item
614-net.osdn.projects.midicrossport.utilities.NoneCriticalTimer
615-net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$Item
616-java.lang.Object
617708 ||:net.osdn.projects.midicrossport.utilities.CellList
618709 net.osdn.projects.midicrossport.utilities.DefaultCell
710+java.lang.Object
711+net.osdn.projects.midicrossport.utilities.ICell
712+java.lang.String
619713 net.osdn.projects.midicrossport.utilities.CellList
620714 java.util.ArrayList
621715 ||:net.osdn.projects.midicrossport.crosscontrol.XLineData
@@ -638,9 +732,12 @@
638732 org.w3c.dom.Node
639733 java.lang.String
640734 net.osdn.projects.midicrossport.crosssmodule.RiverOriginShape
735+net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
641736 net.osdn.projects.midicrossport.XStatic
737+java.lang.invoke.MethodHandles$Lookup
642738 org.w3c.dom.NodeList
643739 net.osdn.projects.midicrossport.crosscontrol.XCircleData
740+java.lang.invoke.MethodHandles
644741 java.io.FileOutputStream
645742 net.osdn.projects.midicrossport.midi.XInput
646743 java.io.IOException
@@ -647,13 +744,13 @@
647744 net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection
648745 java.io.FileInputStream
649746 java.io.File
747+java.lang.Exception
650748 java.io.FileNotFoundException
651-java.lang.Exception
652749 net.osdn.projects.midicrossport.crosscontrol.CrossControl
653750 org.w3c.dom.Element
654751 net.osdn.projects.midicrossport.midi.XNumber
655-java.lang.StringBuilder
656752 java.lang.Object
753+java.lang.invoke.StringConcatFactory
657754 net.osdn.projects.midicrossport.crosscontrol.XLineData
658755 net.osdn.projects.midicrossport.XResource
659756 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel
@@ -667,8 +764,10 @@
667764 javax.swing.JComboBox
668765 javax.swing.BoxLayout
669766 net.osdn.projects.midicrossport.swing.AppCustomFileChooser
767+java.lang.invoke.MethodHandles$Lookup
670768 javax.swing.JButton
671769 net.osdn.projects.midicrossport.crosscontrol.XCircleData
770+java.lang.invoke.MethodHandles
672771 net.osdn.projects.midicrossport.midi.XInput
673772 java.awt.GridBagConstraints
674773 java.io.File
@@ -684,7 +783,7 @@
684783 javax.swing.JCheckBox
685784 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$2
686785 net.osdn.projects.midicrossport.crosscontrol.CrossControlPanel$1
687-java.lang.StringBuilder
786+java.lang.invoke.StringConcatFactory
688787 java.awt.GridBagLayout
689788 net.osdn.projects.midicrossport.utilities.CellList
690789 javax.swing.JPanel
@@ -696,12 +795,18 @@
696795 javax.sound.midi.InvalidMidiDataException
697796 java.lang.StringBuffer
698797 java.lang.Object
798+net.osdn.projects.midicrossport.utilities.ICell
799+net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers
800+java.lang.Integer
699801 net.osdn.projects.midicrossport.midi.XLetter
802+net.osdn.projects.midicrossport.XResource
700803 net.osdn.projects.midicrossport.crosssmodule.RiverOriginShape
701804 ||:net.osdn.projects.midicrossport.crossplayer.CrossPlayerRhythmComponent
702805 net.osdn.projects.midicrossport.crossplayer.CrossPlayerRhythmComponent
703806 java.awt.Color
807+java.lang.invoke.MethodHandles$Lookup
704808 net.osdn.projects.midicrossport.utilities.ExceptionView
809+java.lang.invoke.MethodHandles
705810 javax.swing.JToggleButton
706811 java.awt.GridBagConstraints
707812 java.lang.Integer
@@ -708,10 +813,10 @@
708813 java.lang.Exception
709814 java.util.ArrayList
710815 net.osdn.projects.midicrossport.midi.programlist.GMDrumNotes
711-java.lang.StringBuilder
712816 java.lang.Object
713817 net.osdn.projects.midicrossport.utilities.ICell
714818 java.lang.String
819+java.lang.invoke.StringConcatFactory
715820 java.awt.GridBagLayout
716821 javax.swing.JPanel
717822 net.osdn.projects.midicrossport.XResource
@@ -746,6 +851,26 @@
746851 java.lang.Object
747852 java.lang.Runnable
748853 net.osdn.projects.midicrossport.crossplayer.CrossKey
854+||:net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$1
855+net.osdn.projects.midicrossport.utilities.NoneCriticalTimer
856+net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$1
857+java.lang.Object
858+java.lang.Runnable
859+||:net.osdn.projects.midicrossport.CurvedSliderTest
860+net.osdn.projects.midicrossport.CurvedSliderTest
861+java.io.IOException
862+net.osdn.projects.midicrossport.CurvedSliderTest$1
863+net.osdn.projects.midicrossport.swing.CurvedSlider
864+net.osdn.projects.midicrossport.CurvedSliderTest$2
865+java.awt.GridLayout
866+javax.swing.SwingUtilities
867+javax.swing.JSlider
868+javax.swing.JLabel
869+java.lang.Object
870+java.awt.Container
871+javax.swing.JFrame
872+java.awt.BorderLayout
873+javax.swing.JPanel
749874 ||:net.osdn.projects.midicrossport.midi.XMidiPorts
750875 javax.sound.midi.MidiDevice
751876 java.util.Iterator
@@ -761,11 +886,6 @@
761886 java.lang.String
762887 net.osdn.projects.midicrossport.utilities.ICell
763888 net.osdn.projects.midicrossport.utilities.CellList
764-||:net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$1
765-net.osdn.projects.midicrossport.utilities.NoneCriticalTimer
766-net.osdn.projects.midicrossport.utilities.NoneCriticalTimer$1
767-java.lang.Object
768-java.lang.Runnable
769889 ||:net.osdn.projects.midicrossport.MainFrame$1
770890 net.osdn.projects.midicrossport.crossplayer.CrossPlayerPanel
771891 net.osdn.projects.midicrossport.MainFrame$1
@@ -772,12 +892,8 @@
772892 java.lang.Object
773893 net.osdn.projects.midicrossport.MainFrame
774894 java.lang.Runnable
775-||:net.osdn.projects.midicrossport.MainFrame$2
776-java.awt.event.ActionListener
777-java.lang.Object
778-net.osdn.projects.midicrossport.MainFrame
779-net.osdn.projects.midicrossport.MainFrame$2
780895 ||:net.osdn.projects.midicrossport.midi.XOutputThread$1
896+java.lang.Throwable
781897 net.osdn.projects.midicrossport.midi.XLetterCapture
782898 net.osdn.projects.midicrossport.midi.XOutputThread
783899 net.osdn.projects.midicrossport.midi.XOutput
@@ -785,6 +901,12 @@
785901 net.osdn.projects.midicrossport.midi.XOutputThread$1
786902 net.osdn.projects.midicrossport.utilities.MessageQueue
787903 net.osdn.projects.midicrossport.midi.XLetter
904+java.lang.Exception
905+||:net.osdn.projects.midicrossport.MainFrame$2
906+java.awt.event.ActionListener
907+java.lang.Object
908+net.osdn.projects.midicrossport.MainFrame
909+net.osdn.projects.midicrossport.MainFrame$2
788910 ||:net.osdn.projects.midicrossport.crosscontrol.CrossControl
789911 net.osdn.projects.midicrossport.midi.XInputThreadMinimum
790912 javax.sound.midi.ShortMessage
@@ -797,8 +919,11 @@
797919 net.osdn.projects.midicrossport.crosscontrol.XRhythmData
798920 net.osdn.projects.midicrossport.crosscontrol.XRhythm
799921 net.osdn.projects.midicrossport.utilities.ICell
922+net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
923+java.lang.invoke.MethodHandles$Lookup
800924 net.osdn.projects.midicrossport.crosscontrol.QuickMonitorHashManager
801925 net.osdn.projects.midicrossport.crosscontrol.XCircleData
926+java.lang.invoke.MethodHandles
802927 net.osdn.projects.midicrossport.midi.XInput
803928 javax.swing.JOptionPane
804929 java.lang.Exception
@@ -807,8 +932,8 @@
807932 net.osdn.projects.midicrossport.crosscontrol.XCircle
808933 net.osdn.projects.midicrossport.crosscontrol.XLine
809934 net.osdn.projects.midicrossport.midi.XNumber
810-java.lang.StringBuilder
811935 java.lang.Object
936+java.lang.invoke.StringConcatFactory
812937 net.osdn.projects.midicrossport.utilities.CellList
813938 net.osdn.projects.midicrossport.crosscontrol.XLineData
814939 ||:net.osdn.projects.midicrossport.crosscontrol.XLine
@@ -824,9 +949,11 @@
824949 java.util.Hashtable
825950 net.osdn.projects.midicrossport.XStatic
826951 net.osdn.projects.midicrossport.utilities.UIThread
952+java.lang.invoke.MethodHandles$Lookup
827953 javax.swing.JButton
828954 javax.swing.JSpinner
829955 java.awt.Font
956+java.lang.invoke.MethodHandles
830957 javax.swing.border.BevelBorder
831958 net.osdn.projects.midicrossport.crosscontrol.XLine$3
832959 net.osdn.projects.midicrossport.crosscontrol.XLine$2
@@ -841,9 +968,9 @@
841968 javax.swing.JLabel
842969 javax.swing.JSlider
843970 net.osdn.projects.midicrossport.crosscontrol.XLineSettings
844-java.lang.StringBuilder
845971 java.lang.Object
846972 java.lang.Class
973+java.lang.invoke.StringConcatFactory
847974 java.awt.GridBagLayout
848975 net.osdn.projects.midicrossport.crosscontrol.XLineData
849976 javax.swing.JPanel
@@ -889,11 +1016,6 @@
8891016 javax.swing.JDialog
8901017 net.osdn.projects.midicrossport.crosscontrol.XLineSettings
8911018 java.awt.event.WindowAdapter
892-||:net.osdn.projects.midicrossport.crosscontrol.XLineSettings$7
893-net.osdn.projects.midicrossport.crosscontrol.XLineSettings$7
894-java.awt.event.ActionListener
895-net.osdn.projects.midicrossport.crosscontrol.XLineSettings
896-java.lang.Object
8971019 ||:net.osdn.projects.midicrossport.midi.XInputThreadMinimum
8981020 net.osdn.projects.midicrossport.midi.XInputThreadMinimum
8991021 net.osdn.projects.midicrossport.crosssmodule.CrossModule
@@ -902,6 +1024,11 @@
9021024 java.lang.Thread
9031025 java.lang.Object
9041026 net.osdn.projects.midicrossport.utilities.MessageQueue
1027+||:net.osdn.projects.midicrossport.crosscontrol.XLineSettings$7
1028+net.osdn.projects.midicrossport.crosscontrol.XLineSettings$7
1029+java.awt.event.ActionListener
1030+net.osdn.projects.midicrossport.crosscontrol.XLineSettings
1031+java.lang.Object
9051032 ||:net.osdn.projects.midicrossport.swing.CrossConsole$1
9061033 net.osdn.projects.midicrossport.swing.CrossConsole$1
9071034 net.osdn.projects.midicrossport.swing.CrossConsole
@@ -925,6 +1052,10 @@
9251052 net.osdn.projects.midicrossport.crosscontrol.XLineSettings$3
9261053 net.osdn.projects.midicrossport.crosscontrol.XLineSettings
9271054 java.lang.Object
1055+||:net.osdn.projects.midicrossport.midi.NoteOffListener$WaitingElement
1056+net.osdn.projects.midicrossport.midi.NoteOffListener$WaitingElement
1057+java.lang.Object
1058+net.osdn.projects.midicrossport.midi.NoteOffListener
9281059 ||:net.osdn.projects.midicrossport.crosscontrol.XLineSettings$6
9291060 java.awt.event.ActionListener
9301061 net.osdn.projects.midicrossport.crosscontrol.XLineSettings$6
@@ -1008,6 +1139,7 @@
10081139 net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$1
10091140 java.awt.GridBagLayout
10101141 net.osdn.projects.midicrossport.utilities.CellList
1142+net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2$1
10111143 net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2
10121144 javax.swing.JPanel
10131145 net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$3
@@ -1014,17 +1146,19 @@
10141146 net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$4
10151147 ||:net.osdn.projects.midicrossport.utilities.MessageQueue
10161148 java.io.PrintStream
1149+java.lang.invoke.MethodHandles$Lookup
1150+net.osdn.projects.midicrossport.utilities.ExceptionView
1151+java.lang.System
1152+java.lang.invoke.MethodHandles
1153+net.osdn.projects.midicrossport.utilities.MessageQueue
1154+java.lang.Integer
10171155 net.osdn.projects.midicrossport.utilities.MessageQueue$1
10181156 net.osdn.projects.midicrossport.utilities.MessageQueue$2
1019-net.osdn.projects.midicrossport.utilities.ExceptionView
10201157 java.lang.InterruptedException
1021-java.lang.System
10221158 java.lang.Thread
1023-java.lang.StringBuilder
10241159 java.lang.Object
1025-net.osdn.projects.midicrossport.utilities.MessageQueue
1160+java.lang.invoke.StringConcatFactory
10261161 java.util.LinkedList
1027-java.lang.Integer
10281162 ||:net.osdn.projects.midicrossport.swing.CrossConsole$4
10291163 net.osdn.projects.midicrossport.swing.CrossConsole
10301164 javax.swing.JList
@@ -1033,14 +1167,6 @@
10331167 java.lang.Runnable
10341168 java.lang.Exception
10351169 javax.swing.ListModel
1036-||:net.osdn.projects.midicrossport.swing.CrossConsole$2
1037-javax.swing.event.ListDataListener
1038-net.osdn.projects.midicrossport.swing.CrossConsole
1039-java.util.Iterator
1040-java.lang.Object
1041-java.lang.Runnable
1042-net.osdn.projects.midicrossport.swing.CrossConsole$2
1043-java.util.ArrayList
10441170 ||:net.osdn.projects.midicrossport.swing.CrossUITool
10451171 javax.swing.JDialog
10461172 net.osdn.projects.midicrossport.utilities.DefaultCell
@@ -1059,9 +1185,11 @@
10591185 javax.swing.JComboBox
10601186 java.awt.Dialog
10611187 net.osdn.projects.midicrossport.XStatic
1188+java.lang.invoke.MethodHandles$Lookup
10621189 java.util.Iterator
10631190 net.osdn.projects.midicrossport.utilities.ExceptionView
10641191 java.awt.Window
1192+java.lang.invoke.MethodHandles
10651193 javax.swing.JList
10661194 net.osdn.projects.midicrossport.midi.XInput
10671195 net.osdn.projects.midicrossport.midi.XMidiPorts
@@ -1072,12 +1200,20 @@
10721200 java.lang.Exception
10731201 java.awt.Dimension
10741202 javax.swing.DefaultListModel
1075-java.lang.StringBuilder
10761203 java.lang.Object
10771204 java.lang.Class
1205+java.lang.invoke.StringConcatFactory
10781206 net.osdn.projects.midicrossport.utilities.CellList
10791207 net.osdn.projects.midicrossport.XResource
10801208 java.awt.Toolkit
1209+||:net.osdn.projects.midicrossport.swing.CrossConsole$2
1210+javax.swing.event.ListDataListener
1211+net.osdn.projects.midicrossport.swing.CrossConsole
1212+java.util.Iterator
1213+java.lang.Object
1214+java.lang.Runnable
1215+net.osdn.projects.midicrossport.swing.CrossConsole$2
1216+java.util.ArrayList
10811217 ||:net.osdn.projects.midicrossport.swing.CrossConsole$3
10821218 java.lang.IndexOutOfBoundsException
10831219 javax.swing.event.ListDataListener
@@ -1106,8 +1242,10 @@
11061242 java.lang.String
11071243 org.w3c.dom.DOMImplementation
11081244 java.io.PrintStream
1245+java.lang.invoke.MethodHandles$Lookup
11091246 org.w3c.dom.NodeList
11101247 javax.xml.transform.TransformerConfigurationException
1248+java.lang.invoke.MethodHandles
11111249 java.io.IOException
11121250 javax.xml.transform.OutputKeys
11131251 [Ljava.lang.String;
@@ -1116,22 +1254,21 @@
11161254 javax.xml.parsers.ParserConfigurationException
11171255 org.xml.sax.SAXException
11181256 javax.xml.parsers.DocumentBuilder
1119-java.lang.StringBuilder
11201257 java.lang.Object
11211258 javax.xml.parsers.DocumentBuilderFactory
11221259 javax.xml.transform.TransformerFactory
1260+java.lang.invoke.StringConcatFactory
11231261 ||:net.osdn.projects.midicrossport.crosscontrol.XRhythmData
1262+net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
11241263 net.osdn.projects.midicrossport.crosscontrol.XRhythmData
11251264 net.osdn.projects.midicrossport.XStatic
11261265 javax.sound.midi.ShortMessage
11271266 javax.sound.midi.InvalidMidiDataException
1128-net.osdn.projects.midicrossport.crosscontrol.XRhythm
1129-java.lang.StringBuilder
11301267 java.lang.Object
1131-java.lang.String
11321268 net.osdn.projects.midicrossport.midi.XLetter
1133-net.osdn.projects.midicrossport.crosscontrol.CrossControl
11341269 ||:net.osdn.projects.midicrossport.crossplayer.CrossPlayerKeys
1270+java.lang.invoke.MethodHandles$Lookup
1271+java.lang.invoke.MethodHandles
11351272 javax.swing.border.BevelBorder
11361273 java.awt.GridBagConstraints
11371274 net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers
@@ -1138,9 +1275,9 @@
11381275 net.osdn.projects.midicrossport.crossplayer.CrossPlayerKeys
11391276 javax.swing.border.SoftBevelBorder
11401277 javax.swing.JLabel
1141-java.lang.StringBuilder
11421278 net.osdn.projects.midicrossport.utilities.ICell
11431279 java.lang.String
1280+java.lang.invoke.StringConcatFactory
11441281 java.awt.GridBagLayout
11451282 javax.swing.JPanel
11461283 net.osdn.projects.midicrossport.XResource
@@ -1163,23 +1300,29 @@
11631300 ||:net.osdn.projects.midicrossport.crosscontrol.XRhythm
11641301 java.awt.Color
11651302 java.awt.Insets
1166-javax.swing.JButton
1167-javax.swing.border.BevelBorder
1168-java.awt.GridBagConstraints
11691303 net.osdn.projects.midicrossport.crosscontrol.XRhythm$1
1170-net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
11711304 net.osdn.projects.midicrossport.crosscontrol.XRhythm$2
11721305 net.osdn.projects.midicrossport.crosscontrol.XRhythm$3
11731306 net.osdn.projects.midicrossport.crosscontrol.XRhythmData
1174-javax.swing.border.SoftBevelBorder
11751307 net.osdn.projects.midicrossport.crosscontrol.XRhythm
11761308 javax.swing.ImageIcon
1309+java.lang.String
1310+java.awt.SystemColor
1311+javax.swing.BoxLayout
1312+net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
1313+java.lang.invoke.MethodHandles$Lookup
1314+javax.swing.JButton
1315+java.lang.invoke.MethodHandles
1316+javax.swing.border.BevelBorder
1317+java.awt.GridBagConstraints
1318+net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
1319+net.osdn.projects.midicrossport.crosscontrol.CrossControl
1320+javax.swing.border.SoftBevelBorder
11771321 java.lang.Object
11781322 java.lang.Class
1323+java.lang.invoke.StringConcatFactory
11791324 java.awt.GridBagLayout
11801325 javax.swing.JPanel
1181-java.awt.SystemColor
1182-javax.swing.BoxLayout
11831326 ||:net.osdn.projects.midicrossport.crossplayer.CrossPlayerPanel$6
11841327 net.osdn.projects.midicrossport.crossplayer.CrossPlayerPanel
11851328 net.osdn.projects.midicrossport.crossplayer.CrossPlayerPanel$6
@@ -1270,6 +1413,27 @@
12701413 net.osdn.projects.midicrossport.crossplayer.CrossPlayerPanel
12711414 java.lang.Object
12721415 net.osdn.projects.midicrossport.crossplayer.CrossPlayerPanel$4
1416+||:net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection$1
1417+net.osdn.projects.midicrossport.XStatic
1418+javax.sound.midi.ShortMessage
1419+net.osdn.projects.midicrossport.crosssmodule.CrossModule
1420+javax.sound.midi.InvalidMidiDataException
1421+net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection
1422+java.util.logging.Logger
1423+java.lang.Runnable
1424+net.osdn.projects.midicrossport.midi.XLetter
1425+java.util.logging.Level
1426+java.lang.Object
1427+java.lang.Class
1428+net.osdn.projects.midicrossport.crosssmodule.RiverShapeCollection$1
1429+net.osdn.projects.midicrossport.crosssmodule.RiverOriginShape
1430+||:net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
1431+net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
1432+net.osdn.projects.midicrossport.crosscontrol.XRhythmData
1433+javax.sound.midi.ShortMessage
1434+java.lang.Object
1435+java.lang.Exception
1436+net.osdn.projects.midicrossport.midi.XLetter
12731437 ||:net.osdn.projects.midicrossport.crosscontrol.QuickMonitorHashManager
12741438 net.osdn.projects.midicrossport.XStatic
12751439 net.osdn.projects.midicrossport.crosscontrol.QuickMonitorHashManager
@@ -1287,8 +1451,14 @@
12871451 net.osdn.projects.midicrossport.crossplayer.CrossKey$PianoKeyGraphics
12881452 java.lang.Object
12891453 net.osdn.projects.midicrossport.crossplayer.CrossKey
1454+||:net.osdn.projects.midicrossport.CurvedSliderTest$1
1455+net.osdn.projects.midicrossport.CurvedSliderTest
1456+java.lang.Object
1457+net.osdn.projects.midicrossport.CurvedSliderTest$1
1458+java.lang.Runnable
12901459 ||:net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
12911460 javax.swing.JDialog
1461+java.lang.System
12921462 javax.swing.SpinnerNumberModel
12931463 net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel
12941464 java.lang.Integer
@@ -1296,6 +1466,8 @@
12961466 net.osdn.projects.midicrossport.crosscontrol.XRhythmData
12971467 java.awt.Container
12981468 javax.swing.JComboBox
1469+net.osdn.projects.midicrossport.crosscontrol.XRhythmNumber
1470+java.io.PrintStream
12991471 net.osdn.projects.midicrossport.XStatic
13001472 javax.swing.JSpinner
13011473 javax.swing.JButton
@@ -1310,11 +1482,25 @@
13101482 net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$5
13111483 net.osdn.projects.midicrossport.midi.XNumber
13121484 javax.swing.JLabel
1485+net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$7
13131486 javax.swing.JCheckBox
13141487 java.awt.GridBagLayout
13151488 net.osdn.projects.midicrossport.utilities.CellList
13161489 javax.swing.JPanel
13171490 net.osdn.projects.midicrossport.XResource
1491+||:net.osdn.projects.midicrossport.CurvedSliderTest$2
1492+java.io.PrintStream
1493+java.lang.invoke.MethodHandles$Lookup
1494+java.lang.System
1495+javax.swing.JSlider
1496+java.lang.invoke.MethodHandles
1497+java.lang.Math
1498+net.osdn.projects.midicrossport.CurvedSliderTest
1499+java.lang.Object
1500+javax.swing.event.ChangeListener
1501+java.lang.invoke.StringConcatFactory
1502+net.osdn.projects.midicrossport.swing.CurvedSlider
1503+net.osdn.projects.midicrossport.CurvedSliderTest$2
13181504 ||:net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$2
13191505 net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$2
13201506 java.awt.event.ActionListener
@@ -1341,13 +1527,8 @@
13411527 java.lang.Object
13421528 net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
13431529 ||:net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$6
1530+java.awt.event.ActionListener
13441531 net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$6
1345-javax.swing.JDialog
1346-java.awt.event.WindowAdapter
1347-net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
1348-||:net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$5
1349-java.awt.event.ActionListener
1350-net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$5
13511532 java.lang.Object
13521533 net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
13531534 ||:net.osdn.projects.midicrossport.swing.CheckBoxListCellRenderer
@@ -1361,18 +1542,30 @@
13611542 java.awt.event.MouseListener
13621543 java.awt.event.MouseEvent
13631544 javax.swing.ListModel
1545+||:net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$5
1546+java.awt.event.ActionListener
1547+net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$5
1548+java.lang.Object
1549+net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
1550+||:net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$7
1551+javax.swing.JDialog
1552+net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings$7
1553+java.awt.event.WindowAdapter
1554+net.osdn.projects.midicrossport.crosscontrol.XRhythmSettings
13641555 ||:net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2$1
1365-javax.swing.JLabel
1556+java.lang.invoke.MethodHandles$Lookup
13661557 net.osdn.projects.midicrossport.utilities.NoneCriticalTimer
1558+java.lang.invoke.MethodHandles
13671559 net.osdn.projects.midicrossport.midi.XInputThread
1368-java.lang.StringBuilder
1369-java.lang.Object
13701560 net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel
1371-net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2$1
13721561 java.lang.Runnable
1373-net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2
13741562 java.lang.Exception
13751563 net.osdn.projects.midicrossport.swing.CrossUITool
1564+javax.swing.JLabel
1565+java.lang.Object
1566+java.lang.invoke.StringConcatFactory
1567+net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2$1
1568+net.osdn.projects.midicrossport.crosscontrol.ControlTemplatePanel$2
13761569 ||:net.osdn.projects.midicrossport.crosscontrol.XCircle$2
13771570 net.osdn.projects.midicrossport.crosscontrol.XCircle
13781571 java.awt.event.ActionListener
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/CrossControl.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/CrossControl.java (revision 78)
@@ -73,10 +73,10 @@
7373 XRhythm rhythm = _panel._listRhythm.get(i);
7474 XRhythmData rhythmNumber = rhythm._data;
7575 if (rhythmNumber.catchMessageImpl(letter)) {
76- if (rhythmNumber._scanToggle) {
76+ if (rhythmNumber._talkNumber._isToggleSwitch) {
7777 rhythm.updateColor();
7878 }
79- doSendMessageWithRhythm(rhythm);
79+ valueChangingWithRhythm(rhythm, rhythmNumber._talkNumber._currentSwitch);
8080 return true;
8181 }
8282 }
@@ -93,11 +93,11 @@
9393 if ((quickTest.getControllersMask(0, i) & code) != 0) {
9494 XLineData number = _listLineNumber.get(i);
9595 XLine line = (XLine) _panel._listLine.get(i);
96- int prevNumber = number._number.valueCurrent;
97- if (number._number.catchMessageImpl(letter)) {
98- int newNumber = number._number.valueCurrent;
96+ int prevNumber = number._talkNumber.valueCurrent;
97+ if (number._talkNumber.catchMessageImpl(letter)) {
98+ int newNumber = number._talkNumber.valueCurrent;
9999 if (prevNumber != newNumber) {
100- number._number.valueCurrent = prevNumber;
100+ number._talkNumber.valueCurrent = prevNumber;
101101 valueChangingWithLine(line, newNumber, false);
102102 }
103103 proced = true;
@@ -111,11 +111,11 @@
111111 if ((quickTest.getControllersMask(1, i) & code) != 0) {
112112 XCircleData number = _listCircleNumber.get(i);
113113 XCircle circle = (XCircle) _panel._listCircle.get(i);
114- int prevNumber = number._number.valueCurrent;
115- if (number._number.catchMessageImpl(letter)) {
116- int newNumber = number._number.valueCurrent;
114+ int prevNumber = number._talkNumber.valueCurrent;
115+ if (number._talkNumber.catchMessageImpl(letter)) {
116+ int newNumber = number._talkNumber.valueCurrent;
117117 if (prevNumber != newNumber) {
118- number._number.valueCurrent = prevNumber;
118+ number._talkNumber.valueCurrent = prevNumber;
119119 valueChangingWithCircle(circle, newNumber, false);
120120 }
121121 proced = true;
@@ -157,10 +157,10 @@
157157
158158 public void doSendMessageWithRhythm(XRhythm pad) {
159159 try {
160- boolean changed = pad._data._changed;
160+ boolean changed = pad._data._talkNumber._changed;
161161 if (changed) {
162- pad._data._changed = false;
163- ShortMessage msg = pad._data.createMessage(pad._data._selected);
162+ pad._data._talkNumber._changed = false;
163+ ShortMessage msg = pad._data.createMessage(pad._data._talkNumber._currentSwitch);
164164 XLetter letter = new XLetter(null);
165165 letter.setBaseMessage(msg);
166166 XInputThreadMinimum.push(letter);
@@ -176,7 +176,7 @@
176176 if (isDoingChain && this == XConfig.getControl1()) {
177177 return;
178178 }
179- XNumber number = circle._data._number;
179+ XNumber number = circle._data._talkNumber;
180180 number.input = _input;
181181 XLetter letter = number.toCrossLetter();
182182 XInputThreadMinimum.push(letter);
@@ -190,7 +190,7 @@
190190 if (isDoingChain && this == XConfig.getControl1()) {
191191 return;
192192 }
193- XNumber number = line._data._number;
193+ XNumber number = line._data._talkNumber;
194194 number.input = _input;
195195 XLetter letter = number.toCrossLetter();
196196 XInputThreadMinimum.push(letter);
@@ -200,21 +200,16 @@
200200 }
201201
202202 public synchronized void valueChangingWithCircle(XCircle circle, int value, boolean forceUpdate) {
203- XNumber number = circle._data._number;
204- if (number.valueCurrent != value || forceUpdate == true) {
205- number.valueCurrent = value;
206- circle.threadUpdateScreen(number, forceUpdate);
207- doSendMessageWithCircle(circle);
208- }
203+ XNumber number = circle._data._talkNumber;
209204 if (isDoingChain && this == XConfig.getControl1()) {
210205 int i = circle._seqId;
211206
212207 ArrayList<XCircle> to = XConfig.getControl2()._panel._listCircle;
213208 XCircle toCircle = to.get(i);
214- int fromMax = circle._data._number.valueMax;
215- int toMax = toCircle._data._number.valueMax;
209+ int fromMax = circle._data._talkNumber.maximumForMessage;
210+ int toMax = toCircle._data._talkNumber.maximumForMessage;
216211
217- int fromCurrent = circle._data._number.valueCurrent;
212+ int fromCurrent = circle._data._talkNumber.valueCurrent;
218213
219214 if (fromMax == toMax) {
220215 valueChangingWithCircle(toCircle, fromCurrent, false); //forceupdate
@@ -222,24 +217,25 @@
222217 int newCurrent = (int)(((double)fromCurrent) * toMax / fromMax);
223218 valueChangingWithCircle(toCircle, newCurrent, false); //forceupdate
224219 }
220+ }else {
221+ if (number.valueCurrent != value || forceUpdate == true) {
222+ number.valueCurrent = value;
223+ circle.threadUpdateScreen(number, forceUpdate);
224+ doSendMessageWithCircle(circle);
225+ }
225226 }
226227 }
227228
228229 public synchronized void valueChangingWithLine(XLine line, int value, boolean forceUpdate) {
229- XNumber number = line._data._number;
230- if (number.valueCurrent != value || forceUpdate == true) {
231- number.valueCurrent = value;
232- line.threadUpdateScreen(number, forceUpdate);
233- doSendMessageWithLine(line);
234- }
230+ XNumber number = line._data._talkNumber;
235231 if (isDoingChain && this == XConfig.getControl1()) {
236232 int i = line._seqId;
237233 ArrayList<XLine> to = XConfig.getControl2()._panel._listLine;
238234 XLine toLine = to.get(i);
239- int fromMax = line._data._number.valueMax;
240- int toMax = toLine._data._number.valueMax;
235+ int fromMax = line._data._talkNumber.maximumForMessage;
236+ int toMax = toLine._data._talkNumber.maximumForMessage;
241237
242- int fromCurrent = line._data._number.valueCurrent;
238+ int fromCurrent = line._data._talkNumber.valueCurrent;
243239
244240 if (fromMax == toMax) {
245241 XConfig.getControl2().valueChangingWithLine(toLine, fromCurrent, false); //forceupdate
@@ -247,6 +243,37 @@
247243 int newCurrent = (int)(((double)fromCurrent) * toMax / fromMax);
248244 XConfig.getControl2().valueChangingWithLine(toLine, newCurrent, false); //forceupdate
249245 }
246+ }else {
247+ if (number.valueCurrent != value || forceUpdate == true) {
248+ number.valueCurrent = value;
249+ line.threadUpdateScreen(number, forceUpdate);
250+ doSendMessageWithLine(line);
251+ }
250252 }
251253 }
254+
255+ public void valueChangingWithRhythm(XRhythm rhythm, boolean newValue) {
256+ XRhythmNumber number = rhythm._data._talkNumber;
257+ if (isDoingChain && this == XConfig.getControl1()) {
258+ int i = rhythm._seqId;
259+ ArrayList<XRhythm> to = XConfig.getControl2()._panel._listRhythm;
260+ XRhythm toRhythm = to.get(i);
261+
262+ number._currentSwitch = newValue;
263+ boolean fromCurrent = number._currentSwitch;
264+
265+ toRhythm._data._talkNumber._currentSwitch = fromCurrent;
266+ toRhythm._data._talkNumber._changed = true;
267+ toRhythm._data._talkNumber._lastVelocity = number._lastVelocity;
268+ rhythm.updateColor();
269+
270+ XConfig.getControl2().valueChangingWithRhythm(toRhythm, newValue);
271+ }else {
272+ number._currentSwitch = newValue;
273+ number._changed = true;
274+ rhythm.updateColor();
275+ doSendMessageWithRhythm(rhythm);
276+ }
277+ }
252278 }
279+
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/CrossControlPanel.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/CrossControlPanel.java (revision 78)
@@ -66,7 +66,7 @@
6666
6767 setLayout(new java.awt.GridBagLayout());
6868
69- jLabel1.setText("BindController");
69+ jLabel1.setText("MOD: CTRL");
7070 gridBagConstraints = new java.awt.GridBagConstraints();
7171 gridBagConstraints.gridx = 0;
7272 gridBagConstraints.gridy = 0;
@@ -95,7 +95,7 @@
9595 gridBagConstraints.weighty = 2.0;
9696 add(jPanelControllers, gridBagConstraints);
9797
98- jCheckBoxAppInsideChain.setText("Chain Master >> Slave");
98+ jCheckBoxAppInsideChain.setText("Ctrl Slave by Master");
9999 jCheckBoxAppInsideChain.addActionListener(new java.awt.event.ActionListener() {
100100 public void actionPerformed(java.awt.event.ActionEvent evt) {
101101 jCheckBoxAppInsideChainActionPerformed(evt);
@@ -238,7 +238,7 @@
238238
239239 ArrayList<XCircle> newCircle = new ArrayList<XCircle>();
240240 for (int i = 0; i < setting._listCircleNumber.size(); ++i) {
241- XNumber number = setting._listCircleNumber.get(i)._number;
241+ XNumber number = setting._listCircleNumber.get(i)._talkNumber;
242242 XCircle circleComponent = new XCircle(i, setting);
243243
244244 circleComponent._group = setting;
@@ -260,7 +260,7 @@
260260
261261 ArrayList<XLine> newLine = new ArrayList<XLine>();
262262 for (int i = 0; i < setting._listLineNumber.size(); ++i) {
263- XNumber number = setting._listLineNumber.get(i)._number;
263+ XNumber number = setting._listLineNumber.get(i)._talkNumber;
264264 XLine line = new XLine(i, setting);
265265
266266 line._group = setting;
@@ -285,13 +285,11 @@
285285 XRhythmData number = setting._listRhythmNumber.get(i);
286286 XRhythm rhythmComponent = new XRhythm(i, setting);
287287
288- number._group = setting;
289- number._rhythm = rhythmComponent;
290288 rhythmComponent._group = setting;
291289 rhythmComponent._data = number;
292290
293291 newRhythm.add(rhythmComponent);
294- rhythmComponent.doUpdateScreen(number, true);
292+ rhythmComponent.doUpdateScreen(number, false);
295293 rhythmComponent.setSize(100, 200);
296294
297295 gridBagConstraints = new java.awt.GridBagConstraints();
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/QuickMonitorHashManager.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/QuickMonitorHashManager.java (revision 78)
@@ -87,10 +87,10 @@
8787 controlChangeMessageIds = new int[16];
8888
8989 for (int i = 0; i < listLine.size(); ++ i) {
90- XNumber number = listLine.get(i)._number;
90+ XNumber number = listLine.get(i)._talkNumber;
9191 int mask = getControllersMask(0, i);
9292
93- int status = number.messageStatus;
93+ int status = number.status;
9494
9595 int command = status & 0xf0;
9696 int channel = status & 0x0f;
@@ -99,10 +99,10 @@
9999 }
100100
101101 for (int i = 0; i < listCircle.size(); ++ i) {
102- XNumber number = listCircle.get(i)._number;
102+ XNumber number = listCircle.get(i)._talkNumber;
103103 int mask = getControllersMask(1, i);
104104
105- int status = number.messageStatus;
105+ int status = number.status;
106106
107107 int command = status & 0xf0;
108108 int channel = status & 0x0f;
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XCircle.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XCircle.java (revision 78)
@@ -5,12 +5,11 @@
55 */
66 package net.osdn.projects.midicrossport.crosscontrol;
77
8-import net.osdn.projects.midicrossport.swing.ProgressCircleUI;
98 import java.awt.Font;
109 import javax.swing.JLabel;
11-import javax.swing.JProgressBar;
1210 import javax.swing.SpinnerNumberModel;
1311 import net.osdn.projects.midicrossport.midi.XNumber;
12+import net.osdn.projects.midicrossport.swing.CurvedSlider;
1413 import net.osdn.projects.midicrossport.utilities.UIThread;
1514
1615 /**
@@ -43,9 +42,7 @@
4342 java.awt.GridBagConstraints gridBagConstraints;
4443
4544 jLabelName = new javax.swing.JLabel();
46- jCircleValue = new JProgressBar();
47- ProgressCircleUI ui = new ProgressCircleUI(jCircleValue);
48- jCircleValue.setUI(ui);
45+ jCircleValue = new CurvedSlider();
4946 jLabelChannel = new javax.swing.JLabel();
5047 jButtonSetting = new javax.swing.JButton();
5148 jSpinnerValue = new javax.swing.JSpinner();
@@ -74,7 +71,7 @@
7471 gridBagConstraints.weighty = 1.0;
7572 add(jCircleValue, gridBagConstraints);
7673
77- jLabelChannel.setText("ch");
74+ jLabelChannel.setText("Ch.");
7875 gridBagConstraints = new java.awt.GridBagConstraints();
7976 gridBagConstraints.gridx = 0;
8077 gridBagConstraints.gridy = 1;
@@ -111,7 +108,7 @@
111108 private void jCircleValueStateChanged(javax.swing.event.ChangeEvent evt) {
112109 int newValue;
113110 try {
114- newValue = jCircleValue.getValue();
111+ newValue = (int)jCircleValue.getValue();
115112 }catch(Exception e) {
116113 e.printStackTrace();
117114 return;
@@ -127,7 +124,7 @@
127124
128125 private void jButtonSettingActionPerformed(java.awt.event.ActionEvent evt) {
129126 XLineSettings setting = new XLineSettings();
130- setting.setCrossNumber(_data._number);
127+ setting.setCrossNumber(_data._talkNumber);
131128 setting.showAsDialog();
132129 XNumber num = setting._number;
133130 if (num != null) {
@@ -168,15 +165,14 @@
168165 _doubleEnter = true;
169166
170167 try {
171- if (_data._number != number || _first) {
168+ if (_data._talkNumber != number || _first) {
172169 _first = false;
173170 //_group.valueChangingWithLine(this, _number.valueCurrent, needUpdate);
174- jLabelChannel.setText("Ch" + (_data._number.monitoringChannel + 1));
171+ jLabelChannel.setText("Ch." + (_data._talkNumber.monitoringChannel + 1));
175172
176173 if (true) {
177- jCircleValue.setMinimum(number.valueMin);
178- jCircleValue.setMaximum(number.valueMax);
179- jSpinnerValue.setModel(new SpinnerNumberModel(number.valueCurrent, number.valueMin, number.valueMax, 1));
174+ jCircleValue.setRange(0, number.maximumForMessage);
175+ jSpinnerValue.setModel(new SpinnerNumberModel(number.valueCurrent, 0, number.maximumForMessage, 1));
180176 }
181177
182178 if (_group != null && _group._panel != null && _group._panel._listCircle != null) {
@@ -183,7 +179,7 @@
183179 for (int i = 0; i < _group._panel._listCircle.size(); ++ i) {
184180 XCircle circle = _group._panel._listCircle.get(i);
185181 if (circle == this) {
186- _group._listLineNumber.get(i)._number = number;
182+ _group._listLineNumber.get(i)._talkNumber = number;
187183 break;
188184 }
189185 }
@@ -193,7 +189,7 @@
193189
194190 jLabelName.setText(name);
195191 }
196- _data._number = number;
192+ _data._talkNumber = number;
197193
198194 jSpinnerValue.setValue(number.valueCurrent);
199195 jCircleValue.setValue(number.valueCurrent);
@@ -212,7 +208,7 @@
212208 private javax.swing.JButton jButtonSetting;
213209 private javax.swing.JLabel jLabelChannel;
214210 private javax.swing.JLabel jLabelName;
215- private javax.swing.JProgressBar jCircleValue;
211+ private CurvedSlider jCircleValue;
216212 private javax.swing.JSpinner jSpinnerValue;
217213 // End of variables declaration
218214 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XCircleData.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XCircleData.java (revision 78)
@@ -14,11 +14,11 @@
1414 public class XCircleData {
1515 public int _seqId;
1616 public XCircle _circle;
17- public XNumber _number;
17+ public XNumber _talkNumber;
1818
1919 public XCircleData(int seqId, XCircle circle, XNumber number) {
2020 _seqId = seqId;
2121 _circle = circle;
22- _number = number;
22+ _talkNumber = number;
2323 }
2424 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XLine.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XLine.java (revision 78)
@@ -73,7 +73,7 @@
7373 gridBagConstraints.weighty = 1.0;
7474 add(jSliderValue, gridBagConstraints);
7575
76- jLabelChannel.setText("ch");
76+ jLabelChannel.setText("Ch.");
7777 gridBagConstraints = new java.awt.GridBagConstraints();
7878 gridBagConstraints.gridx = 0;
7979 gridBagConstraints.gridy = 1;
@@ -128,7 +128,7 @@
128128
129129 private void jButtonSettingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSettingActionPerformed
130130 XLineSettings setting = new XLineSettings();
131- setting.setCrossNumber(_data._number);
131+ setting.setCrossNumber(_data._talkNumber);
132132 setting.showAsDialog();
133133 XNumber num = setting._number;
134134 if (num != null) {
@@ -169,21 +169,21 @@
169169 _douibleEnter = true;
170170
171171 try {
172- if (_data._number != number || _first) {
172+ if (_data._talkNumber != number || _first) {
173173 _first = false;
174174 //_group.valueChangingWithLine(this, _number.valueCurrent, needUpdate);
175- jLabelChannel.setText("Ch" + (_data._number.monitoringChannel + 1));
175+ jLabelChannel.setText("Ch." + (_data._talkNumber.monitoringChannel + 1));
176176
177177 if (true) {
178178 Hashtable labelTable = new Hashtable();
179- labelTable.put(number.valueMin, labelFor(number.valueMin, number.valueMax));
180- labelTable.put(number.valueMax, labelFor(number.valueMax, number.valueMax));
181- labelTable.put(number.valueResetPosition, labelFor(number.valueResetPosition, number.valueMax));
182- jSliderValue.setMinimum(number.valueMin);
183- jSliderValue.setMaximum(number.valueMax);
179+ labelTable.put(0, labelFor(0, 0));
180+ labelTable.put(number.maximumForMessage, labelFor(number.maximumForMessage, number.maximumForMessage));
181+ labelTable.put(number.valueResetPosition, labelFor(number.valueResetPosition, number.maximumForMessage));
182+ jSliderValue.setMinimum(0);
183+ jSliderValue.setMaximum(number.maximumForMessage);
184184 jSliderValue.setLabelTable(labelTable);
185185 jSliderValue.setPaintLabels(true);
186- jSpinnerValue.setModel(new SpinnerNumberModel(number.valueCurrent, number.valueMin, number.valueMax, 1));
186+ jSpinnerValue.setModel(new SpinnerNumberModel(number.valueCurrent, 0, number.maximumForMessage, 1));
187187 }
188188
189189 if (_group != null && _group._panel != null && _group._panel._listLine != null) {
@@ -190,7 +190,7 @@
190190 for (int i = 0; i < _group._panel._listLine.size(); ++ i) {
191191 XLine slider = _group._panel._listLine.get(i);
192192 if (slider == this) {
193- _group._listLineNumber.get(i)._number = number;
193+ _group._listLineNumber.get(i)._talkNumber = number;
194194 break;
195195 }
196196 }
@@ -200,7 +200,7 @@
200200
201201 jLabelName.setText(name);
202202 }
203- _data._number = number;
203+ _data._talkNumber = number;
204204
205205 jSpinnerValue.setValue(number.valueCurrent);
206206 jSliderValue.setValue(number.valueCurrent);
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XLineData.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XLineData.java (revision 78)
@@ -14,11 +14,11 @@
1414 public class XLineData {
1515 public int _seqId;
1616 public XLine _line;
17- public XNumber _number;
17+ public XNumber _talkNumber;
1818
1919 public XLineData(int seqId, XLine line, XNumber number) {
2020 _seqId = seqId;
2121 _line = line;
22- _number = number;
22+ _talkNumber = number;
2323 }
2424 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XLineSettings.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XLineSettings.java (revision 78)
@@ -48,9 +48,9 @@
4848 }
4949 jLabelName.setText(number.valueName);
5050 CrossUITool.setComboBox2(jComboBoxSubcommand, createModelSubcommand());
51- CrossUITool.setComboBox2Value(jComboBoxSubcommand, number.parameter1);
51+ CrossUITool.setComboBox2Value(jComboBoxSubcommand, number.paramData1);
5252 CrossUITool.setComboBox2Value(jComboBoxChannel, number.monitoringChannel);
53- int command = number.messageStatus;
53+ int command = number.status;
5454 if (command >= 0x80 && command <= 0xe0) {
5555 command &= 0xf0;
5656 }
@@ -453,17 +453,17 @@
453453 XNumber number = XNumber.fromCrossLetter(letter);
454454
455455 jLabelName.setText(number.valueName);
456- jSpinnerMin.setValue(Integer.valueOf(number.valueMin));
457- jSpinnerMax.setValue(Integer.valueOf(number.valueMax));
456+ jSpinnerMin.setValue(0);
457+ jSpinnerMax.setValue(Integer.valueOf(number.maximumForMessage));
458458 jSpinnerResetPosition.setValue(Integer.valueOf(number.valueResetPosition));
459459
460460 boolean ask14bit = false;
461- boolean use14bit = number.valueMax >= 128;
461+ boolean use14bit = number.maximumForMessage >= 128;
462462 if (command >= 0x80 && command <= 0xe0) {
463463 if (command == XStatic.COMMAND_CONTROLCHANGE) {
464- if (number.parameter1 >= 0 && number.parameter1 <= 0x20) {
464+ if (number.paramData1 >= 0 && number.paramData1 <= 0x20) {
465465 ask14bit = true;
466- if (number.parameter1 == XStatic.DATA1_CCBANKSELECT) {
466+ if (number.paramData1 == XStatic.DATA1_CCBANKSELECT) {
467467 this.jComboBoxChannel.setEditable(false);
468468 }
469469 }else {
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythm.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythm.java (revision 78)
@@ -28,13 +28,18 @@
2828 }
2929
3030 public void updateColor() {
31- if (_data._scanToggle) {
32- if (_data._selected && _data._scanToggle) {
31+ if (_data._talkNumber._isToggleSwitch) {
32+ if (_data._talkNumber._currentSwitch && _data._talkNumber._isToggleSwitch) {
3333 this.jButtonValue.setBackground(Color.cyan);
3434 }else {
3535 this.jButtonValue.setBackground(SystemColor.activeCaptionBorder);
3636 }
3737 }else {
38+ if (_data._talkNumber._currentSwitch) {
39+ this.jButtonValue.setBackground(Color.pink);
40+ }else {
41+ this.jButtonValue.setBackground(SystemColor.activeCaptionBorder);
42+ }
3843 }
3944 }
4045
@@ -56,7 +61,7 @@
5661 setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
5762 setLayout(new java.awt.GridBagLayout());
5863
59- jButtonValue.setText("CH1");
64+ jButtonValue.setText("Ch.");
6065 jButtonValue.addMouseListener(new java.awt.event.MouseAdapter() {
6166 public void mousePressed(java.awt.event.MouseEvent evt) {
6267 jButtonValueMousePressed(evt);
@@ -113,27 +118,28 @@
113118
114119 private void jButtonValueMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonValueMousePressed
115120 boolean selected = true;
116- if (_data._scanToggle) {
117- selected = !_data._selected;
121+ if (_data._talkNumber._isToggleSwitch) {
122+ selected = !_data._talkNumber._currentSwitch;
118123 }
119- _data.valueChanging(selected, false);
124+ _data._talkNumber._lastVelocity = _data._talkNumber._buttonVelocity;
125+ _group.valueChangingWithRhythm(this, selected);
120126 }//GEN-LAST:event_jButtonValueMousePressed
121127
122128 private void jButtonValueMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonValueMouseReleased
123129 boolean selected = false;
124- if (_data._scanToggle) {
125- return;
130+ if (_data._talkNumber._isToggleSwitch) {
131+ selected = _data._talkNumber._currentSwitch;
126132 }
127- _data.valueChanging(selected, false);
133+ _group.valueChangingWithRhythm(this, selected);
128134 }//GEN-LAST:event_jButtonValueMouseReleased
129135
130136 private void jButtonOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOptionActionPerformed
131137 XRhythmSettings setting = new XRhythmSettings();
132- setting.setData(_data);
138+ setting.setData(_data._talkNumber);
133139 setting.showAsDialog();
134140 if (setting._number != null) {
135- setting._number._seqId = _data._seqId;
136- doUpdateScreen(setting._number, true);
141+ _data._talkNumber = setting._number;
142+ doUpdateScreen(_data, true);
137143 }
138144 }//GEN-LAST:event_jButtonOptionActionPerformed
139145
@@ -147,10 +153,12 @@
147153
148154 public void doUpdateScreen(XRhythmData number, boolean needUpdate) {
149155 _data = number;
150- _data.valueChanging(false, true);
156+ updateTitle();
151157 }
152158
153- public void setButtonText(String text) {
159+ public void updateTitle() {
160+ String text = _data._talkNumber.toString();
161+ text = "<html>" + text.replaceAll("<", "&lt;").replaceAll(">", "%gt;").replaceAll("\n", "<br/>") + "</html>";
154162 jButtonValue.setText(text);
155163 }
156164 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythmData.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythmData.java (revision 78)
@@ -16,61 +16,129 @@
1616 */
1717 public class XRhythmData {
1818 public int _seqId;
19- public XRhythm _rhythm;
20- public CrossControl _group;
21- public static int TYPE_DATA1_NOTE = 0;
22- public static int TYPE_DATA2_CC = 1;
2319
24- public int _channel;
25- public int _type;
26- public int _noteOrCCNumber;
27- public boolean _scanToggle;
28- public boolean _lastHappenToggle;
29- public int _outputOffAs; // fromUI
30- public int _outputOnAs; // from UI
31- public int _velocityFixed = 100; // fromUI
20+ public XRhythmNumber _talkNumber;
3221
33- public boolean _selected;
34- public boolean _changed;
22+ public static final int MSGTYPE_NOTEON = 0x00;
23+
24+ public static final int MSGTYPE_CHANNEL_WAIT1_VALUE2 = 0x10;
25+ public static final int MSGTYPE_CHANNEL_CONTROLCHANGE = 0x11;
26+ public static final int MSGTYPE_CHANNEL_ANOTHERNOTE = 0x12;
27+
28+ public static final int MSGTYPE_CHANNEL_VALUE12 = 0x30;
29+ public static final int MSGTYPE_CHANNEL_PITCHWHEEL = 0x31;
30+
31+ public static final int MSGTYPE_CHANNEL_ONESHOT = 0x40;
32+ public static final int MSGTYPE_CHANNEL_ONESHOT_PROGRAM = 0x50;
33+ public static final int MSGTYPE_CHANNEL_ONESHOT_WAIT1 = 0x60;
34+ public static final int MSGTYPE_SYSTEM_ONESHOT = 0x70;
35+
36+ public static XRhythmData createForNoteON(int seqId, int channel, int waitingData1) {
37+ return new XRhythmData(seqId, MSGTYPE_NOTEON, channel, XStatic.COMMAND_NOTEON, waitingData1);
38+ }
39+
40+ public static XRhythmData createForControlChange(int seqId, int channel, int waitingData1) {
41+ return new XRhythmData(seqId, MSGTYPE_CHANNEL_CONTROLCHANGE, channel, XStatic.COMMAND_CONTROLCHANGE, waitingData1);
42+ }
3543
36- public XRhythmData(int seqId, int type, int channel, int noteOrCCNumber) {
44+ public static XRhythmData createForChannelData12(int seqId, int channel, int command, int waitingData1) {
45+ return new XRhythmData(seqId, MSGTYPE_CHANNEL_VALUE12, channel, command, waitingData1);
46+ }
47+
48+ public static XRhythmData createForChannel1Shot(int seqId, int channel, int command) {
49+ return new XRhythmData(seqId, MSGTYPE_CHANNEL_ONESHOT, channel, command, 0);
50+ }
51+
52+ public static XRhythmData createForChannel1ShotWithData1(int seqId, int channel, int command, int waitingData1) {
53+ return new XRhythmData(seqId, MSGTYPE_CHANNEL_ONESHOT_WAIT1, channel, command, waitingData1);
54+ }
55+
56+ public static XRhythmData createForChannel1ShotProgram(int seqId, int channel, int program) {
57+ return new XRhythmData(seqId, MSGTYPE_CHANNEL_ONESHOT_PROGRAM, channel, XStatic.COMMAND_PROGRAMCHANGE, program);
58+ }
59+
60+ public static XRhythmData createForSsytemOneShot(int seqId, int command) {
61+ return new XRhythmData(seqId, MSGTYPE_SYSTEM_ONESHOT, 0, command, 0);
62+ }
63+
64+ public static XRhythmData internalConstruct(int seqId, int type, int channel, int waitingCommand, int waitingData1) {
65+ return new XRhythmData(seqId, type, channel, waitingCommand, waitingData1);
66+ }
67+
68+ private XRhythmData(int seqId, int type, int channel, int waitingCommand, int waitingData1) {
3769 _seqId = seqId;
38- _type = type;
39- _noteOrCCNumber = noteOrCCNumber;
40- _channel = channel;
41- _outputOffAs = 127;
42- _outputOnAs = 0;
43- _selected = false;
44- _scanToggle = false;
45- _lastHappenToggle = false;
70+
71+ _talkNumber = new XRhythmNumber();
72+ _talkNumber._type = type;
73+ _talkNumber._channel = channel;
74+ _talkNumber._waitingCommand = waitingCommand;
75+ _talkNumber._waitingData1 = waitingData1;
76+ _talkNumber._switchOnIsAs = 127;
77+ _talkNumber._switchOffIsAs = 0;
78+ _talkNumber._currentSwitch = false;
79+ _talkNumber._isToggleSwitch = false;
80+ _talkNumber._lastHitToggle = false;
4681 }
47-
82+
4883 public ShortMessage createMessage(boolean switchON) throws InvalidMidiDataException {
49- if (_type == TYPE_DATA1_NOTE) {
50- if (switchON) {
51- ShortMessage msg = new ShortMessage(XStatic.COMMAND_NOTEON + _channel, _noteOrCCNumber, _velocityFixed);
52- _changed = true;
84+ ShortMessage msg;
85+ switch(_talkNumber._type & 0x10) {
86+ case MSGTYPE_NOTEON:
87+ if (switchON) {
88+ msg = new ShortMessage(XStatic.COMMAND_NOTEON + _talkNumber._channel, _talkNumber._waitingData1, _talkNumber._lastVelocity);
89+ return msg;
90+ }else {
91+ msg = new ShortMessage(XStatic.COMMAND_NOTEOFF + _talkNumber._channel, _talkNumber._waitingData1, 0);
92+ return msg;
93+ }
94+ case MSGTYPE_CHANNEL_WAIT1_VALUE2:
95+ msg = new ShortMessage(_talkNumber._waitingCommand + _talkNumber._channel, _talkNumber._waitingData1, switchON ? _talkNumber._switchOnIsAs : _talkNumber._switchOffIsAs);
5396 return msg;
54- }else {
55- ShortMessage msg = new ShortMessage(XStatic.COMMAND_NOTEOFF + _channel, _noteOrCCNumber, _outputOnAs);
56- _changed = true;
97+ case MSGTYPE_CHANNEL_VALUE12:
98+ msg = new ShortMessage(_talkNumber._waitingCommand + _talkNumber._channel, 0 , switchON ? _talkNumber._switchOnIsAs : _talkNumber._switchOffIsAs);
5799 return msg;
58- }
59- }
60- if (_type == TYPE_DATA2_CC) {
61- if (switchON) {
62- ShortMessage msg = new ShortMessage(XStatic.COMMAND_CONTROLCHANGE + _channel, _noteOrCCNumber, _outputOffAs);
63- _changed = true;
100+ case MSGTYPE_CHANNEL_ONESHOT:
101+ msg = new ShortMessage(_talkNumber._waitingCommand + _talkNumber._channel, 0, 0);
64102 return msg;
65- }else {
66- ShortMessage msg = new ShortMessage(XStatic.COMMAND_CONTROLCHANGE + _channel, _noteOrCCNumber, _outputOnAs);
67- _changed = true;
103+ case MSGTYPE_CHANNEL_ONESHOT_WAIT1:
104+ case MSGTYPE_CHANNEL_ONESHOT_PROGRAM:
105+ msg = new ShortMessage(_talkNumber._waitingCommand + _talkNumber._channel, _talkNumber._waitingData1, 0);
68106 return msg;
69- }
107+ case MSGTYPE_SYSTEM_ONESHOT:
108+ msg = new ShortMessage(_talkNumber._waitingCommand, 0, 0);
109+ return msg;
70110 }
71111 return null;
72112 }
73113
114+ public void catchSubDetected(boolean newValue) {
115+ if (newValue) {
116+ if (_talkNumber._isToggleSwitch) {
117+ if (_talkNumber._lastHitToggle) {
118+
119+ }else {
120+ _talkNumber._lastHitToggle = true;
121+ _talkNumber._changed = true;
122+ _talkNumber._currentSwitch = !_talkNumber._currentSwitch;
123+ }
124+ }else {
125+ if (!_talkNumber._currentSwitch) {
126+ _talkNumber._changed = true;
127+ _talkNumber._currentSwitch = true;
128+ }
129+ }
130+ }else {
131+ if (_talkNumber._isToggleSwitch) {
132+ _talkNumber._lastHitToggle = false;
133+ }else {
134+ if (_talkNumber._currentSwitch) {
135+ _talkNumber._changed = true;
136+ _talkNumber._currentSwitch = false;
137+ }
138+ }
139+ }
140+ }
141+
74142 public boolean catchMessageImpl(XLetter letter) {
75143 ShortMessage base = letter.getBaseMessage();
76144 if (base == null) {
@@ -83,92 +151,90 @@
83151 int data2 = base.getData2();
84152 boolean proced = false;
85153
86- if (_type == TYPE_DATA1_NOTE) {
87- if (command == XStatic.COMMAND_NOTEON && data2 > 0) {
88- if (data1 == _noteOrCCNumber && channel == _channel) {
89- proced = true;
90- if (_scanToggle) {
91- if (_lastHappenToggle) {
92-
93- }else {
94- _lastHappenToggle = true;
95- _changed = false;
96- _selected = !_selected;
154+ if (command == XStatic.COMMAND_NOTEON && data2 == 0) {
155+ command = XStatic.COMMAND_NOTEOFF;
156+ }
157+
158+ _talkNumber._lastVelocity = 127; //will be override by NoteON
159+
160+ switch(_talkNumber._type & 0x10) {
161+ case MSGTYPE_NOTEON:
162+ if (command == XStatic.COMMAND_NOTEON) {
163+ if (data1 == _talkNumber._waitingData1) {
164+ if (channel == _talkNumber._channel) {
165+ _talkNumber._lastVelocity = data2;
166+ proced = true;
167+ catchSubDetected(true);
97168 }
98- }else {
99- if (!_selected) {
100- _changed = true;
101- }
102- _selected = true;
103169 }
104- }
105- }else if (command == XStatic.COMMAND_NOTEOFF || (command == XStatic.COMMAND_NOTEON && data2 == 0)) {
106- if (_scanToggle) {
107- _lastHappenToggle = false;
108- }else {
109- if (data1 == _noteOrCCNumber && channel == _channel) {
110- if (_selected) {
111- _changed = true;
170+ }else if (command == XStatic.COMMAND_NOTEOFF) {
171+ if (data1 == _talkNumber._waitingData1) {
172+ if (channel == _talkNumber._channel) {
173+ proced = true;
174+ catchSubDetected(false);
112175 }
113- _selected = false;
114- proced = true;
115176 }
116177 }
117- }
118- }else if (_type == TYPE_DATA2_CC) {
119- if (command == XStatic.COMMAND_CONTROLCHANGE) {
120- if (data1 == _noteOrCCNumber && channel == _channel) {
121- proced = true;
122- if (data2 >= 64) {
123- if (_scanToggle) {
124- if (_lastHappenToggle) {
125-
178+ break;
179+ case MSGTYPE_CHANNEL_WAIT1_VALUE2:
180+ if (command == _talkNumber._waitingCommand) {
181+ if (data1 == _talkNumber._waitingData1) {
182+ if (channel == _talkNumber._channel) {
183+ if (data2 >= 64) {
184+ proced = true;
185+ _talkNumber._lastVelocity = _talkNumber._buttonVelocity;
186+ catchSubDetected(true);
126187 }else {
127- _lastHappenToggle = true;
128- _changed = true;
129- _selected = !_selected;
188+ proced = true;
189+ catchSubDetected(false);
130190 }
131- }else {
132- if (!_selected) {
133- _changed = true;
134- }
135- _selected = true;
136191 }
137- }else {
138- if (_scanToggle) {
139- _lastHappenToggle = false;
192+ }
193+ }
194+ break;
195+ case MSGTYPE_CHANNEL_VALUE12:
196+ if (command == _talkNumber._waitingCommand) {
197+ if (channel == _talkNumber._channel) {
198+ if (data2 >= 64) {
199+ proced = true;
200+ catchSubDetected(true);
140201 }else {
141- if (_selected) {
142- _changed = true;
143- }
144- _selected = false;
202+ proced = true;
203+ catchSubDetected(false);
204+ }
205+ }
206+ }
207+ break;
208+ case MSGTYPE_CHANNEL_ONESHOT:
209+ if (command == _talkNumber._waitingCommand) {
210+ if (channel == _talkNumber._channel) {
211+ proced = true;
212+ catchSubDetected(true);
213+ }
214+ }
215+ break;
216+ case MSGTYPE_CHANNEL_ONESHOT_WAIT1:
217+ case MSGTYPE_CHANNEL_ONESHOT_PROGRAM:
218+ if (command == _talkNumber._waitingCommand) {
219+ if (channel == _talkNumber._channel) {
220+ if (data1 == _talkNumber._waitingData1) {
221+ proced = true;
222+ catchSubDetected(true);
145223 }
146224 }
147225 }
148- }
226+ break;
227+ case MSGTYPE_SYSTEM_ONESHOT:
228+ if (command == _talkNumber._waitingCommand) {
229+ proced = true;
230+ catchSubDetected(true);
231+ }
232+ break;
149233 }
150234 return proced;
151235 }
152236
153- public void valueChanging(boolean value, boolean forceUpdate) {
154- if (value != _selected || forceUpdate) {
155- _selected = value;
156- _changed = true;
157- _rhythm.updateColor();
158- _group.doSendMessageWithRhythm(_rhythm);
159- }
160- if (forceUpdate) {
161- int ch = _channel;
162- String name = "";
163- if (_type == XRhythmData.TYPE_DATA1_NOTE) {
164- name = XStatic.noteName(_noteOrCCNumber);
165- }else {
166- name = XStatic.findControlChangeName(_noteOrCCNumber);
167- }
168- _rhythm.setButtonText(name + "\n#CH" + (ch+1));
169- }
170- }
171237 public void setScanToggle(boolean toggle) {
172- _scanToggle = toggle;
238+ _talkNumber._isToggleSwitch = toggle;
173239 }
174240 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythmNumber.java (nonexistent)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythmNumber.java (revision 78)
@@ -0,0 +1,54 @@
1+/*
2+ * To change this license header, choose License Headers in Project Properties.
3+ * To change this template file, choose Tools | Templates
4+ * and open the template in the editor.
5+ */
6+package net.osdn.projects.midicrossport.crosscontrol;
7+
8+import javax.sound.midi.ShortMessage;
9+import net.osdn.projects.midicrossport.midi.XLetter;
10+
11+/**
12+ *
13+ * @author flowflower
14+ */
15+public class XRhythmNumber {
16+ public XRhythmNumber() {
17+
18+ }
19+
20+ public int _type;
21+ public int _channel;
22+ public boolean _isToggleSwitch;
23+
24+ public int _waitingCommand;
25+ public int _waitingData1;
26+
27+ public int _lastVelocity;
28+ public int _buttonVelocity = 100;
29+
30+ public int _switchOnIsAs = 127;
31+ public int _switchOffIsAs = 0;
32+
33+ public boolean _changed = false;
34+ public boolean _currentSwitch = false;
35+
36+ public boolean _lastHitToggle = false;
37+
38+ public String toString() {
39+ int status = _waitingCommand;
40+ if (_type == XRhythmData.MSGTYPE_SYSTEM_ONESHOT) {
41+
42+ }else {
43+ status += _channel;
44+ }
45+
46+ try {
47+ ShortMessage message = new ShortMessage(status, _waitingData1, 0);
48+ return XLetter.messageToTitle(message);
49+ }catch(Exception e) {
50+ e.printStackTrace();;
51+ return "Bug";
52+ }
53+ }
54+}
--- working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythmSettings.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosscontrol/XRhythmSettings.java (revision 78)
@@ -20,7 +20,7 @@
2020 * @author user0001
2121 */
2222 public class XRhythmSettings extends javax.swing.JPanel {
23- XRhythmData _number;
23+ XRhythmNumber _number;
2424
2525 /**
2626 * Creates new form XRhythmSettings
@@ -41,19 +41,21 @@
4141
4242 jPanel1 = new javax.swing.JPanel();
4343 jLabel1 = new javax.swing.JLabel();
44+ jComboBoxType = new javax.swing.JComboBox<>();
4445 jComboBoxChannel = new javax.swing.JComboBox<>();
46+ jComboBoxDetails1 = new javax.swing.JComboBox<>();
47+ jComboBoxDetails2 = new javax.swing.JComboBox<>();
48+ jCheckBoxScanToggle = new javax.swing.JCheckBox();
49+ jSpinnerOutputOnAs = new javax.swing.JSpinner();
50+ jSpinnerOutputOffAs = new javax.swing.JSpinner();
51+ jSpinnerButtonVelocity = new javax.swing.JSpinner();
4552 jLabel2 = new javax.swing.JLabel();
46- jComboBoxType = new javax.swing.JComboBox<>();
4753 jLabel3 = new javax.swing.JLabel();
48- jComboBoxNoteOrCCNumber = new javax.swing.JComboBox<>();
4954 jLabel4 = new javax.swing.JLabel();
50- jCheckBoxScanToggle = new javax.swing.JCheckBox();
5155 jLabel5 = new javax.swing.JLabel();
5256 jLabel6 = new javax.swing.JLabel();
5357 jLabel7 = new javax.swing.JLabel();
54- jSpinnerOutputOnAs = new javax.swing.JSpinner();
55- jSpinnerOutputOffAs = new javax.swing.JSpinner();
56- jSpinnerVelocityFixed = new javax.swing.JSpinner();
58+ jLabel8 = new javax.swing.JLabel();
5759 jButton1 = new javax.swing.JButton();
5860 jButton2 = new javax.swing.JButton();
5961 jButton3 = new javax.swing.JButton();
@@ -65,25 +67,11 @@
6567
6668 jLabel1.setText("Channel");
6769 gridBagConstraints = new java.awt.GridBagConstraints();
68- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
69- gridBagConstraints.weightx = 1.0;
70- gridBagConstraints.weighty = 1.0;
71- jPanel1.add(jLabel1, gridBagConstraints);
72-
73- gridBagConstraints = new java.awt.GridBagConstraints();
74- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
75- gridBagConstraints.weightx = 1.0;
76- gridBagConstraints.weighty = 1.0;
77- jPanel1.add(jComboBoxChannel, gridBagConstraints);
78-
79- jLabel2.setText("Type");
80- gridBagConstraints = new java.awt.GridBagConstraints();
8170 gridBagConstraints.gridx = 0;
8271 gridBagConstraints.gridy = 1;
8372 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
84- gridBagConstraints.weightx = 1.0;
8573 gridBagConstraints.weighty = 1.0;
86- jPanel1.add(jLabel2, gridBagConstraints);
74+ jPanel1.add(jLabel1, gridBagConstraints);
8775
8876 jComboBoxType.addActionListener(new java.awt.event.ActionListener() {
8977 public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -92,20 +80,24 @@
9280 });
9381 gridBagConstraints = new java.awt.GridBagConstraints();
9482 gridBagConstraints.gridx = 1;
95- gridBagConstraints.gridy = 1;
83+ gridBagConstraints.gridy = 0;
9684 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
9785 gridBagConstraints.weightx = 1.0;
9886 gridBagConstraints.weighty = 1.0;
9987 jPanel1.add(jComboBoxType, gridBagConstraints);
10088
101- jLabel3.setText("Number");
89+ jComboBoxChannel.addActionListener(new java.awt.event.ActionListener() {
90+ public void actionPerformed(java.awt.event.ActionEvent evt) {
91+ jComboBoxChannelActionPerformed(evt);
92+ }
93+ });
10294 gridBagConstraints = new java.awt.GridBagConstraints();
103- gridBagConstraints.gridx = 0;
104- gridBagConstraints.gridy = 2;
95+ gridBagConstraints.gridx = 1;
96+ gridBagConstraints.gridy = 1;
10597 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
10698 gridBagConstraints.weightx = 1.0;
10799 gridBagConstraints.weighty = 1.0;
108- jPanel1.add(jLabel3, gridBagConstraints);
100+ jPanel1.add(jComboBoxChannel, gridBagConstraints);
109101 gridBagConstraints = new java.awt.GridBagConstraints();
110102 gridBagConstraints.gridx = 1;
111103 gridBagConstraints.gridy = 2;
@@ -112,18 +104,16 @@
112104 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
113105 gridBagConstraints.weightx = 1.0;
114106 gridBagConstraints.weighty = 1.0;
115- jPanel1.add(jComboBoxNoteOrCCNumber, gridBagConstraints);
116-
117- jLabel4.setText("ScanMode");
107+ jPanel1.add(jComboBoxDetails1, gridBagConstraints);
118108 gridBagConstraints = new java.awt.GridBagConstraints();
119- gridBagConstraints.gridx = 0;
109+ gridBagConstraints.gridx = 1;
120110 gridBagConstraints.gridy = 3;
121111 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
122112 gridBagConstraints.weightx = 1.0;
123113 gridBagConstraints.weighty = 1.0;
124- jPanel1.add(jLabel4, gridBagConstraints);
114+ jPanel1.add(jComboBoxDetails2, gridBagConstraints);
125115
126- jCheckBoxScanToggle.setText("ToggleSwitch");
116+ jCheckBoxScanToggle.setText("ON");
127117 jCheckBoxScanToggle.addActionListener(new java.awt.event.ActionListener() {
128118 public void actionPerformed(java.awt.event.ActionEvent evt) {
129119 jCheckBoxScanToggleActionPerformed(evt);
@@ -131,67 +121,96 @@
131121 });
132122 gridBagConstraints = new java.awt.GridBagConstraints();
133123 gridBagConstraints.gridx = 1;
134- gridBagConstraints.gridy = 3;
124+ gridBagConstraints.gridy = 4;
135125 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
136126 gridBagConstraints.weightx = 1.0;
137127 gridBagConstraints.weighty = 1.0;
138128 jPanel1.add(jCheckBoxScanToggle, gridBagConstraints);
139129
140- jLabel5.setText("Output ON as");
130+ jSpinnerOutputOnAs.setModel(new javax.swing.SpinnerNumberModel(127, 0, 127, 1));
141131 gridBagConstraints = new java.awt.GridBagConstraints();
142- gridBagConstraints.gridx = 0;
143- gridBagConstraints.gridy = 4;
132+ gridBagConstraints.gridx = 1;
133+ gridBagConstraints.gridy = 5;
144134 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
145135 gridBagConstraints.weightx = 1.0;
146136 gridBagConstraints.weighty = 1.0;
147- jPanel1.add(jLabel5, gridBagConstraints);
137+ jPanel1.add(jSpinnerOutputOnAs, gridBagConstraints);
148138
149- jLabel6.setText("OUtput OFF as");
139+ jSpinnerOutputOffAs.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1));
150140 gridBagConstraints = new java.awt.GridBagConstraints();
151- gridBagConstraints.gridx = 0;
152- gridBagConstraints.gridy = 5;
141+ gridBagConstraints.gridx = 1;
142+ gridBagConstraints.gridy = 6;
153143 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
154144 gridBagConstraints.weightx = 1.0;
155145 gridBagConstraints.weighty = 1.0;
156- jPanel1.add(jLabel6, gridBagConstraints);
146+ jPanel1.add(jSpinnerOutputOffAs, gridBagConstraints);
157147
158- jLabel7.setText("Vellocity (Fixed)");
148+ jSpinnerButtonVelocity.setModel(new javax.swing.SpinnerNumberModel(127, 0, 127, 1));
159149 gridBagConstraints = new java.awt.GridBagConstraints();
160- gridBagConstraints.gridx = 0;
161- gridBagConstraints.gridy = 6;
150+ gridBagConstraints.gridx = 1;
151+ gridBagConstraints.gridy = 7;
162152 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
163153 gridBagConstraints.weightx = 1.0;
164154 gridBagConstraints.weighty = 1.0;
165- jPanel1.add(jLabel7, gridBagConstraints);
155+ jPanel1.add(jSpinnerButtonVelocity, gridBagConstraints);
166156
167- jSpinnerOutputOnAs.setModel(new javax.swing.SpinnerNumberModel(127, 0, 127, 1));
157+ jLabel2.setText("Type");
168158 gridBagConstraints = new java.awt.GridBagConstraints();
169- gridBagConstraints.gridx = 1;
159+ gridBagConstraints.gridx = 0;
160+ gridBagConstraints.gridy = 0;
161+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
162+ gridBagConstraints.weighty = 1.0;
163+ jPanel1.add(jLabel2, gridBagConstraints);
164+
165+ jLabel3.setText("Details 1");
166+ gridBagConstraints = new java.awt.GridBagConstraints();
167+ gridBagConstraints.gridx = 0;
168+ gridBagConstraints.gridy = 2;
169+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
170+ gridBagConstraints.weighty = 1.0;
171+ jPanel1.add(jLabel3, gridBagConstraints);
172+
173+ jLabel4.setText("ToggleMode");
174+ gridBagConstraints = new java.awt.GridBagConstraints();
175+ gridBagConstraints.gridx = 0;
170176 gridBagConstraints.gridy = 4;
171177 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
172- gridBagConstraints.weightx = 1.0;
173178 gridBagConstraints.weighty = 1.0;
174- jPanel1.add(jSpinnerOutputOnAs, gridBagConstraints);
179+ jPanel1.add(jLabel4, gridBagConstraints);
175180
176- jSpinnerOutputOffAs.setModel(new javax.swing.SpinnerNumberModel(0, 0, 127, 1));
181+ jLabel5.setText("<HTML>Output<BR>ON as</HTML>");
177182 gridBagConstraints = new java.awt.GridBagConstraints();
178- gridBagConstraints.gridx = 1;
183+ gridBagConstraints.gridx = 0;
179184 gridBagConstraints.gridy = 5;
180185 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
181- gridBagConstraints.weightx = 1.0;
182186 gridBagConstraints.weighty = 1.0;
183- jPanel1.add(jSpinnerOutputOffAs, gridBagConstraints);
187+ jPanel1.add(jLabel5, gridBagConstraints);
184188
185- jSpinnerVelocityFixed.setModel(new javax.swing.SpinnerNumberModel(127, 0, 127, 1));
189+ jLabel6.setText("<HTML>Output<BR>OFF as</HTML>");
186190 gridBagConstraints = new java.awt.GridBagConstraints();
187- gridBagConstraints.gridx = 1;
191+ gridBagConstraints.gridx = 0;
188192 gridBagConstraints.gridy = 6;
189193 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
190- gridBagConstraints.weightx = 1.0;
191194 gridBagConstraints.weighty = 1.0;
192- jPanel1.add(jSpinnerVelocityFixed, gridBagConstraints);
195+ jPanel1.add(jLabel6, gridBagConstraints);
193196
197+ jLabel7.setText("<HTML>Vellocity <BR>(Button)<BR></HTML>");
194198 gridBagConstraints = new java.awt.GridBagConstraints();
199+ gridBagConstraints.gridx = 0;
200+ gridBagConstraints.gridy = 7;
201+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
202+ gridBagConstraints.weighty = 1.0;
203+ jPanel1.add(jLabel7, gridBagConstraints);
204+
205+ jLabel8.setText("Details 2");
206+ gridBagConstraints = new java.awt.GridBagConstraints();
207+ gridBagConstraints.gridx = 0;
208+ gridBagConstraints.gridy = 3;
209+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
210+ gridBagConstraints.weighty = 1.0;
211+ jPanel1.add(jLabel8, gridBagConstraints);
212+
213+ gridBagConstraints = new java.awt.GridBagConstraints();
195214 gridBagConstraints.gridheight = 4;
196215 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
197216 gridBagConstraints.weightx = 1.0;
@@ -244,14 +263,7 @@
244263 }//GEN-LAST:event_jButton1ActionPerformed
245264
246265 private void jComboBoxTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxTypeActionPerformed
247- Integer num = (Integer)CrossUITool.value2OfCombobox(jComboBoxNoteOrCCNumber);
248- if (((Integer)CrossUITool.value2OfCombobox(jComboBoxType)) == XRhythmData.TYPE_DATA1_NOTE) {
249- CrossUITool.setComboBox2(jComboBoxNoteOrCCNumber, CrossUITool.createNoteNo());
250- }else {
251- CrossUITool.setComboBox2(jComboBoxNoteOrCCNumber, CrossUITool.createControlChange());
252- }
253- CrossUITool.setComboBox2Value(jComboBoxNoteOrCCNumber, num);
254-
266+ setData(readData());
255267 }//GEN-LAST:event_jComboBoxTypeActionPerformed
256268
257269 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
@@ -259,26 +271,30 @@
259271 CrossUITool.showAsDialog(CrossUITool.getOwnerWindow(this), template);
260272 XNumber selected = template._selected;
261273 if (selected != null) {
262- int command = selected.messageStatus & 0xf0;
274+ int command = selected.status & 0xf0;
263275 if (command == XStatic.COMMAND_NOTEON || command == XStatic.COMMAND_NOTEOFF) {
264- int note = selected.parameter1;
265- CrossUITool.setComboBox2Value(jComboBoxType, XRhythmData.TYPE_DATA1_NOTE);
266- CrossUITool.setComboBox2(jComboBoxNoteOrCCNumber, CrossUITool.createNoteNo());
267- CrossUITool.setComboBox2Value(jComboBoxNoteOrCCNumber, note);
276+ int note = selected.paramData1;
277+ CrossUITool.setComboBox2Value(jComboBoxType, XRhythmData.MSGTYPE_NOTEON);
278+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createNoteNo());
279+ CrossUITool.setComboBox2Value(jComboBoxDetails1, note);
268280 }else if (command == XStatic.COMMAND_CONTROLCHANGE) {
269- int ccnumber = selected.parameter1;
270- CrossUITool.setComboBox2Value(jComboBoxType, XRhythmData.TYPE_DATA2_CC);
271- CrossUITool.setComboBox2(jComboBoxNoteOrCCNumber, CrossUITool.createControlChange());
272- CrossUITool.setComboBox2Value(jComboBoxNoteOrCCNumber, ccnumber);
281+ int ccnumber = selected.paramData1;
282+ CrossUITool.setComboBox2Value(jComboBoxType, XRhythmData.MSGTYPE_CHANNEL_WAIT1_VALUE2);
283+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createControlChange());
284+ CrossUITool.setComboBox2Value(jComboBoxDetails1, ccnumber);
273285 }
274286 }
275287 }//GEN-LAST:event_jButton3ActionPerformed
276288
277289 private void jCheckBoxScanToggleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxScanToggleActionPerformed
278- // TODO add your handling code here:
290+
279291 }//GEN-LAST:event_jCheckBoxScanToggleActionPerformed
280292
293+ private void jComboBoxChannelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxChannelActionPerformed
281294
295+ }//GEN-LAST:event_jComboBoxChannelActionPerformed
296+
297+
282298 // Variables declaration - do not modify//GEN-BEGIN:variables
283299 private javax.swing.JButton jButton1;
284300 private javax.swing.JButton jButton2;
@@ -285,7 +301,8 @@
285301 private javax.swing.JButton jButton3;
286302 private javax.swing.JCheckBox jCheckBoxScanToggle;
287303 private javax.swing.JComboBox<String> jComboBoxChannel;
288- private javax.swing.JComboBox<String> jComboBoxNoteOrCCNumber;
304+ private javax.swing.JComboBox<String> jComboBoxDetails1;
305+ private javax.swing.JComboBox<String> jComboBoxDetails2;
289306 private javax.swing.JComboBox<String> jComboBoxType;
290307 private javax.swing.JLabel jLabel1;
291308 private javax.swing.JLabel jLabel2;
@@ -294,10 +311,11 @@
294311 private javax.swing.JLabel jLabel5;
295312 private javax.swing.JLabel jLabel6;
296313 private javax.swing.JLabel jLabel7;
314+ private javax.swing.JLabel jLabel8;
297315 private javax.swing.JPanel jPanel1;
316+ private javax.swing.JSpinner jSpinnerButtonVelocity;
298317 private javax.swing.JSpinner jSpinnerOutputOffAs;
299318 private javax.swing.JSpinner jSpinnerOutputOnAs;
300- private javax.swing.JSpinner jSpinnerVelocityFixed;
301319 // End of variables declaration//GEN-END:variables
302320
303321 public void showAsDialog() {
@@ -315,38 +333,161 @@
315333 dialog.setVisible(true);
316334 }
317335
318- public void setData(XRhythmData number) {
336+ public void createControls(XRhythmNumber number) {
319337 CrossUITool.setComboBox2(jComboBoxChannel, CrossUITool.createMidiChannel());
320- CrossUITool.setComboBox2Value(jComboBoxChannel, number._channel);
321- jCheckBoxScanToggle.setSelected(number._scanToggle);
322-
338+
323339 CellList<Integer> typeList = new CellList<Integer>();
324- typeList.addWithName("Note", XRhythmData.TYPE_DATA1_NOTE);
325- typeList.addWithName("ControlChange", XRhythmData.TYPE_DATA2_CC);
340+ typeList.addWithName("NoteON", XRhythmData.MSGTYPE_NOTEON);
341+ typeList.addWithName("CC", XRhythmData.MSGTYPE_CHANNEL_CONTROLCHANGE);
342+ typeList.addWithName("ProgramChange", XRhythmData.MSGTYPE_CHANNEL_ONESHOT_PROGRAM);
343+ typeList.addWithName("Ch.Message", XRhythmData.MSGTYPE_CHANNEL_WAIT1_VALUE2);
344+ typeList.addWithName("Voice", XRhythmData.MSGTYPE_CHANNEL_ANOTHERNOTE);
345+ typeList.addWithName("Wheel", XRhythmData.MSGTYPE_CHANNEL_PITCHWHEEL);
346+ typeList.addWithName("1Shot (Ch)", XRhythmData.MSGTYPE_CHANNEL_ONESHOT);
347+ typeList.addWithName("1Shot (Sys)", XRhythmData.MSGTYPE_SYSTEM_ONESHOT);
348+
326349 CrossUITool.setComboBox2(jComboBoxType, typeList);
327- CrossUITool.setComboBox2Value(jComboBoxType, number._type);
328- if (number._type == XRhythmData.TYPE_DATA1_NOTE) {
329- CrossUITool.setComboBox2(jComboBoxNoteOrCCNumber, CrossUITool.createNoteNo());
350+
351+ CellList<Integer> temp;
352+
353+ switch(number._type) {
354+ case XRhythmData.MSGTYPE_NOTEON:
355+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createNoteNo());
356+ CrossUITool.setComboBox2(jComboBoxDetails2, CrossUITool.createZero());
357+ jComboBoxDetails1.setEditable(false);
358+ break;
359+ case XRhythmData.MSGTYPE_CHANNEL_CONTROLCHANGE:
360+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createControlChange());
361+ CrossUITool.setComboBox2(jComboBoxDetails2, CrossUITool.createZero());
362+ break;
363+ case XRhythmData.MSGTYPE_CHANNEL_ONESHOT_PROGRAM:
364+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createProgram());
365+ CrossUITool.setComboBox2(jComboBoxDetails2, CrossUITool.createZero());
366+ break;
367+ case XRhythmData.MSGTYPE_CHANNEL_WAIT1_VALUE2:
368+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createChannelModeSlider());
369+ temp = new CellList<Integer>();
370+ temp.addWithName("0", 0);
371+ temp.addWithName("127", 127);
372+ CrossUITool.setComboBox2(jComboBoxDetails2, temp);
373+ break;
374+ case XRhythmData.MSGTYPE_CHANNEL_ANOTHERNOTE:
375+ temp = new CellList<Integer>();
376+ temp.addWithName("NoteON", XStatic.COMMAND_NOTEON);
377+ temp.addWithName("NoteOFF", XStatic.COMMAND_NOTEOFF);
378+ temp.addWithName("NoteAftertouch", XStatic.COMMAND_CHANNELPRESSURE);
379+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createNoteNo());
380+ CrossUITool.setComboBox2(jComboBoxDetails2, temp);
381+ break;
382+ case XRhythmData.MSGTYPE_CHANNEL_PITCHWHEEL:
383+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createZero());
384+ CrossUITool.setComboBox2(jComboBoxDetails2, CrossUITool.createZero());
385+ break;
386+ case XRhythmData.MSGTYPE_CHANNEL_ONESHOT:
387+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createChannelModeOnShot());
388+ CrossUITool.setComboBox2(jComboBoxDetails2, CrossUITool.createZero());
389+ break;
390+
391+ case XRhythmData.MSGTYPE_SYSTEM_ONESHOT:
392+ CrossUITool.setComboBox2(jComboBoxDetails1, CrossUITool.createSystemModeOnShot());
393+ CrossUITool.setComboBox2(jComboBoxDetails2, CrossUITool.createZero());
394+ break;
395+
396+ default:
397+ //ERROR
398+ System.out.println("Found BUG");
399+ break;
400+ }
401+ }
402+
403+ public void setData(XRhythmNumber number) {
404+ createControls(number);
405+
406+ CrossUITool.setComboBox2Value(jComboBoxType, number._type);
407+ CrossUITool.setComboBox2Value(jComboBoxChannel, number._channel);
408+
409+ jCheckBoxScanToggle.setSelected(number._isToggleSwitch);
410+
411+ CrossUITool.setComboBox2Value(jComboBoxDetails1, number._waitingData1);
412+ if (number._type == XRhythmData.MSGTYPE_CHANNEL_ANOTHERNOTE) {
413+ CrossUITool.setComboBox2Value(jComboBoxDetails2, number._waitingCommand);
330414 }else {
331- CrossUITool.setComboBox2(jComboBoxNoteOrCCNumber, CrossUITool.createControlChange());
415+ CrossUITool.setComboBox2Value(jComboBoxDetails2, 0);
332416 }
333- CrossUITool.setComboBox2Value(jComboBoxNoteOrCCNumber, number._noteOrCCNumber);
334417
335- jSpinnerOutputOffAs.setValue(number._outputOffAs);
336- jSpinnerOutputOnAs.setValue(number._outputOnAs);
337- jSpinnerVelocityFixed.setValue(number._velocityFixed);
418+ jSpinnerOutputOffAs.setValue(number._switchOffIsAs);
419+ jSpinnerOutputOnAs.setValue(number._switchOnIsAs);
420+ jSpinnerButtonVelocity.setValue(number._buttonVelocity);
338421 }
339422
340- public XRhythmData readData() {
341- int type, channel, noteOrCCNumber;
423+ public XRhythmNumber readData() {
424+ int type, details1, details2;
425+ boolean toggle;
426+
427+ int waitingChannel;
428+ int waitingCommand;
429+ int waitingData1;
430+
342431 type = (Integer)CrossUITool.value2OfCombobox(jComboBoxType);
343- channel = (Integer)CrossUITool.value2OfCombobox(jComboBoxChannel);
344- noteOrCCNumber = (Integer)CrossUITool.value2OfCombobox(jComboBoxNoteOrCCNumber);
345- XRhythmData num = new XRhythmData(-1, type, channel, noteOrCCNumber);
346- num._scanToggle = jCheckBoxScanToggle.isSelected();
347- num._outputOffAs = (Integer)jSpinnerOutputOffAs.getValue();
348- num._outputOnAs = (Integer)jSpinnerOutputOnAs.getValue();
349- num._velocityFixed = (Integer)jSpinnerVelocityFixed.getValue();
350- return num;
432+ waitingChannel = (Integer)CrossUITool.value2OfCombobox(jComboBoxChannel);
433+ toggle = jCheckBoxScanToggle.isSelected();
434+ details1 = (Integer)CrossUITool.value2OfCombobox(jComboBoxDetails1);
435+ details2= (Integer)CrossUITool.value2OfCombobox(jComboBoxDetails2);
436+
437+
438+ switch(type) {
439+ case XRhythmData.MSGTYPE_NOTEON:
440+ waitingCommand = XStatic.COMMAND_NOTEON;
441+ waitingData1 = details1;
442+ break;
443+ case XRhythmData.MSGTYPE_CHANNEL_ONESHOT_PROGRAM:
444+ waitingCommand = XStatic.COMMAND_PROGRAMCHANGE;
445+ waitingData1 = details1;
446+ break;
447+ case XRhythmData.MSGTYPE_CHANNEL_WAIT1_VALUE2:
448+ waitingCommand = details1;
449+ waitingData1 = 0;
450+ break;
451+ case XRhythmData.MSGTYPE_CHANNEL_ANOTHERNOTE:
452+ waitingCommand = details2;
453+ waitingData1 = details1;
454+ break;
455+ case XRhythmData.MSGTYPE_CHANNEL_CONTROLCHANGE:
456+ waitingCommand = XStatic.COMMAND_CONTROLCHANGE;
457+ waitingData1 = details1;
458+ break;
459+ case XRhythmData.MSGTYPE_CHANNEL_PITCHWHEEL:
460+ waitingCommand = XStatic.COMMAND_PITCHWHEEL;
461+ waitingData1 = 0;
462+ break;
463+ case XRhythmData.MSGTYPE_CHANNEL_ONESHOT:
464+ waitingCommand = details1;
465+ waitingData1 = details2;
466+ break;
467+ case XRhythmData.MSGTYPE_SYSTEM_ONESHOT:
468+ waitingCommand = details1;
469+ waitingData1 = details2;
470+ break;
471+
472+ default:
473+ //ERROR
474+ waitingCommand = 0;
475+ waitingData1 = 0;
476+ System.out.println("Found BUG");
477+ break;
478+ }
479+
480+ XRhythmNumber ret = new XRhythmNumber();
481+ ret._type = type;
482+ ret._channel = waitingChannel;
483+ ret._waitingCommand = waitingCommand;
484+ ret._waitingData1 = waitingData1;
485+ ret._isToggleSwitch = toggle;
486+
487+ ret._switchOffIsAs = (Integer)jSpinnerOutputOffAs.getValue();
488+ ret._switchOnIsAs = (Integer)jSpinnerOutputOnAs.getValue();
489+ ret._buttonVelocity = (Integer)jSpinnerButtonVelocity.getValue();
490+
491+ return ret;
351492 }
352493 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/CrossModule.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/CrossModule.java (revision 78)
@@ -6,6 +6,8 @@
66 package net.osdn.projects.midicrossport.crosssmodule;
77
88 import java.util.ArrayList;
9+import java.util.logging.Level;
10+import java.util.logging.Logger;
911 import javax.sound.midi.InvalidMidiDataException;
1012 import javax.sound.midi.ShortMessage;
1113 import net.osdn.projects.midicrossport.utilities.UIThread;
@@ -14,6 +16,7 @@
1416 import net.osdn.projects.midicrossport.midi.XLetter;
1517 import net.osdn.projects.midicrossport.midi.XOutputThread;
1618 import net.osdn.projects.midicrossport.XStatic;
19+import net.osdn.projects.midicrossport.midi.NoteOffListener;
1720 import net.osdn.projects.midicrossport.swing.CrossUITool;
1821
1922 /**
@@ -40,6 +43,7 @@
4043
4144 CrossModulePanel _panel;
4245 public ArrayList<RiverShapeCollection> _shapeCollection;
46+ NoteOffListener _noteOff;
4347
4448 public String toString() {
4549 return "CrossRiver";
@@ -63,6 +67,7 @@
6367 rpnMSB = new int[16];
6468 rpnReceived = new boolean[16];
6569 _shapeCollection = new ArrayList<RiverShapeCollection>();
70+ _noteOff = new NoteOffListener();
6671 }
6772
6873 /**
@@ -98,9 +103,13 @@
98103 return;
99104 }
100105
101- if (_input == null || _input == letter.getInDevice()) {
102- ShortMessage base = letter.getBaseMessage();
103- if (base != null) {
106+ ShortMessage base = letter.getBaseMessage();
107+ if (base != null) {
108+ if (base.getCommand() == XStatic.COMMAND_NOTEOFF) {
109+ _noteOff.processNoteOff(_input, base.getChannel(), base.getData1());
110+ return;
111+ }
112+ if (_input == null || _input == letter.getInDevice()) {
104113 int status = base.getStatus();
105114 int command = status & 0xf0;
106115 int channel = status & 0x0f;
@@ -164,6 +173,23 @@
164173 RiverShapeCollection col = _shapeCollection.get(i);
165174 try {
166175 if (col.processLetter(_defaultOutput, letter)) {
176+ if (letter.getBaseMessage().getCommand() == XStatic.COMMAND_NOTEON) {
177+ final int ch = letter.getBaseMessage().getChannel();
178+ final int note = letter.getBaseMessage().getData1();
179+ final XOutput output = _defaultOutput;
180+ _noteOff.addListener(_input, ch, note, new Runnable() {
181+ public void run() {
182+ try {
183+ ShortMessage msg = new ShortMessage(XStatic.COMMAND_NOTEOFF + ch, note, 0);
184+ XLetter letter = new XLetter(_input);
185+ letter.setBaseMessage(msg);
186+ col.processLetter(output, letter);
187+ } catch (InvalidMidiDataException ex) {
188+ Logger.getLogger(CrossModule.class.getName()).log(Level.SEVERE, null, ex);
189+ }
190+ }
191+ });
192+ }
167193 dispatched = true;
168194 break;
169195 }
@@ -172,6 +198,23 @@
172198 }
173199 }
174200 if (!dispatched) {
201+ if (letter.getBaseMessage().getCommand() == XStatic.COMMAND_NOTEON) {
202+ final int ch = letter.getBaseMessage().getChannel();
203+ final int note = letter.getBaseMessage().getData1();
204+ final XOutput output = _defaultOutput;
205+ _noteOff.addListener(_input, ch, note, new Runnable() {
206+ public void run() {
207+ try {
208+ ShortMessage msg = new ShortMessage(XStatic.COMMAND_NOTEOFF + ch, note, 0);
209+ XLetter letter = new XLetter(_input);
210+ letter.setBaseMessage(msg);
211+ XOutputThread.push(output, letter);
212+ } catch (InvalidMidiDataException ex) {
213+ Logger.getLogger(CrossModule.class.getName()).log(Level.SEVERE, null, ex);
214+ }
215+ }
216+ });
217+ }
175218 XOutputThread.push(_defaultOutput, letter);
176219 }
177220 }
--- working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/CrossModulePanel.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/CrossModulePanel.java (revision 78)
@@ -14,7 +14,6 @@
1414 import net.osdn.projects.midicrossport.midi.XInput;
1515 import net.osdn.projects.midicrossport.midi.XOutput;
1616 import net.osdn.projects.midicrossport.XStatic;
17-import net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers;
1817 import net.osdn.projects.midicrossport.utilities.CellList;
1918 import net.osdn.projects.midicrossport.swing.CrossUITool;
2019
@@ -260,12 +259,6 @@
260259 for (int i = 0; i < 16; ++ i) {
261260 int channel = i + 1;
262261
263- String prog = XStatic.toHexFF(_thru.programNo[i]);
264- GMProgramNumbers list = XResource.getGMProgramNumbers();
265- String name = list.get(_thru.programNo[i]).cellName();
266-
267- if (name == null) name = "unknown";
268-
269262 String text = "Ch." + channel + " ";
270263
271264 if (_thru.bankReceived[i]) {
@@ -287,6 +280,18 @@
287280 }
288281
289282 if (_thru.programReceived[i]) {
283+ String prog = XStatic.toHexFF(_thru.programNo[i]);
284+ String name = null;
285+ if (i != 9) {
286+ try {
287+ name = XResource.getGMProgramNumbers().findByValue(_thru.programNo[i]).cellName();
288+ }catch(Exception e) {
289+ }
290+ if (name == null) name = "-";
291+ }else {
292+ name = "DrumKit";
293+ }
294+
290295 text += _thru.programNo[i] + ":" + name;
291296 }
292297
--- working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/RiverOriginShape.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/RiverOriginShape.java (revision 78)
@@ -7,6 +7,7 @@
77
88 import javax.sound.midi.InvalidMidiDataException;
99 import javax.sound.midi.ShortMessage;
10+import net.osdn.projects.midicrossport.XResource;
1011 import net.osdn.projects.midicrossport.XStatic;
1112 import net.osdn.projects.midicrossport.midi.XLetter;
1213 import net.osdn.projects.midicrossport.midi.XOutput;
@@ -47,7 +48,8 @@
4748 str.append("[Bank=AsIs]");
4849 }
4950 if (needSendProgramFixed) {
50- str.append("[Program=").append(fixedProgram).append("]");
51+ str.append("[Program=").append(fixedProgram).append(":");
52+ str.append(XResource.getGMProgramNumbers().findByValue(fixedProgram).cellName());
5153 }
5254 if (needSendProgramAsIs) {
5355 str.append("[Program=AsIs]");
--- working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/RiverShapeCollection.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/crosssmodule/RiverShapeCollection.java (revision 78)
@@ -6,10 +6,13 @@
66 package net.osdn.projects.midicrossport.crosssmodule;
77
88 import java.util.ArrayList;
9+import java.util.logging.Level;
10+import java.util.logging.Logger;
911 import javax.sound.midi.InvalidMidiDataException;
1012 import javax.sound.midi.ShortMessage;
1113 import net.osdn.projects.midicrossport.XResource;
1214 import net.osdn.projects.midicrossport.XStatic;
15+import net.osdn.projects.midicrossport.midi.NoteOffListener;
1316 import net.osdn.projects.midicrossport.midi.XLetter;
1417 import net.osdn.projects.midicrossport.midi.XOutput;
1518
@@ -34,6 +37,7 @@
3437 int[] _currentProcessingBankMSB = new int[16];
3538 int[] _currentProcessingBankLSB = new int[16];
3639 int[] _currentProcessingProgram = new int[16];
40+ NoteOffListener _noteOff = new NoteOffListener();
3741
3842 public String toString() {
3943 StringBuffer str = new StringBuffer();
@@ -68,16 +72,20 @@
6872 return false;
6973 }
7074
71- int status = msg.getStatus();
72- int command = status & 0xf0;
73- int channel = status & 0x0f;
74- int data1 = msg.getData1();
75- int data2 = msg.getData2();
75+ final int status = msg.getStatus();
76+ final int command = status & 0xf0;
77+ final int channel = status & 0x0f;
78+ final int data1 = msg.getData1();
79+ final int data2 = msg.getData2();
80+ final XOutput output = defaultOutput;
7681
7782 if (status < 0x80 || status > 0xe0) {
7883 return false;
7984 }
8085
86+ if (command == XStatic.COMMAND_NOTEOFF && _noteOff.processNoteOff(null, channel, data1)) {
87+ return true;
88+ }
8189 //飛んできたプログラム番号を記録する
8290 if (command == XStatic.COMMAND_CONTROLCHANGE && data1 == 0) {
8391 _currentProcessingBankMSB[channel] = data2;
@@ -137,6 +145,21 @@
137145
138146 for (RiverOriginShape shape: this._listShapes) {
139147 shape.processLetter(defaultOutput, bankMSB, bankLSB, program, letter);
148+ if (command == XStatic.COMMAND_NOTEON) {
149+ final RiverOriginShape shape0 = shape;
150+ _noteOff.addListener(null, channel, data1, new Runnable() {
151+ public void run() {
152+ try {
153+ ShortMessage msg = new ShortMessage(XStatic.COMMAND_NOTEOFF + channel, data1, 0);
154+ XLetter letter = new XLetter(null);
155+ letter.setBaseMessage(msg);
156+ shape0.processLetter(output, bankMSB, bankLSB, program, letter);
157+ } catch (InvalidMidiDataException ex) {
158+ Logger.getLogger(CrossModule.class.getName()).log(Level.SEVERE, null, ex);
159+ }
160+ }
161+ });
162+ }
140163 proced = true;
141164 }
142165 return proced;
--- working-not-tested/src/net/osdn/projects/midicrossport/midi/NoteOffListener.java (nonexistent)
+++ working-not-tested/src/net/osdn/projects/midicrossport/midi/NoteOffListener.java (revision 78)
@@ -0,0 +1,58 @@
1+/*
2+ * To change this license header, choose License Headers in Project Properties.
3+ * To change this template file, choose Tools | Templates
4+ * and open the template in the editor.
5+ */
6+package net.osdn.projects.midicrossport.midi;
7+
8+import java.util.Iterator;
9+import java.util.LinkedList;
10+import net.osdn.projects.midicrossport.midi.NoteOffListener.WaitingElement;
11+
12+/**
13+ *
14+ * @author FlowFlower
15+ */
16+public class NoteOffListener {
17+ static class WaitingElement {
18+ XInput _input;
19+ int _channel;
20+ int _note;
21+ Runnable _runnable;
22+ }
23+
24+ private LinkedList<WaitingElement> _list = new LinkedList<WaitingElement>();
25+
26+ public NoteOffListener() {
27+ }
28+
29+ public synchronized void addListener(XInput input, int ch, int note, Runnable run) {
30+ WaitingElement e = new WaitingElement();
31+ e._input = input;
32+ e._channel = ch;
33+ e._note = note;
34+ e._runnable = run;
35+ _list.add(e);
36+ }
37+
38+ public synchronized boolean processNoteOff(XInput input, int ch, int note) {
39+ boolean proc;
40+ boolean saveProc = false;
41+ do {
42+ proc = false;
43+ Iterator<WaitingElement> it = _list.iterator();
44+ while (it.hasNext()) {
45+ WaitingElement e = it.next();
46+ if (e._input == input && e._channel == ch && e._note == note) {
47+ e._runnable.run();
48+ it.remove();
49+ proc = true;
50+ }
51+ }
52+ if (proc) {
53+ saveProc = true;
54+ }
55+ }while(proc);
56+ return saveProc;
57+ }
58+}
--- working-not-tested/src/net/osdn/projects/midicrossport/midi/XInputThread.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/midi/XInputThread.java (revision 78)
@@ -35,7 +35,11 @@
3535 while(true) {
3636 XLetter letter = _queue.pop();
3737 if (letter != null) {
38- processMidiIn_internal(letter);
38+ try {
39+ processMidiIn_internal(letter);
40+ }catch(Throwable e) {
41+ e.printStackTrace();
42+ }
3943 }else {
4044 _queue.quit();
4145 break;
--- working-not-tested/src/net/osdn/projects/midicrossport/midi/XLetter.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/midi/XLetter.java (revision 78)
@@ -3,6 +3,9 @@
33 import net.osdn.projects.midicrossport.XStatic;
44 import javax.sound.midi.MidiMessage;
55 import javax.sound.midi.ShortMessage;
6+import net.osdn.projects.midicrossport.crosscontrol.XRhythmData;
7+import net.osdn.projects.midicrossport.swing.CrossUITool;
8+import net.osdn.projects.midicrossport.utilities.CellList;
69
710 /**
811 * infomation from g200kg Music & Software https://www.g200kg.com/
@@ -132,7 +135,7 @@
132135 }
133136
134137 public String toString() {
135- ShortMessage message = this.baseMessage;
138+ ShortMessage message = baseMessage;
136139 String dump = getDump(message);
137140 if (dump == null) {
138141 return null;
@@ -144,7 +147,11 @@
144147 }
145148 }
146149 dump += " = ";
150+
151+ return dump + XLetter.messageToString(message, additionalMessage1);
152+ }
147153
154+ public static String messageToTitle(ShortMessage message) {
148155 int status = message.getStatus();
149156 int command = status & 0xf0;
150157 int channel = status & 0x0f;
@@ -154,44 +161,98 @@
154161 String name = XStatic.findMessageName(message);
155162
156163 if (name == null) {
157- return dump;
164+ return "bug";
158165 }
159166
160167 if (command >= 0x80 && command <= 0xe0) {
161168 if (command == XStatic.COMMAND_CONTROLCHANGE) {
169+ return name + "\nCh." + (channel+1);
170+ }else {
171+ if (command == XStatic.COMMAND_NOTEON) {
172+ int note = data1;
173+ int velocity = data2;
174+ return XStatic.noteName(note) + "\nCh." + (channel+1);
175+ }
176+ if (command == XStatic.COMMAND_NOTEOFF || command == XStatic.COMMAND_POLYPRESSURE) {
177+ int note = data1;
178+ int velocity = data2;
179+ return name + XStatic.noteName(note) + "\nCh." + (channel+1);
180+ }
181+ if (command == XStatic.COMMAND_PROGRAMCHANGE) {
182+ int program = data1;
183+ return "Program" + program + "\nCh." + (channel+1);
184+ }
185+ if (command == XStatic.COMMAND_CHANNELPRESSURE) {
186+ return name + "\nCh." + (channel+1);
187+ }
188+ if (command == XStatic.COMMAND_PITCHWHEEL) {
189+ int wheel = (data2 << 7) + data1;
190+ return name + "\nCh." + (channel+1);
191+ }
192+ }
193+ }
194+ if (status >= 0xf0 && status <= 0xf7) {
195+ if (status == XStatic.STATUS_SONGPOSITION) {
196+ int lsb = data1;
197+ int msb = data2;
198+ return name + "=" + ((msb<<7)+lsb);
199+ }
200+ if (status == XStatic.STATUS_SONGSELECT) {
201+ return name + "=" + data1;
202+ }
203+ }
204+
205+ return name;
206+ }
207+
208+ public static String messageToString(ShortMessage message, ShortMessage additionalMessage) {
209+ int status = message.getStatus();
210+ int command = status & 0xf0;
211+ int channel = status & 0x0f;
212+ int data1 = message.getData1();
213+ int data2 = message.getData2();
214+
215+ String name = XStatic.findMessageName(message);
216+
217+ if (name == null) {
218+ return "bug";
219+ }
220+
221+ if (command >= 0x80 && command <= 0xe0) {
222+ if (command == XStatic.COMMAND_CONTROLCHANGE) {
162223 if (data1 >= 120 && data1 <= 127) {
163224 if (data1 == XStatic.DATA1_LOCALCONTROL || data1 == XStatic.DATA1_ALLNOTEOFF) {
164- return dump + name + "[CH:" + (channel+1) + "/" + (data2 == 0 ? "OFF" : "ON") + "]";
225+ return name + "#" + (channel+1) + "/" + (data2 == 0 ? "OFF" : "ON");
165226 }
166227 if (data1 == XStatic.DATA1_MONOMODE) {
167- return name + "[CH:" + (channel+1) + "/" + data1 + "]";
228+ return name + "#" + (channel+1) + "/" + data1;
168229 }
169- return dump + name + "[CH:" + (channel+1) + "]";
230+ return name + "#" + (channel+1);
170231 }
171- if (additionalMessage1 != null) {
232+ if (additionalMessage != null) {
172233 int msb = message.getData2();
173- int lsb = additionalMessage1.getData2();
234+ int lsb = additionalMessage.getData2();
174235 int value = (msb << 7) + lsb;
175- return dump + name + "[CH:" + (channel+1) + "/" + value + "]";
236+ return name + "#" + (channel+1) + "/" + value;
176237 }
177- return dump + name + "[CH:" + (channel+1) + "/" + message.getData1() + "]";
238+ return name + "#" + (channel+1) + "/" + message.getData1();
178239 }else {
179240 if (command == XStatic.COMMAND_NOTEON || command == XStatic.COMMAND_NOTEOFF
180241 || command == XStatic.COMMAND_POLYPRESSURE) {
181242 int note = data1;
182243 int velocity = data2;
183- return dump + name + "[CH:" + (channel+1) + "/" + XStatic.noteName(note) + "/" + velocity +"]";
244+ return name + "#" + (channel+1) + "/" + XStatic.noteName(note) + "/" + velocity;
184245 }
185246 if (command == XStatic.COMMAND_PROGRAMCHANGE) {
186247 int program = data1;
187- return dump + name + "[CH:" + (channel+1) + "/" + program +"]";
248+ return name + "#" + (channel+1) + "/" + program;
188249 }
189250 if (command == XStatic.COMMAND_CHANNELPRESSURE) {
190- return dump + name + "[CH:" + (channel+1) + "/" + data1 + "]";
251+ return name + "#" + (channel+1) + "/" + data1;
191252 }
192253 if (command == XStatic.COMMAND_PITCHWHEEL) {
193254 int wheel = (data2 << 7) + data1;
194- return dump + name + "[CH:" + (channel+1) + "/" + wheel + "]";
255+ return name + "#" + (channel+1) + "/" + wheel;
195256 }
196257 }
197258 }
@@ -199,13 +260,13 @@
199260 if (status == XStatic.STATUS_SONGPOSITION) {
200261 int lsb = data1;
201262 int msb = data2;
202- return dump + name + "{" + ((msb<<7)+lsb) + "]";
263+ return name + "=" + ((msb<<7)+lsb);
203264 }
204265 if (status == XStatic.STATUS_SONGSELECT) {
205- return dump + name + "[" + data1 + "]";
266+ return name + "=" + data1;
206267 }
207268 }
208269
209- return dump + name +" (UNKNOWN PARAMETER)";
270+ return name;
210271 }
211272 }
--- working-not-tested/src/net/osdn/projects/midicrossport/midi/XNumber.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/midi/XNumber.java (revision 78)
@@ -20,15 +20,15 @@
2020
2121 public XOutput output;
2222
23- public int messageStatus;
24- public int parameter1; //CC Number / noteNumber / MSB etc
23+ public int status;
24+ public int paramData1;
2525
2626 public String valueName;
2727 public int valueCurrent;
2828 public int valueResetPosition;
29- public int valueMin;
30- public int valueMax;
3129
30+ public int maximumForMessage;
31+
3232 public String toString() {
3333 try {
3434 return this.toCrossLetter().toString();
@@ -40,11 +40,11 @@
4040 }
4141
4242 public int messageCommand() {
43- return messageStatus & 0xf0;
43+ return status & 0xf0;
4444 }
4545
4646 public int messageChannel() {
47- return messageStatus & 0x0f;
47+ return status & 0x0f;
4848 }
4949
5050 public void setMessageCommand(int command) {
@@ -51,14 +51,14 @@
5151 if ((command & 0x0f) != 0) {
5252 throw new IllegalArgumentException("command " + command);
5353 }
54- messageStatus = messageStatus & 0x0f + command;
54+ status = status & 0x0f + command;
5555 }
5656
5757 public void setMessageChannel(int channel) {
5858 if (channel < 0 || channel >= 16) {
59- throw new IllegalArgumentException("channel " + channel + " must 0-15");
59+ throw new IllegalArgumentException("Ch. " + channel + " must 0-15");
6060 }
61- messageStatus = messageStatus & 0xf0 + channel;
61+ status = status & 0xf0 + channel;
6262 }
6363
6464 public XLetter toCrossLetter() throws InvalidMidiDataException {
@@ -66,7 +66,7 @@
6666 ShortMessage msg = null;
6767 ShortMessage additional = null;
6868
69- int status = this.messageStatus;
69+ int status = this.status;
7070
7171 int command = status & 0xf0;
7272 int channel = status & 0x0f;
@@ -76,11 +76,11 @@
7676
7777 if (command >= 0x80 && command <= 0xe0) {
7878 if (command == XStatic.COMMAND_CONTROLCHANGE) {
79- data1 = parameter1;
79+ data1 = paramData1;
8080 if (data1 >= 0 && data1 < 0x20 || (data1 >= 0x20 && data1 <= 0x40)) {
8181 //TODO RPN/NRPN MSB-LSB
82- if (valueMax - valueMin == 16383) {
83- int value = (0 - valueMin) + valueCurrent;
82+ if (maximumForMessage == 16383) {
83+ int value =valueCurrent;
8484 int msb = valueCurrent / 128;
8585 int lsb = valueCurrent % 128;
8686
@@ -90,7 +90,7 @@
9090 letter.setAdditionalMessage1(additional);
9191 return letter;
9292 } else {
93- int value = valueCurrent - valueMin;
93+ int value = valueCurrent;
9494 data2 = value;
9595 if (value < 0) {
9696 value = 0;
@@ -105,15 +105,13 @@
105105 }
106106 if (data1 >= 64 && data1 <= 119) {
107107 if (data1 == 96 || data1 == 97) { //DATA_INC / DATA_DEC
108- valueMin = 0;
109- valueMax = 0;
108+ maximumForMessage = 0;
110109 valueResetPosition = 0;
111110 } else {
112- valueMin = 0;
113- valueMax = 127;
111+ maximumForMessage = 127;
114112 valueResetPosition = 127;
115113 }
116- if (valueMax == 127) {
114+ if (maximumForMessage == 127) {
117115 data2 = valueCurrent;
118116 }
119117 msg = new ShortMessage(status, channel, data1, data2);
@@ -128,7 +126,7 @@
128126 } else {
129127 data2 = 0;
130128 }
131- if (valueMax == 127) {
129+ if (maximumForMessage == 127) {
132130 data2 = valueCurrent;
133131 }
134132 msg = new ShortMessage(status, channel, data1, data2);
@@ -142,7 +140,7 @@
142140 case XStatic.COMMAND_NOTEON:
143141 case XStatic.COMMAND_NOTEOFF:
144142 case XStatic.COMMAND_POLYPRESSURE:
145- data1 = parameter1;
143+ data1 = paramData1;
146144 data2 = valueCurrent;
147145 msg = new ShortMessage(status, channel, data1, data2);
148146 letter.setBaseMessage(msg);
@@ -158,7 +156,7 @@
158156 letter.setBaseMessage(msg);
159157 return letter;
160158 case XStatic.COMMAND_PITCHWHEEL:
161- int wheel = valueCurrent - valueMin;
159+ int wheel = valueCurrent;
162160 int msb = wheel >> 7;
163161 int lsb = wheel & 0x7f;
164162 data1 = lsb;
@@ -213,19 +211,18 @@
213211 int data1 = msg.getData1();
214212 int data2 = msg.getData2();
215213
216- number.messageStatus = status; // commmand + channel
217- number.parameter1 = 0; //CC Number / noteNumber / RPN MSB etc
214+ number.status = status; // commmand + channel
215+ number.paramData1 = 0; //CC Number / noteNumber / RPN MSB etc
218216
219217 number.valueName = XStatic.findMessageName(letter.getBaseMessage());
220218 number.valueCurrent = 0;
221219 number.valueResetPosition = 0;
222- number.valueMin = 0;
223- number.valueMax = 0;
220+ number.maximumForMessage = 0;
224221
225222 if (command >= 0x80 && command <= 0xe0) {
226223 number.monitoringChannel = channel;
227224 if (command == XStatic.COMMAND_CONTROLCHANGE) {
228- number.parameter1 = data1;
225+ number.paramData1 = data1;
229226 number.valueCurrent = data2;
230227 if (data1 >= 120 && data1 <= 127) {
231228 switch (data1) {
@@ -234,8 +231,7 @@
234231 case XStatic.DATA1_CCRESETALLCONTROLLER:
235232 break;
236233 case XStatic.DATA1_LOCALCONTROL:
237- number.valueMin = 0;
238- number.valueMax = 127;
234+ number.maximumForMessage = 127;
239235 number.valueResetPosition = 127;
240236 break;
241237 case XStatic.DATA1_ALLNOTEOFF:
@@ -249,7 +245,7 @@
249245 case XStatic.DATA1_POLYMODE:
250246 break;
251247 default:
252- number.valueMax = 127;
248+ number.maximumForMessage = 127;
253249 number.valueCurrent = data2;
254250 break;
255251 }
@@ -259,8 +255,7 @@
259255 if (data1 >= 0 && data1 <= 63) {
260256 ShortMessage msg2 = letter.getAdditionalMessage1();
261257 if (msg2 != null) {
262- number.valueMin = 0;
263- number.valueMax = 16383;
258+ number.maximumForMessage = 16383;
264259 if (data1 == XStatic.DATA1_CCMODULATION) {
265260 number.valueResetPosition = 0;
266261 } else if (data1 == XStatic.DATA1_CCPANPOT) { //pan
@@ -275,8 +270,7 @@
275270 number.valueCurrent = (data2 << 7);
276271 }
277272 }else {
278- number.valueMin = 0;
279- number.valueMax = 127;
273+ number.maximumForMessage = 127;
280274 if (data1 == XStatic.DATA1_CCMODULATION) {
281275 number.valueResetPosition = 0;
282276 } else if (data1 == XStatic.DATA1_CCPANPOT) { //balance
@@ -289,8 +283,7 @@
289283 }
290284 return number;
291285 } else if (data1 >= 64 && data1 <= 119) {
292- number.valueMin = 0;
293- number.valueMax = 127;
286+ number.maximumForMessage = 127;
294287 if (data1 == XStatic.DATA1_CCMODULATION) {
295288 number.valueResetPosition = 0;
296289 } else if (data1 == XStatic.DATA1_CCPANPOT) {
@@ -297,7 +290,7 @@
297290 number.valueResetPosition = 64;
298291 }else if (data1 == 96 || data1 == 97) { //DATA_INC / DATA_DEC
299292 number.valueResetPosition = 0;
300- number.valueMax = 1;
293+ number.maximumForMessage = 1;
301294 } else if (data1 == XStatic.DATA1_SOUND_ATTACKTIME
302295 || data1 == XStatic.DATA1_SOUND_RELEASETIME
303296 || data1 == XStatic.DATA1_SOUND_DECAYTIME
@@ -306,32 +299,28 @@
306299 } else {
307300 number.valueResetPosition = 0;
308301 }
309- if (number.valueMax < number.valueCurrent) {
310- number.valueCurrent = number.valueMax;
302+ if (number.maximumForMessage < number.valueCurrent) {
303+ number.valueCurrent = number.maximumForMessage;
311304 }
312305 return number;
313306 } else if (data1 >= 120 && data1 <= 127) {
314307 if (data1 != 126) {
315- number.valueMin = 0;
316- number.valueMax = 0;
308+ number.maximumForMessage = 0;
317309 number.valueResetPosition = 0;
318310 } else if (data1 == 123) { //call note
319- number.valueMin = 0;
320- number.valueMax = 127;
311+ number.maximumForMessage = 127;
321312 number.valueResetPosition = 0;
322313 number.valueCurrent = data2;
323314 } else if (data1 == 126) { // mono mode
324- number.valueMin = 0;
325315 //TODO fixencoder/decoder both number.valueMax = 16;
326316 //number.valueResetPosition = 1;
327317 number.valueCurrent = data2;
328318 } else {
329- number.valueMin = 0;
330- number.valueMax = 0;
319+ number.maximumForMessage = 0;
331320 number.valueResetPosition = 0;
332321 }
333- if (number.valueMax < number.valueCurrent) {
334- number.valueCurrent = number.valueMax;
322+ if (number.maximumForMessage < number.valueCurrent) {
323+ number.valueCurrent = number.maximumForMessage;
335324 }
336325 } else {
337326 throw new IllegalArgumentException("CC data was " + data1);
@@ -342,34 +331,29 @@
342331 case XStatic.COMMAND_NOTEON:
343332 case XStatic.COMMAND_NOTEOFF:
344333 case XStatic.COMMAND_POLYPRESSURE:
345- number.parameter1 = data1;
334+ number.paramData1 = data1;
346335 number.valueCurrent = data2;
347- number.valueMin = 0;
348- number.valueMax = (command == XStatic.COMMAND_NOTEOFF) ? 0 : 127;
336+ number.maximumForMessage = (command == XStatic.COMMAND_NOTEOFF) ? 0 : 127;
349337 number.valueResetPosition = 0;
350338 return number;
351339 case XStatic.COMMAND_PROGRAMCHANGE:
352340 number.valueCurrent = data1;
353- number.valueMin = 0;
354- number.valueMax = 127;
341+ number.maximumForMessage = 127;
355342 number.valueResetPosition = 0;
356343 return number;
357344 case XStatic.COMMAND_CHANNELPRESSURE:
358345 number.valueCurrent = data1;
359- number.valueMin = 0;
360- number.valueMax = 127;
346+ number.maximumForMessage = 127;
361347 number.valueResetPosition = 0;
362348 return number;
363349 case XStatic.COMMAND_PITCHWHEEL:
364- number.valueMin = 0;
365- number.valueCurrent = (data2 << 7) + data1 + number.valueMin;
366- number.valueMax = 16383;
350+ number.valueCurrent = (data2 << 7) + data1;
351+ number.maximumForMessage = 16383;
367352 number.valueResetPosition = 8192;
368353 return number;
369- default:
370- number.valueMin = 0;
371- number.valueCurrent = (data2 << 7) + data1 + number.valueMin;
372- number.valueMax = 16383;
354+ default://TODO fill more
355+ number.valueCurrent = (data2 << 7) + data1;
356+ number.maximumForMessage = 16383;
373357 number.valueResetPosition = 8192;
374358 return number;
375359 }
@@ -378,15 +362,13 @@
378362 <= 0xf7) {
379363 if (status == 0xf2) { // song position
380364 number.valueCurrent = (data2 << 7) + data1;
381- number.valueMin = 0;
382- number.valueMax = 16383;
365+ number.maximumForMessage = 16383;
383366 number.valueResetPosition = 0;
384367 return number;
385368 }
386369 if (status == 0xf3) { //song number
387370 number.valueCurrent = data1;
388- number.valueMin = 0;
389- number.valueMax = 127;
371+ number.maximumForMessage = 127;
390372 number.valueResetPosition = 0;
391373 return number;
392374 }
@@ -401,10 +383,10 @@
401383 }
402384
403385 public void toggleValue() {
404- if (valueCurrent == valueMax) {
405- valueCurrent = valueMin;
386+ if (valueCurrent == maximumForMessage) {
387+ valueCurrent = 0;
406388 } else {
407- valueCurrent = valueMax;
389+ valueCurrent = maximumForMessage;
408390 }
409391 }
410392
@@ -421,10 +403,10 @@
421403 int data1 = msg.getData1();
422404 int data2 = msg.getData2();
423405
424- int statusV = messageStatus;
425- int commandV = messageStatus & 0xf0;
426- int channelV = messageStatus & 0x0f;
427- int data1V = parameter1;
406+ int statusV = this.status;
407+ int commandV = this.status & 0xf0;
408+ int channelV = this.status & 0x0f;
409+ int data1V = paramData1;
428410
429411 if (commandV == command) {
430412 if (monitoringChannel == channel) {
@@ -433,7 +415,7 @@
433415 if (data1V != data1) {
434416 return false;
435417 } else {
436- if (valueMax == 16383) {
418+ if (maximumForMessage == 16383) {
437419 int msb = data2;
438420 int lsb = 0;
439421 ShortMessage msg1 = letter.getAdditionalMessage1();
@@ -447,7 +429,7 @@
447429 return true;
448430 }
449431 case XStatic.COMMAND_POLYPRESSURE:
450- if (parameter1 == data1) {
432+ if (paramData1 == data1) {
451433 this.valueCurrent = data2;
452434 return true;
453435 }
--- working-not-tested/src/net/osdn/projects/midicrossport/midi/XOutputThread.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/midi/XOutputThread.java (revision 78)
@@ -36,9 +36,17 @@
3636 if (letter != null) {
3737 XLetterCapture track = _doCapture;
3838 if (track != null) {
39- track.process(letter);
39+ try {
40+ track.process(letter);
41+ }catch(Exception e) {
42+ //
43+ }
4044 }
41- letter.getOutDevice().processMidiOut(letter);
45+ try {
46+ letter.getOutDevice().processMidiOut(letter);
47+ }catch(Throwable e) {
48+ e.printStackTrace();
49+ }
4250 }else {
4351 _queue.quit();
4452 break;
--- working-not-tested/src/net/osdn/projects/midicrossport/swing/CrossConsole.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/swing/CrossConsole.java (revision 78)
@@ -73,7 +73,7 @@
7373 if (debug) {
7474 XNumber number = XNumber.fromCrossLetter(letter);
7575 if (number != null) {
76- addString_internal(letter.toString() +" | param = " + number.parameter1 +", value = " + number.valueCurrent +" , ("+ number.valueMin + "-" + number.valueMax +")");
76+ addString_internal(letter.toString() +" | param = " + number.paramData1 +", value = " + number.valueCurrent +" , ("+ "~" + number.maximumForMessage +")");
7777 }else {
7878 addString_internal(letter.toString());
7979 }
--- working-not-tested/src/net/osdn/projects/midicrossport/swing/CrossUITool.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/swing/CrossUITool.java (revision 78)
@@ -89,6 +89,12 @@
8989 return list;
9090 }
9191
92+ public static CellList<Integer> createZero() {
93+ CellList<Integer> list = new CellList<Integer>();
94+ list.add(new DefaultCell("---", 0));
95+ return list;
96+ }
97+
9298 public static CellList<Integer> createVelocity() {
9399 CellList<Integer> list = new CellList<Integer>();
94100 for (int i = 0; i <= 127; ++i) {
@@ -111,7 +117,7 @@
111117 for (int i = 0; i < list.size(); ++ i) {
112118 String name = list.get(i).cellName();
113119 Integer number = list.get(i).cellValue();
114- newList.addWithName(name, number);
120+ newList.addWithName(number + ":" + name, number);
115121 }
116122
117123 return newList;
@@ -129,7 +135,7 @@
129135
130136 public static CellList<Integer> createControlChange() {
131137 CellList<Integer> list = new CellList<>();
132- for (int i = 0; i < 127; ++i) {
138+ for (int i = 0; i <= 119; ++i) {
133139 String name = XStatic.findControlChangeName(i);
134140 list.addWithName(name + "(" + i + ")", i);
135141 }
@@ -136,6 +142,41 @@
136142 return list;
137143 }
138144
145+ public static CellList<Integer> createChannelModeSlider() {
146+ CellList<Integer> list = new CellList<>();
147+ for (int i = 120; i <= 127; ++i) {
148+ if (i == 122) {
149+ String name = XStatic.findChannelModeMessage(i);
150+ list.addWithName(name + "(" + i + ")", i);
151+ }
152+ }
153+ return list;
154+ }
155+
156+ public static CellList<Integer> createChannelModeOnShot() {
157+ CellList<Integer> list = new CellList<>();
158+ for (int i = 120; i <= 127; ++i) {
159+ if (i != 122) {
160+ String name = XStatic.findChannelModeMessage(i);
161+ list.addWithName(name + "(" + i + ")", i);
162+ }
163+ }
164+ return list;
165+ }
166+
167+ public static CellList<Integer> createSystemModeOnShot() {
168+ CellList<Integer> list = new CellList<>();
169+ for (int i = 0xf0; i <= 0xf7; ++i) {
170+ String name = XStatic.findSystemCommonMessage(i);
171+ list.addWithName(name + "(" + i + ")", i);
172+ }
173+ for (int i = 0xf8; i <= 0xff; ++i) {
174+ String name = XStatic.findSystemRealtimeMessage(i);
175+ list.addWithName(name + "(" + i + ")", i);
176+ }
177+ return list;
178+ }
179+
139180 public static void setComboBox2(JComboBox box, CellList list) {
140181 Vector v = new Vector(list);
141182 box.setModel(new DefaultComboBoxModel(v));
--- working-not-tested/src/net/osdn/projects/midicrossport/swing/CurvedSlider.java (nonexistent)
+++ working-not-tested/src/net/osdn/projects/midicrossport/swing/CurvedSlider.java (revision 78)
@@ -0,0 +1,232 @@
1+/*
2+ * To change this license header, choose License Headers in Project Properties.
3+ * To change this template file, choose Tools | Templates
4+ * and open the template in the editor.
5+ */
6+package net.osdn.projects.midicrossport.swing;
7+
8+import java.awt.BasicStroke;
9+import java.awt.Color;
10+import java.awt.Dimension;
11+import java.awt.Graphics;
12+import java.awt.Graphics2D;
13+import java.awt.Point;
14+import java.awt.RenderingHints;
15+import java.awt.Shape;
16+import java.awt.event.MouseEvent;
17+import java.awt.event.MouseListener;
18+import java.awt.event.MouseMotionListener;
19+import java.awt.geom.Arc2D;
20+import java.awt.geom.Area;
21+import java.awt.geom.Ellipse2D;
22+import java.awt.geom.Line2D;
23+import java.util.ArrayList;
24+import javax.swing.JPanel;
25+import javax.swing.event.ChangeEvent;
26+import javax.swing.event.ChangeListener;
27+
28+/**
29+ *
30+ * @author flowflower (https://stackoverflow.com/questions/25546399/how-can-i-make-a-jslider-in-a-curve-shape)
31+ */
32+public class CurvedSlider extends JPanel implements MouseListener, MouseMotionListener
33+{
34+ private double minAngleRad = 0.0;
35+ private double maxAngleRad = 0.0;
36+ private double minValue = 0.0;
37+ private double maxValue = 0.0;
38+ private double value = 0.0;
39+
40+ public CurvedSlider()
41+ {
42+ addMouseListener(this);
43+ addMouseMotionListener(this);
44+ setMinimumSize(new Dimension(60, 60));
45+ setMaximumSize(new Dimension(60, 60));
46+ setPreferredSize(new Dimension(60, 60));
47+ setSize(new Dimension(60, 60));
48+
49+ double minAngle = 220 / 180.0 * Math.PI;
50+ double maxAngle = -40 / 180.0 * Math.PI;
51+
52+ setAngles(minAngle, maxAngle);
53+ }
54+
55+ public void setAngles(double minAngleRad, double maxAngleRad)
56+ {
57+ this.minAngleRad = minAngleRad;
58+ this.maxAngleRad = maxAngleRad;
59+ repaint();
60+ }
61+
62+ public void setRange(double minValue, double maxValue)
63+ {
64+ this.minValue = minValue;
65+ this.maxValue = maxValue;
66+ repaint();
67+ }
68+
69+ public void setValue(double value)
70+ {
71+ if (this.value != value) {
72+ this.value = value;
73+ repaint();
74+ this.vokeListenerList();
75+ }
76+ }
77+
78+ public double getValue()
79+ {
80+ return this.value;
81+ }
82+
83+ @Override
84+ protected void paintComponent(Graphics gr)
85+ {
86+ super.paintComponent(gr);
87+ Graphics2D g = (Graphics2D)gr;
88+ g.setRenderingHint(
89+ RenderingHints.KEY_ANTIALIASING,
90+ RenderingHints.VALUE_ANTIALIAS_ON);
91+ g.setColor(getBackground());
92+ g.fillRect(0,0,getWidth(),getHeight());
93+
94+ double alpha = (value - minValue) / (maxValue - minValue);
95+ double angleRad = minAngleRad + alpha * (maxAngleRad - minAngleRad);
96+
97+ double radius = Math.min(getWidth(), getHeight()) / 3.0;
98+
99+ final double thickness = 15;
100+ double xC = getWidth() / 2.0;
101+ double yC = getHeight() / 2.0;
102+ double x0 = xC + Math.cos(angleRad) * (radius - thickness);
103+ double y0 = yC - Math.sin(angleRad) * (radius - thickness);
104+ double x1 = xC + Math.cos(angleRad) * radius;
105+ double y1 = yC - Math.sin(angleRad) * radius;
106+
107+ Shape background0 = new Arc2D.Double(
108+ xC-radius, yC-radius,
109+ radius+radius, radius+radius,
110+ Math.toDegrees(minAngleRad),
111+ Math.toDegrees(maxAngleRad-minAngleRad),
112+ Arc2D.PIE);
113+
114+ Shape background1 = new Ellipse2D.Double(
115+ xC-radius+thickness, yC-radius+thickness,
116+ radius+radius-thickness-thickness,
117+ radius+radius-thickness-thickness);
118+
119+ Area a = new Area(background0);
120+ /*
121+ a.subtract(new Area(background1));
122+
123+ g.setColor(SystemColor.control);
124+ g.fill(a);
125+ */
126+
127+ g.setStroke(new BasicStroke(2.0f,
128+ BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
129+ g.setColor(Color.LIGHT_GRAY);
130+ g.draw(a);
131+
132+ g.setStroke(new BasicStroke(2.0f,
133+ BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
134+ g.setColor(Color.BLACK);
135+ g.draw(new Line2D.Double(x0, y0, x1, y1));
136+ }
137+
138+ static final boolean modePickupCircle = true;
139+ static final boolean modeFromCenter = modePickupCircle;
140+ double startValue = 0;
141+ Point startPoint = null;
142+
143+ private void updateAngle(Point p)
144+ {
145+ double xC = startPoint.x;
146+ double yC = startPoint.y;
147+
148+ if (startPoint == null) {
149+ return;
150+ }
151+ if (modeFromCenter) {
152+ xC = getWidth() / 2.0;
153+ yC = getHeight() / 2.0;
154+ }
155+
156+ double dx = p.getX() - xC;
157+ double dy = p.getY() - yC;
158+
159+ if (modePickupCircle) {
160+ double angleRad = Math.atan2(-dy, dx);
161+ if (angleRad < -Math.PI / 2)
162+ {
163+ angleRad = 2 * Math.PI + angleRad;
164+ }
165+ angleRad = Math.max(maxAngleRad, Math.min(minAngleRad, angleRad));
166+ double alpha = (angleRad - minAngleRad) / (maxAngleRad - minAngleRad);
167+ double value = minValue + alpha * (maxValue - minValue);
168+ setValue(value);
169+ }else {
170+ double distance = dx - dy;
171+ double value2 = startValue + distance / 3; //このぐらいかな
172+
173+ if (value2 < minValue) value2 = minValue;
174+ if (value2 > maxValue) value2 = maxValue;
175+
176+ setValue(value2);
177+ }
178+ }
179+
180+ @Override
181+ public void mouseDragged(MouseEvent e)
182+ {
183+ updateAngle(e.getPoint());
184+ }
185+
186+ @Override
187+ public void mouseMoved(MouseEvent e)
188+ {
189+ }
190+
191+ @Override
192+ public void mousePressed(MouseEvent e)
193+ {
194+ startPoint = e.getPoint();
195+ startValue = value;
196+ updateAngle(e.getPoint());
197+ }
198+
199+ @Override
200+ public void mouseClicked(MouseEvent e)
201+ {
202+ }
203+
204+ @Override
205+ public void mouseReleased(MouseEvent e)
206+ {
207+ startPoint = null;
208+ }
209+
210+ @Override
211+ public void mouseEntered(MouseEvent e)
212+ {
213+ }
214+
215+ @Override
216+ public void mouseExited(MouseEvent e)
217+ {
218+ }
219+
220+ ArrayList<ChangeListener> listenerList = new ArrayList<ChangeListener>();
221+
222+ public synchronized void addChangeListener(ChangeListener listener) {
223+ listenerList.add(listener);
224+ }
225+
226+ public synchronized void vokeListenerList() {
227+ ChangeEvent evt = new ChangeEvent(this);
228+ for (int i = 0; i < listenerList.size(); ++ i) {
229+ listenerList.get(i).stateChanged(evt);
230+ }
231+ }
232+}
--- working-not-tested/src/net/osdn/projects/midicrossport/utilities/CellList.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/utilities/CellList.java (revision 78)
@@ -15,4 +15,24 @@
1515 public void addWithName(String name, T value) {
1616 add(new DefaultCell(name, value));
1717 }
18+
19+ public ICell<T> findByName(String name) {
20+ for (int i = 0; i < size(); ++ i) {
21+ ICell<T> t = get(i);
22+ if (t.cellName().equals(name)) {
23+ return t;
24+ }
25+ }
26+ return null;
27+ }
28+
29+ public ICell<T> findByValue(T value) {
30+ for (int i = 0; i < size(); ++ i) {
31+ ICell<T> t = get(i);
32+ if (t.cellValue().equals(value)) {
33+ return t;
34+ }
35+ }
36+ return null;
37+ }
1838 }
--- working-not-tested/src/net/osdn/projects/midicrossport/CurvedSliderTest.java (nonexistent)
+++ working-not-tested/src/net/osdn/projects/midicrossport/CurvedSliderTest.java (revision 78)
@@ -0,0 +1,110 @@
1+/*
2+ * To change this license header, choose License Headers in Project Properties.
3+ * To change this template file, choose Tools | Templates
4+ * and open the template in the editor.
5+ * https://stackoverflow.com/questions/25546399/how-can-i-make-a-jslider-in-a-curve-shape
6+*/
7+package net.osdn.projects.midicrossport;
8+
9+import java.awt.BorderLayout;
10+import java.awt.GridLayout;
11+import java.io.IOException;
12+
13+import javax.swing.JFrame;
14+import javax.swing.JLabel;
15+import javax.swing.JPanel;
16+import javax.swing.JSlider;
17+import javax.swing.SwingUtilities;
18+import javax.swing.event.ChangeEvent;
19+import javax.swing.event.ChangeListener;
20+import net.osdn.projects.midicrossport.swing.CurvedSlider;
21+
22+
23+public class CurvedSliderTest
24+{
25+ public static void main(String[] args) throws IOException
26+ {
27+ SwingUtilities.invokeLater(new Runnable()
28+ {
29+ @Override
30+ public void run()
31+ {
32+ createAndShowGUI();
33+ }
34+ });
35+ }
36+
37+ private static void createAndShowGUI()
38+ {
39+ JFrame f = new JFrame();
40+ f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
41+
42+ f.getContentPane().setLayout(new BorderLayout());
43+
44+ CurvedSlider gaugePanel = new CurvedSlider();
45+ f.getContentPane().add(gaugePanel, BorderLayout.CENTER);
46+
47+ JPanel controlPanel = createControlPanel(gaugePanel);
48+ f.getContentPane().add(controlPanel, BorderLayout.NORTH);
49+
50+ f.setSize(600,800);
51+ f.setLocationRelativeTo(null);
52+ f.setVisible(true);
53+ }
54+
55+ static JPanel createControlPanel(final CurvedSlider gaugePanel)
56+ {
57+ final JSlider minAngleSlider = new JSlider(-180, 360, 0);
58+ final JSlider maxAngleSlider = new JSlider(-180, 360, 0);
59+ final JSlider minValueSlider = new JSlider(-40, 100, 0);
60+ final JSlider maxValueSlider = new JSlider(0, 140, 0);
61+ final JSlider valueSlider = new JSlider(0, 100, 0);
62+
63+ JPanel controlPanel = new JPanel(new GridLayout(0,2));
64+ controlPanel.add(new JLabel("minAngle"));
65+ controlPanel.add(minAngleSlider);
66+ controlPanel.add(new JLabel("maxAngle"));
67+ controlPanel.add(maxAngleSlider);
68+ controlPanel.add(new JLabel("minValue"));
69+ controlPanel.add(minValueSlider);
70+ controlPanel.add(new JLabel("maxValue"));
71+ controlPanel.add(maxValueSlider);
72+ controlPanel.add(new JLabel("value"));
73+ controlPanel.add(valueSlider);
74+
75+ ChangeListener changeListener = new ChangeListener()
76+ {
77+ @Override
78+ public void stateChanged(ChangeEvent e)
79+ {
80+ System.out.println("angle = " + minAngleSlider.getValue() + " -> " + maxAngleSlider.getValue());
81+ System.out.println("value = " + minValueSlider.getValue() + " -> " + maxValueSlider.getValue());
82+ double minAngle = minAngleSlider.getValue() / 180.0 * Math.PI;
83+ double maxAngle = maxAngleSlider.getValue() / 180.0 * Math.PI;
84+ double minValue = minValueSlider.getValue()/* / 180.0*/;
85+ double maxValue = maxValueSlider.getValue()/* / 180.0*/;
86+ double value = valueSlider.getValue() /*/ 180.0*/;
87+
88+ gaugePanel.setAngles(minAngle, maxAngle);
89+ gaugePanel.setRange(minValue, maxValue);
90+ gaugePanel.setValue(value);
91+ }
92+ };
93+ minAngleSlider.addChangeListener(changeListener);
94+ maxAngleSlider.addChangeListener(changeListener);
95+ minValueSlider.addChangeListener(changeListener);
96+ maxValueSlider.addChangeListener(changeListener);
97+ valueSlider.addChangeListener(changeListener);
98+
99+ minAngleSlider.setValue(220);
100+ maxAngleSlider.setValue(-40);
101+ minValueSlider.setValue(0);
102+ maxValueSlider.setValue(127);
103+ valueSlider.setValue(64);
104+
105+ return controlPanel;
106+ }
107+}
108+
109+
110+
--- working-not-tested/src/net/osdn/projects/midicrossport/XConfig.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/XConfig.java (revision 78)
@@ -77,21 +77,20 @@
7777 }
7878 }
7979
80- public void loadXML() throws FileNotFoundException {
80+ public void loadXML() throws FileNotFoundException, InvalidMidiDataException {
8181 try {
8282 XResource.setProgressingInit(true);
83- try {
84- //File crossModule = new File("CrossModule.xml");
85- factoryResetCrossModule();
86- //loadCrossModule(XConfig.getCrossModule(), crossModule);
83+ factoryResetCrossModule();
84+ //File crossModule = new File("CrossModule.xml");
85+ //loadCrossModule(XConfig.getCrossModule(), crossModule);
8786
88- File crossControl1 = new File("CrossControl1.xml");
89- File crossControl2 = new File("CrossControl2.xml");
90- loadCrossControlXML(XConfig.getControl1(), crossControl1);
91- loadCrossControlXML(XConfig.getControl2(), crossControl2);
92- }catch(FileNotFoundException e) {
93- throw e;
94- }
87+ factoryResetCrossControl1();
88+ //File crossControl1 = new File("CrossControl1.xml");
89+ //loadCrossControlXML(XConfig.getControl1(), crossControl1);
90+
91+ factoryResetCrossControl2();
92+ //File crossControl2 = new File("CrossControl2.xml");
93+ //loadCrossControlXML(XConfig.getControl2(), crossControl2);
9594 }finally {
9695 XResource.setProgressingInit(false);
9796 }
@@ -239,18 +238,17 @@
239238 listCircleNumber.add(new XCircleData(X++, null, number));
240239 }
241240 }
242- XRhythmData r1 = new XRhythmData(0, XRhythmData.TYPE_DATA1_NOTE, 0, 12 * 4 + 3);
243- XRhythmData r2 = new XRhythmData(1, XRhythmData.TYPE_DATA1_NOTE, 0, 12 * 4 + 0);
241+ XRhythmData r1 = XRhythmData.createForNoteON(0, 0, 12 * 4 + 3);
242+ XRhythmData r2 = XRhythmData.createForNoteON(1, 0, 12 * 4 + 0);
243+ XRhythmData r3 = XRhythmData.createForNoteON(2, 9, 12 * 5 + 0);
244+ XRhythmData r4 = XRhythmData.createForNoteON(3, 9, 12 * 5 + 1);
245+ XRhythmData r5 = XRhythmData.createForNoteON(4, 9, 12 * 5 + 2);
246+ XRhythmData r6 = XRhythmData.createForNoteON(5, 9, 12 * 5 + 3);
247+ XRhythmData r7 = XRhythmData.createForNoteON(6, 9, 12 * 5 + 4);
248+ XRhythmData r8 = XRhythmData.createForNoteON(7, 9, 12 * 5 + 5);
249+ XRhythmData r9 = XRhythmData.createForNoteON(8, 9, 12 * 5 + 6);
250+ XRhythmData r10 = XRhythmData.createForNoteON(9, 9, 12 * 5 + 7);
244251
245- XRhythmData r3 = new XRhythmData(2, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 0);
246- XRhythmData r4 = new XRhythmData(3, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 1);
247- XRhythmData r5 = new XRhythmData(4, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 2);
248- XRhythmData r6 = new XRhythmData(5, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 3);
249- XRhythmData r7 = new XRhythmData(6, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 4);
250- XRhythmData r8 = new XRhythmData(7, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 5);
251- XRhythmData r9 = new XRhythmData(8, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 6);
252- XRhythmData r10 = new XRhythmData(9, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 7);
253-
254252 listRhythmNumber = new ArrayList<XRhythmData>();
255253 listRhythmNumber.add(r1);
256254 listRhythmNumber.add(r2);
@@ -298,17 +296,17 @@
298296 listCircleNumber.add(new XCircleData(ch, null, number));
299297 }
300298
301- XRhythmData r1 = new XRhythmData(0, XRhythmData.TYPE_DATA2_CC, 0, XStatic.DATA1_CCDUMPERPEDAL);
299+ XRhythmData r1 = XRhythmData.createForControlChange(0, 0, XStatic.DATA1_CCDUMPERPEDAL);
302300 r1.setScanToggle(true);
303- XRhythmData r2 = new XRhythmData(1, XRhythmData.TYPE_DATA1_NOTE, 0, 12 * 5 + 0);
304- XRhythmData r3 = new XRhythmData(2, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 0);
305- XRhythmData r4 = new XRhythmData(3, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 1);
306- XRhythmData r5 = new XRhythmData(4, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 2);
307- XRhythmData r6 = new XRhythmData(5, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 3);
308- XRhythmData r7 = new XRhythmData(6, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 4);
309- XRhythmData r8 = new XRhythmData(7, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 5);
310- XRhythmData r9 = new XRhythmData(8, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 6);
311- XRhythmData r10 = new XRhythmData(9, XRhythmData.TYPE_DATA1_NOTE, 9, 12 * 5 + 7);
301+ XRhythmData r2 = XRhythmData.createForNoteON(1, 0, 12 * 5 + 0);
302+ XRhythmData r3 = XRhythmData.createForNoteON(2, 9, 12 * 5 + 0);
303+ XRhythmData r4 = XRhythmData.createForNoteON(3, 9, 12 * 5 + 1);
304+ XRhythmData r5 = XRhythmData.createForNoteON(4, 9, 12 * 5 + 2);
305+ XRhythmData r6 = XRhythmData.createForNoteON(5, 9, 12 * 5 + 3);
306+ XRhythmData r7 = XRhythmData.createForNoteON(6, 9, 12 * 5 + 4);
307+ XRhythmData r8 = XRhythmData.createForNoteON(7, 9, 12 * 5 + 5);
308+ XRhythmData r9 = XRhythmData.createForNoteON(8, 9, 12 * 5 + 6);
309+ XRhythmData r10 = XRhythmData.createForNoteON(9, 9, 12 * 5 + 7);
312310 listRhythmNumber = new ArrayList<XRhythmData>();
313311 listRhythmNumber.add(r1);
314312 listRhythmNumber.add(r2);
@@ -368,33 +366,32 @@
368366
369367 for (int i = 0; i < line.size(); ++ i) {
370368 Element e = xml.addElement(parent, "CrossLine");
371- XNumber x = line.get(i)._number;
369+ XNumber x = line.get(i)._talkNumber;
372370
373371 xml.setAttribute(e, "id", String.valueOf(i+1));
374372 xml.setAsText(e, "monitoringChannel", "" + x.monitoringChannel);
375- xml.setAsText(e, "messageStatus", "" + x.messageStatus);
376- xml.setAsText(e, "parameter1", "" + x.parameter1);
373+ xml.setAsText(e, "messageStatus", "" + x.status);
374+ xml.setAsText(e, "parameter1", "" + x.paramData1);
377375 xml.setAsText(e, "valueName", x.valueName);
378376 xml.setAsText(e, "valueCurrent", "" + x.valueCurrent);
379377 xml.setAsText(e, "valueResetPosition", "" + x.valueResetPosition);
380- xml.setAsText(e, "valueMin", "" + x.valueMin);
381- xml.setAsText(e, "valueMax", "" + x.valueMax);
378+ xml.setAsText(e, "valueMax", "" + x.maximumForMessage);
382379 }
383380
384381 ArrayList<XCircleData> circle = control.getCircleList();
385382 for (int i = 0; i < circle.size(); ++ i) {
386383 Element e = xml.addElement(parent, "CrossCircle");
387- XNumber x = circle.get(i)._number;
384+ XNumber x = circle.get(i)._talkNumber;
388385
389386 xml.setAttribute(e, "id", String.valueOf(i+1));
390387 xml.setAsText(e, "monitoringChannel", "" + x.monitoringChannel);
391- xml.setAsText(e, "messageStatus", "" + x.messageStatus);
392- xml.setAsText(e, "parameter1", "" + x.parameter1);
388+ xml.setAsText(e, "messageStatus", "" + x.status);
389+ xml.setAsText(e, "parameter1", "" + x.paramData1);
393390 xml.setAsText(e, "valueName", x.valueName);
394391 xml.setAsText(e, "valueCurrent", "" + x.valueCurrent);
395392 xml.setAsText(e, "valueResetPosition", "" + x.valueResetPosition);
396- xml.setAsText(e, "valueMin", "" + x.valueMin);
397- xml.setAsText(e, "valueMax", "" + x.valueMax);
393+ //xml.setAsText(e, "valueMin", "" + x.valueMin);
394+ xml.setAsText(e, "valueMax", "" + x.maximumForMessage);
398395 }
399396
400397 ArrayList<XRhythmData> rhythm = control.getRhythmList();
@@ -403,13 +400,12 @@
403400 XRhythmData x = rhythm.get(i);
404401
405402 xml.setAttribute(e, "id", String.valueOf(i+1));
406- xml.setAsText(e, "channel", "" + x._channel);
407- xml.setAsText(e, "type", "" + x._type);
408- xml.setAsText(e, "NoteOrCCNumber", "" + x._noteOrCCNumber);
409- xml.setAsText(e, "scanToggle", "" + x._scanToggle);
410- xml.setAsText(e, "onValue", "" + x._outputOffAs);
411- xml.setAsText(e, "offValue", "" + x._outputOnAs);
412- xml.setAsText(e, "uiVelocity", "" + x._velocityFixed);
403+ xml.setAsText(e, "channel", "" + x._talkNumber._channel);
404+ xml.setAsText(e, "type", "" + x._talkNumber._type);
405+ xml.setAsText(e, "NoteOrCCNumber", "" + x._talkNumber._waitingData1);
406+ xml.setAsText(e, "scanToggle", "" + x._talkNumber._isToggleSwitch);
407+ xml.setAsText(e, "onValue", "" + x._talkNumber._switchOnIsAs);
408+ xml.setAsText(e, "offValue", "" + x._talkNumber._switchOffIsAs);
413409 }
414410 }
415411
@@ -449,13 +445,13 @@
449445 if (X >= 0 && X < 10) {
450446 XNumber num = new XNumber();
451447 num.monitoringChannel = xml.getAsInt(objectE, "monitoringChannel", 0);
452- num.messageStatus = xml.getAsInt(objectE, "messageStatus", 0);
453- num.parameter1 = xml.getAsInt(objectE, "parameter1", 0);
448+ num.status = xml.getAsInt(objectE, "messageStatus", 0);
449+ num.paramData1 = xml.getAsInt(objectE, "parameter1", 0);
454450 num.valueName = xml.getAsText(objectE, "valueName");
455451 num.valueCurrent = xml.getAsInt(objectE, "valueCurrent", 0);
456452 num.valueResetPosition = xml.getAsInt(objectE, "valueResetPosition", 0);
457- num.valueMin = xml.getAsInt(objectE, "valueMin", 0);
458- num.valueMax = xml.getAsInt(objectE, "valueMax", 127);
453+ //num.valueMin = xml.getAsInt(objectE, "valueMin", 0);
454+ num.maximumForMessage = xml.getAsInt(objectE, "valueMax", 127);
459455
460456 lineList.set(X, new XLineData(X, null, num));
461457 }
@@ -466,13 +462,13 @@
466462 if (X >= 0 && X < 10) {
467463 XNumber num = new XNumber();
468464 num.monitoringChannel = xml.getAsInt(objectE, "monitoringChannel", 0);
469- num.messageStatus = xml.getAsInt(objectE, "messageStatus", 0);
470- num.parameter1 = xml.getAsInt(objectE, "parameter1", 0);
465+ num.status = xml.getAsInt(objectE, "messageStatus", 0);
466+ num.paramData1 = xml.getAsInt(objectE, "parameter1", 0);
471467 num.valueName = xml.getAsText(objectE, "valueName");
472468 num.valueCurrent = xml.getAsInt(objectE, "valueCurrent", 0);
473469 num.valueResetPosition = xml.getAsInt(objectE, "valueResetPosition", 0);
474- num.valueMin = xml.getAsInt(objectE, "valueMin", 0);
475- num.valueMax = xml.getAsInt(objectE, "valueMax", 127);
470+ //num.valueMin = xml.getAsInt(objectE, "valueMin", 0);
471+ num.maximumForMessage = xml.getAsInt(objectE, "valueMax", 127);
476472 circleList.set(X, new XCircleData(X, null, num));
477473 }
478474 }
@@ -479,15 +475,14 @@
479475 if (objectE.getNodeName().equals("CrossRhythm")) {
480476 int X = Integer.valueOf(xml.getAttribute(objectE, "id")) -1;
481477 if (X >= 0 && X < 10) {
482- XRhythmData rhythm = new XRhythmData(X, 0, 0, 0);
478+ XRhythmData rhythm = XRhythmData.internalConstruct(X, 0, 0, 0, 0);
483479 //XMLTool.dumpNodes(objectE);
484- rhythm._channel = xml.getAsInt(objectE, "channel", 0);
485- rhythm._type = xml.getAsInt(objectE, "type", XRhythmData.TYPE_DATA2_CC);
486- rhythm._noteOrCCNumber = xml.getAsInt(objectE, "NoteOrCCNumber", 0);
487- rhythm._scanToggle = xml.getAsBoolean(objectE, "scanToggle", false);
488- rhythm._outputOffAs = xml.getAsInt(objectE, "onValue", 127);
489- rhythm._outputOnAs = xml.getAsInt(objectE, "offValue", 127);
490- rhythm._velocityFixed = xml.getAsInt(objectE, "uiVelocity", 127);
480+ rhythm._talkNumber._channel = xml.getAsInt(objectE, "channel", 0);
481+ rhythm._talkNumber._type = xml.getAsInt(objectE, "type", XRhythmData.MSGTYPE_NOTEON);
482+ rhythm._talkNumber._waitingData1 = xml.getAsInt(objectE, "NoteOrCCNumber", 0);
483+ rhythm._talkNumber._isToggleSwitch = xml.getAsBoolean(objectE, "scanToggle", false);
484+ rhythm._talkNumber._switchOnIsAs = xml.getAsInt(objectE, "onValue", 127);
485+ rhythm._talkNumber._switchOffIsAs = xml.getAsInt(objectE, "offValue", 0);
491486 rhythmList.set(X, rhythm);
492487 }
493488 }
--- working-not-tested/src/net/osdn/projects/midicrossport/XResource.java (revision 77)
+++ working-not-tested/src/net/osdn/projects/midicrossport/XResource.java (revision 78)
@@ -5,7 +5,6 @@
55 import net.osdn.projects.midicrossport.midi.XMidiPorts;
66 import net.osdn.projects.midicrossport.midi.programlist.GMDrumNotes;
77 import net.osdn.projects.midicrossport.midi.programlist.GMProgramNumbers;
8-import net.osdn.projects.midicrossport.crosssmodule.CrossModule;
98 import net.osdn.projects.midicrossport.utilities.DefaultCell;
109 import net.osdn.projects.midicrossport.utilities.ICell;
1110
Show on old repository browser