Nagrywanie dźwięku

0

Jak nagrać dźwięk do pliku, ale nie chodzi mi o nagrywanie mikrofony tylko żeby generować dźwięk który będzie zapisywany do pliku.

0
lukaszguzik napisał(a)

Jak nagrać dźwięk do pliku, ale nie chodzi mi o nagrywanie mikrofony tylko żeby generować dźwięk który będzie zapisywany do pliku.

eee.. bordeux.... chyba nie doczytales...

ale co to ma byc za dzwiek? jakas jedna czestotliwosc..?
bo jesli tam to poszukaj komponentu TToneGen (are postow nizej juz ktos pytal o generowanie czestotliwosci).
ale poszujak nowszej wersji bo stara nie apisywala do pliku.

jesli chcesz jakies inne cuda samemu tworzyc to musisz znac budowe pliku wav, potem zwyczajnie tworzysz plik wpisujesz naglowek, informacje o ilosci kanalow itd... , a potem ida dane w postaci probek.
polecam sciagniecie biblioteki BASS i przykladu "writewav".

0

jest tam o nagrywaniu dzwięku jest? to co źle przeczytałem?

0

przeczytaj jeszcze raz wątek

0
bordeux napisał(a)

jest tam o nagrywaniu dzwięku jest? to co źle przeczytałem?

[glowa] wszystko.

0

potrzebuje zapisać do pliku dźwięk który jest generowany przez program (poprzez TToneGen). problem jest taki że to jest mors więc jest dźwięk jest złożony z kilku

0

hmmm... moze i jest inne, lepsze rozwiazanie ale mysle, ze mozesz samemu stworzyc plik...
tzn, zobacz jak to sie robilo w przykladach "writewav" dodawanych do BASS'a
(powycinalem niektore fragmenty):

procedure TForm1.DecodeFile(OutPath, SourceFileName : String);
 var chan, frq, vl : DWORD; Tmp: Integer;
     buf : array [0..10000] of BYTE;
   BytesRead : integer;
   temp : string;
   i : longint;
   RecStream : TFileStream;
   nChannels       : Word;   // number of channels (i.e. mono, stereo, etc.)
   nSamplesPerSec  : DWORD;  // sample rate
   nAvgBytesPerSec : DWORD;
   nBlockAlign     : Word;
   wBitsPerSample  : Word;   // number of bits per sample of mono data
   FileName : String;
begin
nChannels := 1;
wBitsPerSample := 8;
	nBlockAlign := nChannels * wBitsPerSample div 8;
	BASS_ChannelGetAttributes(chan, frq, vl, Tmp);
        nSamplesPerSec := frq;
	nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;

    FileName := ExtractFileName(SourceFileName);
    FileName := Copy(FileName, 1, Length(FileName) - Length(ExtractFileExt(FileName)));
    RecStream := TFileStream.Create(OutPath + FileName + '.wav', fmCreate);

 // Write header portion of wave file
    temp := 'RIFF'; RecStream.write(temp[1], length(temp));
    temp := #0#0#0#0; RecStream.write(temp[1], length(temp));   // File size: to be updated
    temp := 'WAVE'; RecStream.write(temp[1], length(temp));
    temp := 'fmt '; RecStream.write(temp[1], length(temp));
    temp := #$10#0#0#0; RecStream.write(temp[1], length(temp)); // Fixed
    temp := #1#0; RecStream.write(temp[1], length(temp));       // PCM format
    if nChannels = 1 then
       temp := #1#0
    else
       temp := #2#0;
    RecStream.write(temp[1], length(temp));
    RecStream.write(nSamplesPerSec, 2);
    temp := #0#0; RecStream.write(temp[1], length(temp));   // SampleRate is given as dWord
    RecStream.write(nAvgBytesPerSec, 4);
    RecStream.write(nBlockAlign, 2);
    RecStream.write(wBitsPerSample, 2);
    temp := 'data'; RecStream.write(temp[1],length(temp));
    temp := #0#0#0#0; RecStream.write(temp[1],length(temp)); // Data size: to be updated

{**** POCZATEK DANYCH *****}
                RecStream.Write(buf, SizeOf(Buf));
{**** KONIEC DANYCH *****}

// complete WAV header
// Rewrite some fields of header
   i := RecStream.Size - 8;    // size of file
   RecStream.Position := 4;
   RecStream.write(i, 4);
   i := i - $24;               // size of data
   RecStream.Position := 40;
   RecStream.write(i, 4);
   RecStream.Free;
end;

i teraz jak to proponuje zrobic:
robisz sobie dwie tablice: jedna z cisza a druga z dzwiekiem.
potem w miejsce

RecStream.Write(buf, SizeOf(Buf));

dajesz petle:
jesli jest kropka to dodaj dzwiek, jesli kreska to dodaj dzwiek dwa razy (bedzie dluzszy)
dodaj krotka cisze.
i sprawdzasz nastepny znak.

qrde, troche chaotycznie napisalem :|
lapiesz ogolny zarys o co mi chodzi?;]

0
cimak napisał(a)

hmmm... moze i jest inne, lepsze rozwiazanie ale mysle, ze mozesz samemu stworzyc plik...
tzn, zobacz jak to sie robilo w przykladach "writewav" dodawanych do BASS'a
...
qrde, troche chaotycznie napisalem :|
lapiesz ogolny zarys o co mi chodzi?;]

mniej więcej rozumiem

1 użytkowników online, w tym zalogowanych: 0, gości: 1