• 検索結果がありません。

情報処理 VB 音2

N/A
N/A
Protected

Academic year: 2021

シェア "情報処理 VB 音2"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

情報処理-

VB

1. Visual Basic の起動

まず、「

Microsoft Visual Studio.Net 2003」を立ち上げてください。また、「新し

いプロジェクト」を選んで、たとえば、「リズム」というプロジェクトを作ってくだ

さい。

次に、「ファイル」メニューから、「既存項目の追加」を選び、フォルダを1つ上

がって「メトロノーム」(あるいは、前回つけた名前)を選んで開き、「

Form1.vb」

(あるいは、前回つけた名前)を開けてください。「

Form1.vb」のままで開いている

人は、たぶん、

3 回何か聞かれますが、すべて「はい」と答えてください。これで、こ

の間作ったものを「リズム」プロジェクトにコピーできました。今日は、これを変更

してリズムを付けます。

前回違う名前を付けて保存した人は、「ソリューションエクスプローラ」

(無ければ、表示メニューから選んで表示させてください)に、

Form1.vb と

「自分の付けた名前

.vb」の 2 つが開いていると思います。「プロジェクト」

メニューから、一番下の「何とかのプロパティ」を選び、左側、「共通プロ

パティ」の「→全般」で、右側の「スタートアップの設定」に「自分の付け

た名前」を指定してください。その後、「ソリューションエクスプローラ」

Form1.vb を右クリックして削除してください。

2. フォームに TextBox2 をつける

「表示」メニューから「ツールボックス」を選び、出てきた中から、

クリックして、フォームをクリックし、

TextBox2 を作ります。プロパティの Text を

1110」にします。1 は音が出る時、0 は音が出ない時を表して、リズムを作ります。

これなら、「♪♪♪ 」というリズムです。

3. コードを変える(全体で使う変数の定義)

「表示」メニューから「コード」を選んで、プログラムコードを表示させてくださ

い。これをちょっと変えます。まず、最初の方、「

Windows フォームデザイナで生成

されたコード」と薄い色で書いてある行と、

Private Sub Button1_Click(...) と書い

てある行の間に、

Dim nlen As Integer

Dim i As Integer

(2)

ムに書いてあるすべてのプログラムで共通なものになります。あるプログラムで

nlen

3 を入れると、その後ほかのプログラムで参照したときにも 3 の値を保持しています。

また、

ibeep のあとに(50)とついているのは、ibeep を ibeep(0), ibeep(1), ibeep(2), ...,

ibeep(50) という配列で定義しているという意味です。まとめておくと便利なものを格

納するのが配列です。後の使い方を見てください。

4. コードを変える(実際に動くところ)

全体のコードは、以下のようになっています。変える所は少しですので、がんばっ

て変えてみてください。

Dim nlen As Integer Dim i As Integer

Dim ibeep(50) As Integer

Private Sub Button1_Click(...) End

End Sub

Private Sub TextBox1_TextChanged(...) Dim memori As Integer

memori = Val(TextBox1.Text) If memori > 0 Then

Timer1.Interval = 60000 / memori

memori = Math.Min(memori, TrackBar1.Maximum) memori = Math.Max(memori, TrackBar1.Minimum) TrackBar1.Value = memori

End If End Sub

Private Sub Timer1_Elapsed(...)

i = (i Mod nlen) + 1

If ibeep(i) = 1 Then

Beep()

End If

End Sub

Private Sub Button2_Click(...)

Dim j As Integer ←ここに入れる(③)

② ここを変える

(3)

If Timer1.Enabled = True Then Timer1.Enabled = False Button2.Text = "Start" Else Timer1.Enabled = True Button2.Text = "Stop" i = 0 nlen = Len(TextBox2.Text) For j = 1 To nlen ibeep(j) = Val(Mid(TextBox2.Text, j, 1)) Next j End If End Sub

Private Sub TrackBar1_Scroll(...)

TextBox1.Text = TrackBar1.Value End Sub

