|
verssion
Posts: 2
|
 |
« on: 3 May '12 - 19:05 » |
Quote
|
hello all, i need help i want create program on c++ builder like "recordtest" in delphi, i try translate it, but i got error 41 on BASS_StreamCreateFile after a button press "Stop" i think problem with writing header for file
its code on delphi:
type WAVHDR = packed record riff: array[0..3] of AnsiChar; len: DWord; cWavFmt: array[0..7] of AnsiChar; dwHdrLen: DWord; wFormat: Word; wNumChannels: Word; dwSampleRate: DWord; dwBytesPerSec: DWord; wBlockAlign: Word; wBitsPerSample: Word; cData: array[0..3] of AnsiChar; dwDataLen: DWord; end;
var WaveHdr: WAVHDR; // WAV header
with WaveHdr do begin riff := 'RIFF'; len := 36; cWavFmt := 'WAVEfmt '; dwHdrLen := 16; wFormat := 1; wNumChannels := 2; dwSampleRate := 44100; wBlockAlign := 4; dwBytesPerSec := 176400; wBitsPerSample := 16; cData := 'data'; dwDataLen := 0; end; WaveStream.Write(WaveHdr, SizeOf(WAVHDR)); // start recording @ 44100hz 16-bit stereo rchan := BASS_RecordStart(44100, 2, 0, @RecordingCallback, nil);
and my code on builder:
char riff[4]={ 'R', 'I', 'F', 'F' }; int len=36; char cWavFmt[8]={'W','A','V','E','f','m','t',' '}; int dwHdrLen=16; short wFormat=1; short wNumChannels=2; int dwSampleRate=44100; int wBlockAlign=4; short dwBytesPerSec=176400; short wBitsPerSample=16; char cData[4]={'d','a','t','a'}; int dwDataLen=0;
WaveStream->Write(&riff, sizeof(char)); WaveStream->Write(&len, sizeof(int)); WaveStream->Write(&cWavFmt, sizeof(char)); WaveStream->Write(&dwHdrLen, sizeof(int)); WaveStream->Write(&wFormat, sizeof(short)); WaveStream->Write(&wNumChannels, sizeof(short)); WaveStream->Write(&dwSampleRate, sizeof(int)); WaveStream->Write(&wBlockAlign, sizeof(int)); WaveStream->Write(&dwBytesPerSec, sizeof(short)); WaveStream->Write(&wBitsPerSample, sizeof(short)); WaveStream->Write(&cData, sizeof(char)); WaveStream->Write(&dwDataLen, sizeof(int));
// start recording @ 44100hz 16-bit stereo rchan = BASS_RecordStart(44100, 2, 0, RecordingCallback, NULL);
pls help, who can =(
|