PDA

View Full Version : Chương trình thu fát âm thanh!!



Bryan_kid
01-03-2004, 23:18
Các bạn giúp mình chương trình thu fát âm thanh giống như "sound recorder" trong Window đó!!!
Đây chỉ là bước đầu tiên trong 3 bước của bài tập mình fải làm!!
Xin các bạn hãy giúp đỡ!!

ITbaby
03-03-2004, 01:44
vậy thì bước đầu tiên có thể xem đoạn sau nà !

Lưu âm thanh từ micro, cd-line

Lưu file dưới dạng wav

' -=-=-=- METHODS -=-=-=-=-
' PauseRecord Toggle để pause the record (Nếu bạn đang thu)
' StartRecord Start Recording
' StopRecord Stop recording
'-------------------------------------------------------------

Private FName As String
Private Declare Function mciSendString Lib ''winmm.dll'' Alias ''mciSendStringA'' (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Public Enum MyState
Idle
Recording
Paused
End Enum

Private xState As MyState

Public Property Get FileName() As String
FileName = FName
End Property

Public Property Let FileName(ByVal sFileName As String)
FName = sFileName
End Property

Public Function StartRecord() As Boolean
On Error GoTo ER:
If FName = '''' Then GoTo ER:
Dim RS As String, cb As Long, I As Long
RS = Space$(128)
I = mciSendString(''open new type waveaudio alias capture'', RS, 128, cb)
I = mciSendString(''record capture'', RS, 128, cb)
xState = Recording
StartRecord = True
Exit Function
ER:
StartRecord = False
End Function

Public Function StopRecord() As Boolean
On Error GoTo ER:
If FName = '''' Then GoTo ER:
Dim RS As String, cb As Long, I As Long
RS = Space$(128)
I = mciSendString(''save capture '' & FName, RS, 128, cb)
I = mciSendString(''close capture'', RS, 128, cb)
xState = Idle
StopRecord = True
Exit Function
ER:
I = mciSendString(''close capture'', RS, 128, cb)
StopRecord = False
End Function

Private Sub Class_Initialize()
xState = Idle
End Sub

Private Sub Class_Terminate()
StopRecord
End Sub



Public Function PauseRecord() As Boolean
On Error GoTo ER:
If FName = '''' Then GoTo ER:
Dim RS As String, cb As Long, I As Long
RS = Space$(128)
If xState = Paused Then
I = mciSendString(''record capture'', RS, 128, cb)
xState = Recording
ElseIf xState = Recording Then
I = mciSendString(''pause capture'', RS, 128, cb)
xState = Paused
End If
PauseRecord = True
Exit Function
ER:
PauseRecord = False
End Function


Public Property Get State() As MyState
State = xState
End Property

copyleft by ITbaby :lick: :lick:

Bryan_kid
03-03-2004, 03:02
Cảm ơn ITbaby nhiều lắm, Bryan sẽ thử, có gì Bryan sẽ hỏi thêm!!!

Bryan_kid
15-03-2004, 06:26
Nè ITbaby ơi! Giúp dùm Bryan phần đọc: số tiền nợ quy định trước đi (9 chữ số thôi là ok rùi, hơn nữa càng tốt) + đọc giờ hiện hành (từ hệ thống)
Ráng giúp dùm Bryan nghen!!

ITbaby
27-03-2004, 13:39
Dùng hàm Time để lấy giờ hệ thống muh . Híc

Còn dùng API thì anh xem cái ví dụ này nè

Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Sub Form_Load()
Dim SysTime As SYSTEMTIME
'Set the graphical mode to persistent
Me.AutoRedraw = True
'Get the system time
GetSystemTime SysTime
'Print it to the form
Me.Print "The System Date is:" & SysTime.wMonth & "-" & SysTime.wDay & "-" & SysTime.wYear
Me.Print "The System Time is:" & SysTime.wHour & ":" & SysTime.wMinute & ":" & SysTime.wSecond
End Sub

Còn câu kia thì con chịu, đọc không hiểu gì cả

Bryan_kid
30-03-2004, 09:49
Còn phần đọc số thì sao? Cho Bryan biết thuật toán là okey rùi!!!
Nhưng Itbaby ơi!!! Thầy của Bryan kêu là phần thu phát âm thanh là fải lập trình cấp thấp, có nghĩa là cũng dùng các hàm có sẵn nhưng không liên quan gì đến âm thanh để lập trình cho phần thu phát. Chẳng hạn khi thu thì chương trình sẽ kiểm tra card sound, microphone, ... sẵn sàng chưa, rồi mới cho phép thu, và lưu dưới dạng .wav . Còn khi phát thì chương trình phải đọc header của file và xác định đó có phải là dạng .wav không rồi mới phát, làm như thế này mình có thể can thiệp trực tiếp vào từng phần của file, và cũng có thể trộn các file lại với nhau!! Bryan nghe thầy hướng dẫn như rứa, khi nghe thì gật gù, nhưng về rồi cũng pó tay chứ biết làm sao!!!! Plzzzzzzz!!!!
Bryan!!! sad

TV_THINH
30-03-2004, 14:03
Hê hê , .... mọi vấn đề đơn giản về thu phát âm thanh sẽ được giải quyết nhanh chóng mà không làm bạn mất thời gian nhiều. Hãy dùng google.com hay một browser naò đó tìm QuickRecord và ***** của nó. Nhưng hãy mail lại cho mình cách thức lưu tập tin mp3 nếu biết.

Bryan_kid
06-04-2004, 17:05
Cảm ơn bạn nhiều, nhưng cái mình muốn ở đây la` source cấp thấp để thu fát âm thanh!!
Anyway, thank you much!!
Bryan!!

Bryan_kid
16-04-2004, 16:13
Hic...hic....
Nobody can help me?? Hu...hu.... Gần nộp bài rùi, khổ quá đi!!!
Bryan!

Bryan_kid
26-04-2004, 17:18
ITBaby oi, doc offline msg di, roi tra loi cho BK biet, BK se gui source cho BBY

ITbaby
26-04-2004, 21:43
Hu hu ! Em còn nhiều việc mà ! Hu hu , em chỉ có thể chỉ dẫn, đưa ra cách thức, chứ làm sao mà kham việc làm bài dùm được, Bryan thông cảm cho baby nhé :( !

Bryan_kid
28-04-2004, 15:21
Hic...hic... bữa giờ bby chỉ đưa source cho BK chứ có hướng dẫn gì đâu. Bây giờ bby hướng dẫn cho BK cách thu fát âm thanh cấp thấp nghen. mấy cái source bby đưa và cả những cái BK down về toàn dùng thư viện có sẵn thôi. Thanks first!!!

ttc7582
28-04-2004, 16:17
Như vậy thì âm thanh thu sẽ đi vào từ đường line in phải không. vậy từ modem thì sao, bạn có thể cho biết được không

Bryan_kid
15-06-2004, 13:17
BBy ơi!! Chưa có phần play file và lưu file đó!!!!