説明: ④では、スタートするときに、

i にゼロを代入

nlen に Textbox2 に入っている文字の数(「1110」なら 4)を代入

ibeep(j)に Textbox2 に入っている文字列の、j 番目の文字の値を代入

(「

1110」なら、ibeep(1)=1、ibeep(2)=1、ibeep(3)=1、ibeep(4)=0)

します。

②では、

Timer1 が合図を出すごとに、

i に i を nlen で割ったときの余りに 1 を足したものを代入

(「余り」は、

5÷3=1 余り 2 というときの 2)

(「

1110」と 4 文字なら、Timer1 が合図を出すごとに、1, 2, 3, 4, 1,

2, 3, 4,と変わっていく)

ibeep(i)が 1 なら、Beep を鳴らす。

となります。

結局、

Timer の合図で、「1110」なら beep beep beep 沈黙 beep beep beep 沈黙...

と音が鳴ります。

デバッグメニューから開始で試してみてください。

(4)

「プロジェクト」メニューから「コンポーネントの追加」を選んで、右側をスクロ

ールして「アイコンファイル」を選んでください。「開く」で左のソリューションエ

クスプローラに

icon1.ico が追加されます。それをダブルクリックして絵を描いてくだ

さい。出来たら、

をクリックして保存し、「プロジェクト」メニューから「何と

かのプロパティ」、左側でビルドを選び、右側のアプリケーションアイコンで、今作

ったものを指定します。これで、リビルドをすると、このアイコンのアプリケーショ

ンが出来ます。

また、フォーム

1 をクリックし、プロパティの icon でこれを選ぶと、上のバーの絵

が、アイコンの絵になります。試してみてください。

6. アプリケーションを作る

「ビルド」メニューから「リズムのリビルド」を選ぶと、「リズム」フォルダの

bin」フォルダの中に、リズム.exe というアプリケーションが出来ます。これも、ほ

かの

Windows コンピュータに持って行けば、そこで単独で動かせるアプリケーション

です。

7. 提出

今作った「

bin」フォルダの中のアプリケーションを提出してください。

8. 自分で作る

新たなプロジェクトを作り、リズムプロジェクトを応用して、自分の好きなものを

作ってください。たとえば、

Timer を2つつけて、複雑なリズムにする

・数字を入力させ、

10 以上ならばリズム音が出る

・クリックすると

10 秒間だけリズム音が出る

とか、いろいろ。

(5)

9. 音源を操作する 「かえるプロジェクト」の作成

1.を繰り返し、こんどは、「かえる」プロジェクトを新たに作り、「リズム」プ

10. 音源を操作する 「かえるプロジェクト」の作成

1.を繰り返し、こんどは、「かえる」プロジェクトを新たに作り、「リズム」プ

ロジェクトから

Form1.vb をコピーしてください。次に、前で指示する所から、音源フ

ァイルをコピーして、「かえる」フォルダの中の「

bin」フォルダにコピーしてくださ

い。また、音源操作コマンドのファイル「

example.txt」を「かえる」フォルダにコピ

ーしてください。

Visual Basic に戻って、「ファイル」メニューから「開く」「ファイル」で、今コピ

ーした「

example.txt」を開いてください。

Form1.vb[デザイン]」のタグを選んで、フォームの絵を出し、TextBox2 のテキス

トを、「

12343210345654301010101012343210」にして下さい(別にほかのでもいいけ

れど)。

1→ド、2→レ、...です。とりあえず、1 オクターブ内で出来るメロディにして下

さい。

Form の上の青いバーをクリックして、コードの出ているウィンドウに帰って下さ

い。以下に、コードを載せます。変えた所は、面倒なコマンドが並んでいるので、適

宜「

example.txt」からコピーして作ってください。

Private Declare Function mciSendString Lib "winmm.dll" Alias

"mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer

Dim SoundFileName As String Dim sfn(20) As String Dim col(20) As Color

Dim nlen As Integer

