День добрый, помогите разобратся.
Необходимо записывать звук с Line-in и подовать на левый и правый динамик правый,левый канал или их сумму.Написал скрипт который воспроизводит звук с Line-in, но микшированием не смог разобраться.На сколько я понял копать нужно в сторону функций _Bass_Mixer_* и _Bass_Channel*.
Необходимо записывать звук с Line-in и подовать на левый и правый динамик правый,левый канал или их сумму.Написал скрипт который воспроизводит звук с Line-in, но микшированием не смог разобраться.На сколько я понял копать нужно в сторону функций _Bass_Mixer_* и _Bass_Channel*.
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "Bass.au3"
#include "BassEnc.au3"
#include "BassExt.au3"
Global $BASS_STARTUP_BYPASS_VERSIONCHECK
OnAutoItExitRegister("_FreeBass")
HotKeySet("{ESC}", "_Exit")
_BASS_Startup()
_BASS_ENCODE_Startup()
_BASS_EXT_STARTUP()
_BASS_Init(0, -1, 44100, 0, "")
_BASS_RecordInit(-1)
$aBuffer = _BASS_EXT_MemoryBufferCreate()
$hRecord = _BASS_RecordStart(44100, 2, 0, $BASS_EXT_RecordProc)
$hStream = 0
$pBuffer = _BASS_EXT_MemoryBufferCreate()
$bMp3Data = 0
$hEncoder = _BASS_Encode_Start($hRecord, '"' & @ScriptDir & '\CenterCutCl',BitOR(0,0))
While 1
;~ $iSize = _BASS_EXT_MemoryBufferGetSize($aBuffer)
If $iSize > 1024 Then
$bMp3Data = _BASS_EXT_MemoryBufferGetData($aBuffer, $iSize)
ConsoleWrite(TimerDiff($timer) & " - Bytes: " & BinaryLen($bMp3Data) & @CRLF)
$timer = TimerInit()
If BinaryLen($bMp3Data) > 0 Then
_BASS_EXT_MemoryBufferAddData($pBuffer, $bMp3Data)
If Not $hStream And _BASS_EXT_MemoryBufferGetSize($pBuffer) > 4096 Then
$hStream = _BASS_StreamCreateFileUser($STREAMFILE_BUFFERPUSH, BitOR($BASS_STREAM_RESTRATE, $BASS_STREAM_BLOCK), $BASS_EXT_FILEPROCS, $pBuffer[0])
_BASS_ChannelPlay($hStream, 1)
EndIf
EndIf
$iSize = _BASS_EXT_MemoryBufferGetSize($pBuffer)
If $hStream And $iSize >= 1024 Then _BASS_EXT_StreamPutFileBufferData($hStream, $pBuffer, $iSize)
EndIf
Sleep(50)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _FreeBass()
_BASS_Encode_Stop($hEncoder)
_BASS_RecordFree()
_BASS_Free()
EndFunc ;==>_FreeBass#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "Bass.au3"
#include "BassEnc.au3"
#include "BassExt.au3"
Global $BASS_STARTUP_BYPASS_VERSIONCHECK
OnAutoItExitRegister("_FreeBass")
HotKeySet("{ESC}", "_Exit")
_BASS_Startup()
_BASS_ENCODE_Startup()
_BASS_EXT_STARTUP()
_BASS_Init(0, -1, 44100, 0, "")
_BASS_RecordInit(-1)
$aBuffer = _BASS_EXT_MemoryBufferCreate()
$hRecord = _BASS_RecordStart(44100, 2, 0, $BASS_EXT_RecordProc)
$hStream = 0
$pBuffer = _BASS_EXT_MemoryBufferCreate()
$bMp3Data = 0
$hEncoder = _BASS_Encode_Start($hRecord, '"' & @ScriptDir & '\lame" -r -x -b128 -h - -', 0, $BASS_EXT_EncodeProc, $aBuffer[0])
While 1
;~ $iSize = _BASS_EXT_MemoryBufferGetSize($aBuffer)
If $iSize > 1024 Then
$bMp3Data = _BASS_EXT_MemoryBufferGetData($aBuffer, $iSize)
ConsoleWrite(TimerDiff($timer) & " - Bytes: " & BinaryLen($bMp3Data) & @CRLF)
$timer = TimerInit()
If BinaryLen($bMp3Data) > 0 Then
_BASS_EXT_MemoryBufferAddData($pBuffer, $bMp3Data)
If Not $hStream And _BASS_EXT_MemoryBufferGetSize($pBuffer) > 4096 Then
$hStream = _BASS_StreamCreateFileUser($STREAMFILE_BUFFERPUSH, BitOR($BASS_STREAM_RESTRATE, $BASS_STREAM_BLOCK), $BASS_EXT_FILEPROCS, $pBuffer[0])
_BASS_ChannelPlay($hStream, 1)
EndIf
EndIf
$iSize = _BASS_EXT_MemoryBufferGetSize($pBuffer)
If $hStream And $iSize >= 1024 Then _BASS_EXT_StreamPutFileBufferData($hStream, $pBuffer, $iSize)
EndIf
Sleep(50)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _FreeBass()
_BASS_Encode_Stop($hEncoder)
_BASS_RecordFree()
_BASS_Free()
EndFunc ;==>_FreeBass