質問編集履歴
3
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
コードが間違っているのでしょうか。
|
16
16
|
|
17
|
-
![イメージ説明](
|
17
|
+
![イメージ説明](0f16695db7ce4ef40ac667fbccb1c02b.png)
|
18
18
|
|
19
19
|
### 該当のソースコード
|
20
20
|
|
@@ -22,27 +22,17 @@
|
|
22
22
|
|
23
23
|
```java
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
25
|
public class App extends Application
|
32
26
|
|
33
27
|
{
|
34
28
|
|
35
29
|
// 定数
|
36
30
|
|
37
|
-
private final String fileName = "C:\Users\(名前
|
31
|
+
private final String fileName = "C:\Users\(名前)\Music\sine_-06_05_00020.wav"; // チャートに表示する音声ファイルへのパス
|
38
32
|
|
39
|
-
|
40
33
|
|
41
|
-
// 取得する音声情報用の変数
|
42
34
|
|
43
|
-
private
|
35
|
+
private byte[] values = null;
|
44
|
-
|
45
|
-
private ArrayList<Integer> values = new ArrayList<>();
|
46
36
|
|
47
37
|
|
48
38
|
|
@@ -60,9 +50,25 @@
|
|
60
50
|
|
61
51
|
{
|
62
52
|
|
53
|
+
// フォント色がおかしくなることへの対処
|
54
|
+
|
55
|
+
System.setProperty( "prism.lcdtext" , "false" );
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
// シーングラフの作成
|
60
|
+
|
61
|
+
HBox root = new HBox();
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
// チャートを作成
|
66
|
+
|
63
67
|
init();
|
64
68
|
|
69
|
+
|
70
|
+
|
65
|
-
|
71
|
+
root.getChildren().add( createLineChart() ); // 折れ線グラフの追加
|
66
72
|
|
67
73
|
|
68
74
|
|
@@ -78,23 +84,55 @@
|
|
78
84
|
|
79
85
|
{
|
80
86
|
|
81
|
-
|
87
|
+
InputStream input = null;
|
82
88
|
|
83
|
-
|
89
|
+
Logger logger = Logger.getLogger(App.class.getName());
|
84
90
|
|
85
|
-
|
91
|
+
|
86
92
|
|
87
|
-
|
93
|
+
try {
|
88
94
|
|
89
|
-
w
|
95
|
+
// wavを読み込む
|
90
96
|
|
97
|
+
input= new FileInputStream(fileName);
|
98
|
+
|
99
|
+
values = new byte[input.available()];
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
// input.read(wavData)
|
104
|
+
|
105
|
+
String readBytes = String.format(
|
106
|
+
|
107
|
+
Locale.US, "read bytes = %d",input.read(values));
|
108
|
+
|
109
|
+
// input.read(wavData)のwarning回避のためだけ
|
110
|
+
|
111
|
+
logger.log(Level.INFO, readBytes);
|
112
|
+
|
91
|
-
|
113
|
+
input.close();
|
114
|
+
|
115
|
+
} catch (FileNotFoundException fne) {
|
116
|
+
|
117
|
+
fne.printStackTrace();
|
118
|
+
|
119
|
+
} catch (IOException ioe) {
|
120
|
+
|
121
|
+
ioe.printStackTrace();
|
122
|
+
|
123
|
+
logger.log(Level.INFO, "error");
|
124
|
+
|
125
|
+
} finally{
|
126
|
+
|
127
|
+
try{
|
128
|
+
|
129
|
+
if(input != null) input.close();
|
130
|
+
|
131
|
+
}catch(Exception e){
|
132
|
+
|
133
|
+
e.printStackTrace();
|
92
134
|
|
93
135
|
}
|
94
|
-
|
95
|
-
} catch (IOException e) {
|
96
|
-
|
97
|
-
e.printStackTrace();
|
98
136
|
|
99
137
|
}
|
100
138
|
|
@@ -102,7 +140,9 @@
|
|
102
140
|
|
103
141
|
|
104
142
|
|
143
|
+
@SuppressWarnings("unchecked")
|
144
|
+
|
105
|
-
public Node createLineChart()
|
145
|
+
public Node createLineChart()
|
106
146
|
|
107
147
|
{
|
108
148
|
|
@@ -118,7 +158,7 @@
|
|
118
158
|
|
119
159
|
Logger logger = Logger.getLogger(App.class.getName());
|
120
160
|
|
121
|
-
String p = String.valueOf(values.
|
161
|
+
String p = String.valueOf(values.length);
|
122
162
|
|
123
163
|
logger.log(Level.INFO, p);
|
124
164
|
|
@@ -134,7 +174,7 @@
|
|
134
174
|
|
135
175
|
{
|
136
176
|
|
137
|
-
series1.getData().add( new XYChart.Data<Number, Number>( i , values
|
177
|
+
series1.getData().add( new XYChart.Data<Number, Number>( i , values[i] ) );
|
138
178
|
|
139
179
|
}
|
140
180
|
|
@@ -142,10 +182,14 @@
|
|
142
182
|
|
143
183
|
// データを登録
|
144
184
|
|
145
|
-
chart.getData().addAll( series1 );
|
185
|
+
chart.getData().addAll( series1 );
|
146
186
|
|
147
187
|
return chart;
|
148
188
|
|
149
189
|
}
|
150
190
|
|
191
|
+
}
|
192
|
+
|
193
|
+
|
194
|
+
|
151
195
|
```
|
2
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,63 +8,13 @@
|
|
8
8
|
|
9
9
|
androidstudioと同じ文法形式で作りたいのでAudioInputStreamを使わずに解決したいです。
|
10
10
|
|
11
|
-
おそらく「エラー箇所」と書いてある部分やgetResourceAsStreamの使い方が間違っていると思うのですが対処法がよくわかりません。
|
12
|
-
|
13
11
|
教えていただきたいです。
|
14
12
|
|
13
|
+
追記:いただいた回答を元に自分なりに作ってみたのですが下のような画像になりました。(音源はsin波で音源側に問題はないです。)
|
15
14
|
|
15
|
+
コードが間違っているのでしょうか。
|
16
16
|
|
17
|
-
### 発生している問題・エラーメッセージ
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
```
|
22
|
-
|
23
|
-
Exception in Application init method
|
24
|
-
|
25
|
-
java.lang.reflect.InvocationTargetException
|
26
|
-
|
27
|
-
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
28
|
-
|
29
|
-
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
|
30
|
-
|
31
|
-
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
32
|
-
|
33
|
-
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
|
34
|
-
|
35
|
-
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
|
36
|
-
|
37
|
-
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
|
38
|
-
|
39
|
-
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
40
|
-
|
41
|
-
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
|
42
|
-
|
43
|
-
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
44
|
-
|
45
|
-
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
|
46
|
-
|
47
|
-
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
|
48
|
-
|
49
|
-
Caused by: java.lang.RuntimeException: Exception in Application init method
|
50
|
-
|
51
|
-
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:895)
|
52
|
-
|
53
|
-
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
|
54
|
-
|
55
|
-
|
17
|
+
![イメージ説明](3f6a22fe95e63ec4679e159f5928e67a.png)
|
56
|
-
|
57
|
-
Caused by: java.lang.NullPointerException: Cannot invoke "java.io.InputStream.available()" because "<local2>" is null at App.init(App.java:79)
|
58
|
-
|
59
|
-
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:824)
|
60
|
-
|
61
|
-
... 2 more
|
62
|
-
|
63
|
-
Exception running application App
|
64
|
-
|
65
|
-
```
|
66
|
-
|
67
|
-
|
68
18
|
|
69
19
|
### 該当のソースコード
|
70
20
|
|
@@ -92,7 +42,7 @@
|
|
92
42
|
|
93
43
|
private AudioFormat format = null;
|
94
44
|
|
95
|
-
private
|
45
|
+
private ArrayList<Integer> values = new ArrayList<>();
|
96
46
|
|
97
47
|
|
98
48
|
|
@@ -112,6 +62,14 @@
|
|
112
62
|
|
113
63
|
init();
|
114
64
|
|
65
|
+
root.getChildren().add( createLineChart() ); // 折れ線グラフの追加
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
// シーンの作成
|
70
|
+
|
71
|
+
Scene scene = new Scene( root , 900 , 300 );
|
72
|
+
|
115
73
|
}
|
116
74
|
|
117
75
|
|
@@ -120,60 +78,74 @@
|
|
120
78
|
|
121
79
|
{
|
122
80
|
|
123
|
-
|
81
|
+
try (FileInputStream input= new FileInputStream(fileName)) {
|
124
82
|
|
125
|
-
|
83
|
+
InputStreamReader iSReader = new InputStreamReader(input, "UTF-8");
|
126
84
|
|
127
|
-
|
85
|
+
|
128
86
|
|
129
|
-
|
87
|
+
int data;
|
130
88
|
|
131
|
-
tr
|
89
|
+
while ((data = iSReader.read()) != -1) {
|
132
90
|
|
133
|
-
// wavを読み込む
|
134
|
-
|
135
|
-
input = App.class.getClass().getResourceAsStream("sine_-06_05_00020.wav");
|
136
|
-
|
137
|
-
values = new byte[input.available()];//エラー箇所
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
// input.read(wavData)
|
142
|
-
|
143
|
-
String readBytes = String.format(
|
144
|
-
|
145
|
-
Locale.US, "read bytes = %d",input.read(values));
|
146
|
-
|
147
|
-
// input.read(wavData)のwarning回避のためだけ
|
148
|
-
|
149
|
-
logger.log(Level.INFO,readBytes);
|
150
|
-
|
151
|
-
|
91
|
+
values.add(data);
|
152
|
-
|
153
|
-
} catch (FileNotFoundException fne) {
|
154
|
-
|
155
|
-
fne.printStackTrace();
|
156
|
-
|
157
|
-
} catch (IOException ioe) {
|
158
|
-
|
159
|
-
ioe.printStackTrace();
|
160
|
-
|
161
|
-
logger.log(Level.INFO, "error");
|
162
|
-
|
163
|
-
} finally{
|
164
|
-
|
165
|
-
try{
|
166
|
-
|
167
|
-
if(input != null) input.close();
|
168
|
-
|
169
|
-
}catch(Exception e){
|
170
|
-
|
171
|
-
e.printStackTrace();
|
172
92
|
|
173
93
|
}
|
94
|
+
|
95
|
+
} catch (IOException e) {
|
96
|
+
|
97
|
+
e.printStackTrace();
|
174
98
|
|
175
99
|
}
|
176
100
|
|
177
101
|
}
|
178
102
|
|
103
|
+
|
104
|
+
|
105
|
+
public Node createLineChart()
|
106
|
+
|
107
|
+
{
|
108
|
+
|
109
|
+
// 折れ線グラフ
|
110
|
+
|
111
|
+
NumberAxis xAxis = new NumberAxis();
|
112
|
+
|
113
|
+
NumberAxis yAxis = new NumberAxis();
|
114
|
+
|
115
|
+
LineChart<Number, Number> chart = new LineChart<Number, Number>( xAxis , yAxis );
|
116
|
+
|
117
|
+
chart.setMinWidth( 900 );
|
118
|
+
|
119
|
+
Logger logger = Logger.getLogger(App.class.getName());
|
120
|
+
|
121
|
+
String p = String.valueOf(values.size());
|
122
|
+
|
123
|
+
logger.log(Level.INFO, p);
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
// データを作成
|
128
|
+
|
129
|
+
Series< Number , Number > series1 = new Series<Number, Number>();
|
130
|
+
|
131
|
+
series1.setName( "チャンネル1" );
|
132
|
+
|
133
|
+
for( int i=0 ; i<1000 ; i++ )
|
134
|
+
|
135
|
+
{
|
136
|
+
|
137
|
+
series1.getData().add( new XYChart.Data<Number, Number>( i , values.get(i) ) );
|
138
|
+
|
139
|
+
}
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
// データを登録
|
144
|
+
|
145
|
+
chart.getData().addAll( series1 );
|
146
|
+
|
147
|
+
return chart;
|
148
|
+
|
149
|
+
}
|
150
|
+
|
179
151
|
```
|
1
誤字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
を参考にvscodeでwav音源を波形にするためにwav音源の配列を作ろうとしています。
|
8
8
|
|
9
|
-
|
9
|
+
androidstudioと同じ文法形式で作りたいのでAudioInputStreamを使わずに解決したいです。
|
10
10
|
|
11
11
|
おそらく「エラー箇所」と書いてある部分やgetResourceAsStreamの使い方が間違っていると思うのですが対処法がよくわかりません。
|
12
12
|
|