③ ここにコピー(

1

行)

④ ここに入れる(

3

行)

(6)

Dim ibeep(50) As Integer

Private Sub Button1_Click(...) End

End Sub

Private Sub TextBox1_TextChanged(...) Dim memori As Integer

memori = Val(TextBox1.Text) If memori > 0 Then

Timer1.Interval = 60000 / memori

memori = Math.Min(memori, TrackBar1.Maximum) memori = Math.Max(memori, TrackBar1.Minimum) TrackBar1.Value = memori

End If End Sub

Private Sub Timer1_Elapsed(...)

mciSendString("Close " & SoundFileName, vbNull, 0, 0) i = (i Mod nlen) + 1

If ibeep(i) > 0 Then

SoundFileName = sfn(ibeep(i))

mciSendString("Play " & SoundFileName, vbNull, 0, 0) ActiveForm.BackColor = col(ibeep(i))

Else

ActiveForm.BackColor = Color.White End If

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim j As Integer

If Timer1.Enabled = True Then Timer1.Enabled = False Button2.Text = "Start" Else Timer1.Enabled = True Button2.Text = "Stop" i = 0 nlen = Len(TextBox2.Text) For j = 1 To nlen ibeep(j) = Val(Mid(TextBox2.Text, j, 1)) Next j End If End Sub

Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll

(7)

TextBox1.Text = TrackBar1.Value End Sub

Private Sub Form1_Load(...) sfn(1) = """c0.wav""" sfn(2) = """d0.wav""" sfn(3) = """e0.wav""" sfn(4) = """f0.wav""" sfn(5) = """g0.wav""" sfn(6) = """a0.wav""" sfn(7) = """b0.wav""" sfn(8) = """c1.wav""" sfn(9) = """d1.wav""" sfn(10) = """cs0.wav""" sfn(11) = """ds0.wav""" sfn(12) = """fs0.wav""" sfn(13) = """gs0.wav""" sfn(14) = """as0.wav""" sfn(15) = """cs1.wav""" col(1) = Color.Aqua col(2) = Color.Blue col(3) = Color.Coral col(4) = Color.DarkGoldenrod col(5) = Color.ForestGreen col(6) = Color.GreenYellow col(7) = Color.HotPink col(8) = Color.Ivory col(9) = Color.LavenderBlush col(10) = Color.Magenta col(11) = Color.Navy col(12) = Color.Orange col(13) = Color.PapayaWhip col(14) = Color.RosyBrown col(15) = Color.SeaGreen col(16) = Color.Teal col(17) = Color.Violet col(18) = Color.Yellow col(19) = Color.Silver col(20) = Color.Gold End Sub End Class

説明: ③では、パソコンの音源を操作する関数を定義しています。

④では、

SoundFileName という文字変数と、sfn という文字変数の配列と、

col というカラー変数の配列を、このかえるプロジェクト全体で使うと定義し

ています。

⑥ ここに入れる

Form1.Load が無ければ、

デザインの方に戻って、

Form の青いバーをダブル

クリックして出して下さい。

⑦ ここに入れる

(8)

sfn(ibeep(i))に入っているファイル名に対応する音を出して(Play)、フォーム

の色を

col(ibeep(i))の色にし、ibeep(i)=0 の時は、フォームの色を白にしてい

ます。

⑥の

Form1_Load は、フォームが出てきたときに動くプログラムで、ここで

は、最初の値を入れるのに使っています。

sfn にファイル名を”で囲ったもの

を入力しています。

⑦では、

col にカラー名を入れています。

デバッグメニューから実行で試してみてください。

うまくいったら、アイコンを作ったりした後、「かえるのリビルド」をして、アプ

リケーションにして下さい。

11. 音源を操作する 「音階プロジェクト」の作成 <参考>

今度は、「キーボード」を作ってみましょう。「新しいプロジェクト」で、音階プ

ロジェクトを新たに作ってください。

まず、

Form1 のプロパティの KeyPreview を True にしてください。

