質問編集履歴

1

回答をヒントに解決したので詳細を残します。

2018/12/17 12:49

投稿

nabesi
nabesi

スコア13

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,277 @@
5
5
  音声をひとつひとつ作成したりダウンロードするのは無理なので下のような↓ 英単語サイトの音をそのまま再生できるのか、またその方法を教えて頂きたいです。使用言語はC#です。よろしくお願いします。
6
6
 
7
7
  ![![イメージ説明](fe99c78740cfbbed01f390d58496e3d0.jpeg)](e730113ec9069ec66029fedc72abbd46.jpeg)
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ **回答をヒントに解決したので詳細を残します。**
18
+
19
+ ボタンをクリックするとサウンドが再生されるようにしました。MP3ファイルとwaveファイルを再生させる2種類の方法です。現時点では連続再生させるとエラーが出ていますが、そのまま書いています。
20
+
21
+
22
+
23
+ waveファイルを再生させる場合のスクリプトと回答以外に参考としたサイト↓
24
+
25
+ [方法:Windowsフォーム内でサウンドを非同期的に読み込む](https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-load-a-sound-asynchronously-within-a-windows-form)
26
+
27
+ ```C#
28
+
29
+ using System;
30
+
31
+ using System.Collections.Generic;
32
+
33
+ using System.ComponentModel;
34
+
35
+ using System.Data;
36
+
37
+ using System.Drawing;
38
+
39
+ using System.Linq;
40
+
41
+ using System.Media;
42
+
43
+ using System.Text;
44
+
45
+ using System.Threading.Tasks;
46
+
47
+ using System.Windows.Forms;
48
+
49
+ using System.Net;
50
+
51
+ using System.IO;
52
+
53
+
54
+
55
+ namespace WordBook
56
+
57
+ {
58
+
59
+
60
+
61
+ public partial class Home : Form
62
+
63
+ {
64
+
65
+ public Home()
66
+
67
+ {
68
+
69
+ InitializeComponent();
70
+
71
+ this.Player.LoadCompleted += new AsyncCompletedEventHandler(Player_LoadCompleted);
72
+
73
+ }
74
+
75
+
76
+
77
+ SoundPlayer Player = new SoundPlayer();
78
+
79
+ //ボタンクリックでサウンド実行
80
+
81
+ private void button2_Click(object sender, EventArgs e)
82
+
83
+ {
84
+
85
+ this.LoadAsyncSound();
86
+
87
+ }
88
+
89
+ //サウンドの取得と読み込み
90
+
91
+ public void LoadAsyncSound()
92
+
93
+ {
94
+
95
+ try
96
+
97
+ {
98
+
99
+ //音源先のURLを指定(右クリックして「リンクのアドレスをコピー」)
100
+
101
+ this.Player.SoundLocation = "https://maoudamashii.jokersounds.com/music/se/wav/se_maoudamashii_chime14.wav";
102
+
103
+ this.Player.LoadAsync();
104
+
105
+ }
106
+
107
+ catch (Exception ex)
108
+
109
+ {
110
+
111
+ MessageBox.Show(ex.Message, "Error loading sound");
112
+
113
+ }
114
+
115
+ }
116
+
117
+ // サウンドの再生
118
+
119
+ void Player_LoadCompleted(object sender, AsyncCompletedEventArgs e)
120
+
121
+ {
122
+
123
+ if (Player.IsLoadCompleted)
124
+
125
+ {
126
+
127
+ try
128
+
129
+ {
130
+
131
+ this.Player.Play();
132
+
133
+ }
134
+
135
+ catch (Exception ex)
136
+
137
+ {
138
+
139
+ MessageBox.Show(ex.Message, "Error playing sound");
140
+
141
+ }
142
+
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ }
150
+
151
+ ```
152
+
153
+
154
+
155
+
156
+
157
+ Mp3ファイルは上記方法で再生ができなかったので、下記方法で再生する↓
158
+
159
+ [MIDI,MP3などの音楽ファイルを再生する](http://dobon.net/vb/dotnet/programing/playmidifile.html#section2)
160
+
161
+
162
+
163
+ ```C#
164
+
165
+ using System;
166
+
167
+ using System.Collections.Generic;
168
+
169
+ using System.ComponentModel;
170
+
171
+ using System.Data;
172
+
173
+ using System.Drawing;
174
+
175
+ using System.Linq;
176
+
177
+ using System.Media;
178
+
179
+ using System.Text;
180
+
181
+ using System.Threading.Tasks;
182
+
183
+ using System.Windows.Forms;
184
+
185
+ using System.Net;
186
+
187
+ using System.IO;
188
+
189
+
190
+
191
+ namespace WordBook
192
+
193
+ {
194
+
195
+
196
+
197
+ public partial class Home : Form
198
+
199
+ {
200
+
201
+ [System.Runtime.InteropServices.DllImport("winmm.dll",
202
+
203
+ CharSet = System.Runtime.InteropServices.CharSet.Auto)]
204
+
205
+ private static extern int mciSendString(string command,
206
+
207
+ System.Text.StringBuilder buffer, int bufferSize, IntPtr hwndCallback);
208
+
209
+
210
+
211
+ private string aliasName = "MediaFile";
212
+
213
+
214
+
215
+ public Home()
216
+
217
+ {
218
+
219
+ InitializeComponent();
220
+
221
+ }
222
+
223
+
224
+
225
+ //再生ボタン
226
+
227
+ private void button2_Click(object sender, EventArgs e)
228
+
229
+ {
230
+
231
+ //再生するファイル名  ここに音源のUrlをいれる
232
+
233
+ string fileName = "http://www.talkenglish.com/audio871/AudioTE1/E01/sentence/E001S1.mp3";
234
+
235
+
236
+
237
+ string cmd;
238
+
239
+ //ファイルを開く
240
+
241
+ cmd = "open \"" + fileName + "\" alias " + aliasName;
242
+
243
+ if (mciSendString(cmd, null, 0, IntPtr.Zero) != 0)
244
+
245
+ return;
246
+
247
+ //再生する
248
+
249
+ cmd = "play " + aliasName;
250
+
251
+ mciSendString(cmd, null, 0, IntPtr.Zero);
252
+
253
+ }
254
+
255
+ //停止ボタン
256
+
257
+ private void button3_Click(object sender, EventArgs e)
258
+
259
+ {
260
+
261
+ string cmd;
262
+
263
+ //停止する
264
+
265
+ cmd = "stop " + aliasName;
266
+
267
+ mciSendString(cmd, null, 0, IntPtr.Zero);
268
+
269
+ //閉じる
270
+
271
+ cmd = "close " + aliasName;
272
+
273
+ mciSendString(cmd, null, 0, IntPtr.Zero);
274
+
275
+ }
276
+
277
+ }
278
+
279
+ }
280
+
281
+ ```