2007년 4월 9일 월요일

Uncompressed wave file 에서 정보 추출(VB)

비주얼 베이식에서 웨이브 정보 추출

[CODE type=vb] Public Type wave_header wavRIFFChunk As String * 4 wavSize As Long wavWaveChunk As String * 4 wavFMTChunk As String * 4 wavFormatSize As Long wavPCMFormatFlag As Integer wavChannel As Integer wavSampleRate As Long wavSampleRatePerSec As Long wavPerSecScale As Integer wavBits As Integer wavDataChunk As String * 4 wavDataSize As Long End Type Open txtFile1.Text For Binary As #1 Get #1, , openFile1 If openFile1.wavPCMFormatFlag <> 1 Then MsgBox "표준 PCM 웨이브 파일이 아닙니다.", vbOKOnly + vbInformation, "확인" Close #1 txtFile1.Text = "" Exit Sub End If MCI.Command = "stop" MCI.Command = "close" tinfo = "RIFF Chunk : " & openFile1.wavRIFFChunk & vbCrLf & _ "Size : " & openFile1.wavSize & vbCrLf & _ "Wave Chunk : " & openFile1.wavWaveChunk & vbCrLf & _ "FMT Chunk : " & openFile1.wavFMTChunk & vbCrLf & _ "Format Size : " & openFile1.wavFormatSize & vbCrLf & _ "PCM Format Flag : " & openFile1.wavPCMFormatFlag & vbCrLf & _ "Channels : " & openFile1.wavChannel & vbCrLf & _ "Sample Rate : " & openFile1.wavSampleRate & vbCrLf & _ "Sample Rate/sec : " & openFile1.wavSampleRatePerSec & vbCrLf & _ "Per sec Scale : " & openFile1.wavPerSecScale & vbCrLf & _ "Bits per Sample : " & openFile1.wavBits & vbCrLf & _ "Data Chunk : " & openFile1.wavDataChunk & vbCrLf & _ "Data Size : " & openFile1.wavDataSize lblInformation1.Caption = tinfo zNumSample1 = openFile1.wavDataSize / (openFile1.wavChannel * (openFile1.wavBits / 8)) lblWating1.Visible = True DoEvents ReDim WaveData1(openFile1.wavChannel, zNumSample1) 'reading data For i = 0 To zNumSample1 - 1 For j = 0 To openFile1.wavChannel - 1 If openFile1.wavBits = 8 Then Get #1, , sdata8 WaveData1(j, i) = sdata8 Else Get #1, , sdata16 WaveData1(j, i) = sdata16 End If Next Next lblWating1.Visible = False Close #1 [/CODE]

댓글 없음:

댓글 쓰기