次に、

Button を1つだけ作ってください。(今回は TextBox も、Bar もありませ

ん。)出来た

Button をダブルクリックしてコードウィンドウを表示させます。

コードは以下の通りです。適宜

example.txt からコピーして作って下さい。また、

Form1_KeyDown(...)、Form1_KeyUp(...)は、コードウィンドウの上の左の窓を

Form1 Events)、右を KeyDown や KeyUp にすると出てきます。

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal

uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer

(9)

Dim sfn(50) As String Dim col(50) As Color

Private Sub Button1_Click(...) End

End Sub

Private Sub Form1_Load(...) sfn(1) = """c0.wav""" sfn(2) = """d0.wav""" sfn(3) = """e0.wav""" sfn(4) = """f0.wav""" sfn(5) = """g0.wav""" sfn(6) = """a0.wav""" sfn(7) = """b0.wav""" sfn(8) = """c1.wav""" sfn(9) = """d1.wav""" sfn(10) = """cs0.wav""" sfn(11) = """ds0.wav""" sfn(12) = """fs0.wav""" sfn(13) = """gs0.wav""" sfn(14) = """as0.wav""" sfn(15) = """cs1.wav""" col(1) = Color.Aqua col(2) = Color.Blue col(3) = Color.Coral col(4) = Color.DarkGoldenrod col(5) = Color.ForestGreen col(6) = Color.GreenYellow col(7) = Color.HotPink col(8) = Color.Ivory col(9) = Color.LavenderBlush col(10) = Color.Magenta col(11) = Color.Navy col(12) = Color.Orange col(13) = Color.PapayaWhip col(14) = Color.RosyBrown col(15) = Color.SeaGreen col(16) = Color.Teal col(17) = Color.Violet col(18) = Color.Yellow col(19) = Color.Silver col(20) = Color.Gold End Sub

Private Sub Form1_KeyDown(...) Dim ie As Integer

(10)

ie = e.KeyCode If ie = 65 Then '65 a je = 1 ElseIf ie = 83 Then '83 s je = 2 ElseIf ie = 68 Then '68 d je = 3 ElseIf ie = 70 Then '70 f je = 4 ElseIf ie = 71 Then '71 g je = 5 ElseIf ie = 72 Then '72 h je = 6 ElseIf ie = 74 Then '74 j je = 7 ElseIf ie = 75 Then '75 k je = 8 ElseIf ie = 76 Then '76 l je = 9 Else je = 0 End If SoundFileName = sfn(je)

mciSendString("Play " & SoundFileName, vbNull, 0, 0) Form1.ActiveForm.BackColor = col(je)

End Sub

Private Sub Form1_KeyUp(...)

mciSendString("Close " & SoundFileName, vbNull, 0, 0) End Sub

End Class

作ったアプリケーションの全部を学籍番号を入れた名前(

12345678 竹内かえる.exe

参照

関連したドキュメント

72 Officeシリーズ Excel 2016 Learning(入門編) Excel の基本操作を覚える  ・Excel 2016 の最新機能を理解する  ・ブックの保存方法を習得する 73

ウェブサイトは、常に新しくて魅力的な情報を発信する必要があります。今回制作した「maru 

燃料取り出しを安全・着実に進めるための準備・作業に取り組んでいます。 【燃料取り出しに向けての主な作業】

問題解決を図るため荷役作業の遠隔操作システムを開発する。これは荷役ポンプと荷役 弁を遠隔で操作しバラストポンプ・喫水計・液面計・積付計算機などを連動させ通常

Google マップ上で誰もがその情報を閲覧することが可能となる。Google マイマップは、Google マップの情報を基に作成されるため、Google

町の中心にある「田中 さん家」は、自分の家 のように、料理をした り、畑を作ったり、時 にはのんびり寝てみた

本事業では、繰り返し使える容器のシェアリングサービス「 Re&Go cup 」をスターバックス の

○今村委員 分かりました。.