Private Sub Command1_Click()
Open "sound.wav" For Binary As #1
Open "sound.txt" For Output As #2
Print #2, "Data ";
n = 0
While (Not EOF(1))
a$ = Input(1, #1)
If a$ <> "" Then
d = Asc(a$)
n = n + 1
If n < 16 Then
Print #2, Str(d); ",";
Else
Print #2, Str(d)
n = 0
Print #2, "Data ";
End If
End If
Wend
Close 1
Print #2, " "
Close 2
End Sub
Data 82, 73, 70, 70, 26, 74, 0, 0, 87, 65, 86, 69, 102, 109, 116, 32Nach der passenden Auswahl der mittleren Datenzeilen muss man erst mal wissen, wieviele Bytes es nun geworden sind. Zählen ist mühsam. Aber man kann die Daten z.B. in Word kopieren und dass die Funktion "Wörter zählen" aufrufen. Im vorliegenden Fall sind es 851 Zeilen, das macht genau 13616 Bytes. Das eigentliche Programm ist dann ganz einfach.
Data 18, 0, 0, 0, 1, 0, 1, 0, 17, 43, 0, 0, 17, 43, 0, 0
Data 1, 0, 8, 0, 0, 0, 102, 97, 99, 116, 4, 0, 0, 0, 232, 73
Data 0, 0, 100, 97, 116, 97, 232, 73, 0, 0, 128, 128, 128, 128, 128, 128
Data 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
Data 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
'--------------------------------------
' PWM-Soundausgabe
' ATMEGA32, 11,0592 MHz
'--------------------------------------
$regfile = "m32def.dat"
$baud = 19200
$crystal = 11059200
$hwstack = 128
$swstack = 128
$framesize = 256
Dim Count As Word
Dim D As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
Pwm1a = 127
Do
Restore Sounddata 'Adresse der Sound-Daten
For Count = 1 To 13616 '13616 Samples
Read D
Pwm1a = D
Waitus 85 'ca. 11 kb/s
Next Count
Waitms 500
Loop
End
Sounddata: '"Ding Dong"
Data 128, 128, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142
Data 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142
Data 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 141, 142, 142, 141, 141, 142
Data 115, 118, 113, 125, 123, 123, 113, 131, 129, 138, 144, 148, 154, 151, 160, 156
Data 172, 176, 178, 178, 178, 181, 178, 175, 163, 166, 159, 154, 151, 144, 134, 126
Data 130, 120, 127, 117, 117, 115, 119, 114, 115, 116, 126, 136, 127, 126, 137, 122
Data 125, 133, 129, 115, 140, 114, 120, 122, 112, 111, 122, 107, 98, 119, 107, 144
Data 151, 119, 121, 134, 150, 178, 207, 182, 168, 167, 183, 202, 219, 202, 167, 153
Data 162, 169, 160, 149, 126, 119, 110, 116, 117, 106, 94, 98, 107, 118, 126, 121
Data 128, 130, 137, 155, 157, 153, 151, 150, 146, 171, 154, 151, 134, 128, 131, 133
Data 134, 113, 112, 96, 102, 115, 119, 105, 102, 108, 101, 116, 120, 113, 107, 124
Data 123, 132, 131, 126, 133, 139, 160, 170, 167, 161, 158, 164, 185, 197, 191, 185
Data 171, 167, 176, 179, 169, 161, 139, 125, 132, 136, 124, 113, 105, 103, 119, 130
Data 132, 123, 120, 130, 151, 161, 165, 159, 155, 163, 171, 172, 169, 155, 140, 143
Data 139, 135, 123, 108, 104, 103, 99, 100, 93, 83, 82, 83, 92, 97, 94, 81
Data 79, 87, 94, 99, 98, 89, 119, 142, 149, 155, 141, 137, 167, 202, 229, 239
Data 193, 187, 210, 221, 233, 229, 175, 147, 149, 143, 151, 135, 97, 77, 81, 87
Data 105, 81, 66, 78, 96, 123, 145, 139, 132, 145, 166, 195, 200, 184, 177, 179
...
...