こんにちわ
題名のように、
Timerをしようしたいのですが
上手くいきません。
音はきちんと鳴りますが、
Timerの使い方が間違ってるかと思いますが、
いろいろな参考書を読んでもよくわからず、
誰かにご教授いただこうと思い、書き込みさせていただきました。
下記のようなコードを作成していますが、
まちがっているところがわかる方がいましたら
ご教授願います。。。
(VB6.0のプログラムを使用しましたが、.Netで作成しています)
**********************************
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If r = 3 Then
midiOutShortMsg(hMid, &H80S + Note * 256)
r = 0
End If
r = r + 1
Timer1.Enabled = False
End Sub
**********************************
Private Sub Button1_MouseDown(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
Dim Button As Short = eventArgs.Button \ &H100000
Dim Shift As Short = System.Windows.Forms.Control.ModifierKeys \ &H10000
Dim X As Single = VB6.PixelsToTwipsX(eventArgs.X)
Dim Y As Single = VB6.PixelsToTwipsY(eventArgs.Y)
Dim Inst As Object
Dim Vol As Integer
Timer1.Enabled = True
Note = 70 '音階(&H00から&H7F(127))
Inst = 30 '楽器No(GM音色番号に準拠?)
Vol = &H7FS '音量(&H00から&H7F(127))
midiOutShortMsg(hMid, &HC0S + Inst * 256)
midiOutShortMsg(hMid, &H90S + Note * 256 + Vol * 256 * 256)
End Sub
**********************************
もちろん、Intervalは設定していますよね?
Intervalは300にしています。。。
Timer1.Enbled=Trueのあとにかきました
.net自体はよく分からないのだが…
感覚で読んで言って、
>Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e > As System.EventArgs) Handles Timer1.Tick
>
>If r = 3 Then
> midiOutShortMsg(hMid, &H80S + Note * 256)
とりあえず、ここのAPIで音を止めているんだよな…
最近MIDIメッセージなんて使ってないから忘れたけど。
> r = 0
>End If
>r = r + 1
>Timer1.Enabled = False
ということで、ここでTimer1をとめてしまうと、
上の"r = 3"のIF文全体が実行されるか、わからないんだが…?
>End Sub
…激しく間違っていたらすみません。
ご教授ありがとうございます。
さっそくTimerをとめる命令を消したところ
ちゃんと止まるようになりました^^
ホントにありがとうございます。
結構簡単なことだったんですね^^;
時間をとらせちゃって
すみませんでした。。。
ツイート | ![]() |