[ Pobierz całość w formacie PDF ]
.Wait := True;Player.FileName :='test.wav';Player.Open;Player.Play;Zwróæ uwagê na przypisanie w³aœciwoœci Wait wartoœci True – to w³aœnie wymuszaodtworzenie pliku w sposób synchroniczny.Jest to niezbêdne na przyk³ad wsytuacji, gdy pliki dŸwiêkowe maj¹ byæ odtwarzane kolejno jeden za drugim:Player.FileName :='Sound1.wav';Player.Open;Player.Wait:=True;Player.Play;Player.FileName :='Sound2.wav';Player.Open;Player.Wait:=True;Player.Play;Zauwa¿, ¿e w³aœciwoœæ Wait jest ustawiana na wartoœæ True przed odtworzeniemka¿dego z plików – jest to konieczne, gdy¿ ka¿de z tych odtwarzañ resetujew³aœciwoœæ Wait do wartoœci False.Je¿eli w³aœciwoœæ Wait nie zostanie ustawiona na wartoœæ True, kilka milisekundpo rozpoczêciu odtwarzania pierwszego pliku rozpocznie siê odtwarzanie drugiego(i jednoczeœnie anulowanie pierwszego – nie jest to wiêc recepta na polifoniê).Wartoœæ False w³aœciwoœci Wait jest natomiast wykorzystywana od odtwarzaniapojedynczego pliku dŸwiêkowego w tle dzia³aj¹cej aplikacji.Odtworzenie wybranego fragmentu pliku jest mo¿liwe po wczeœniejszym ustawieniuwartoœci pól StartPos i EndPos.Poni¿szy przyk³ad otwiera plik dŸwiêkowy iodtwarza jego dwusekundowy fragment, rozpoczynaj¹c od pierwszej i koñcz¹c natrzeciej sekundzie.Player.FileName:= 'test.wav'Player.Open;Player.StartPos:=1000;Player.EndPos:=3000;Player.Play;Wartoœci pól StartPos i EndPos wyra¿ane s¹ w milisekundach, bêd¹cych jednostk¹domyœln¹ dla urz¹dzeñ odtwarzaj¹cych dŸwiêk w standardzie wave.Ustawienie jednego z pól StartPos lub EndPos na wartoœæ nieprawid³ow¹ sprawi,i¿ plik nie zostanie odtworzony.Do nieprawid³owych wartoœci mo¿na zaliczyæwartoœæ StartPos przekraczaj¹c¹ wartoœæ EndPos, a tak¿e wielkoœæ EndPosprzekraczaj¹c¹ ca³kowit¹ d³ugoœæ danych multimedialnych.Ustawienie g³oœnoœci dŸwiêkuUstawienie g³oœnoœci dŸwiêku typu wave jest operacj¹ wzglêdnie prost¹, ale ¿ebytego dokonaæ trzeba odwo³aæ siê do biblioteki Windows API.Do pobrania iustawienia poziomu dŸwiêku s³u¿¹ dwie funkcje o nazwach waveOutGetVolume iwaveOutSetVolume.G³oœnoœæ dŸwiêku jest pamiêtana jako liczba typu integer.Starsze s³owo okreœlag³oœnoœæ prawego kana³u, a m³odsze – lewego.Je¿eli urz¹dzenie nie posiadazdolnoœci niezale¿nego ustawiania g³oœnoœci kana³Ã³w, m³odsze s³owo okreœlag³oœnoœæ ka¿dego z obydwu kana³Ã³w, starsze zaœ jest ignorowane.Wartoœæ 0 oznacza brak dŸwiêku, natomiast wartoœæ szesnastkowa $FFFF okreœlag³oœnoœæ maksymaln¹.Poni¿szy przyk³ad ustawia g³oœnoœæ dŸwiêku obu kana³Ã³w na50%:waveOutSetVolume(0, $80008000);Kolejny przyk³ad ustawia g³oœnoœæ maksymaln¹:waveOutSetVolume(0, $FFFFFFFF);W obydwu przypadkach za³o¿y³em, ¿e urz¹dzenie odtwarzaj¹ce posiada numer 0(tak¹ wartoœæ ma pierwszy parametr); jest to prawd¹ w wiêkszoœci instalacji.Za pomoc¹ funkcji waveOutSetVolume nie mo¿na, niestety, ustawiæ tzw.g³Ã³wnegopoziomu g³oœnoœci (master volume) – szczegó³owa analiza tego zagadnieniawykracza jednak poza ramy niniejszej ksi¹¿ki.Nagrywanie dŸwiêku w standardzie waveNagrywanie dŸwiêku w standardzie wave nie jest tak proste, jak mog³oby siêwydawaæ – nie sprowadza siê bowiem do prostego wywo³ania metodyStartRecording.Zapisanie nowego pliku dŸwiêkowego wymaga wczeœniejszego otwarcia istniej¹cegopliku wave o takich samych parametrach nagrywania, jakimi cechowaæ powinien siêplik tworzony.Nastêpnie mo¿na nagraæ nowe dane dŸwiêkowe, zmieniæ wartoœæw³aœciwoœci FileName (na nazwê nowego pliku) i na koñcu zapisaæ go.Jest totrochê nieporêczne, ale dzia³a.Za³Ã³¿my dla przyk³adu, ¿e dysponujesz plikiem o nazwie DUMMY.WAV, który zosta³zapisany w 8-bitowym formacie wave o czêstotliwoœci próbkowania 22050 Hz ijednym kanale (tego typu plik mo¿na z ³atwoœci¹ stworzyæ przy pomocy programuWindows – Rejestrator dŸwiêków).W takim przypadku proces nagrywania dŸwiêku,rozpoczynany klikniêciem na przycisku, mo¿na zrealizowaæ w nastêpuj¹cy sposób:procedure TForm1.StartBtnClick(Sender : TObject);beginwith MediaPlayer do begin{Przypisanie w³aœciwoœci FileName nazwy pliku dummy
[ Pobierz całość w formacie PDF ]