Jak konwertować dźwięk??

0

Od razu mówię że nie wiem czy dobrze trafiłem - jeśli źle to proszę o przeniesienie. Sprawa dotyczy Delphi.
Chcę mieć możliwość konwertowania dźwięku - najbardziej zalezy mi żeby z jakiegokolwiek wav'a móc robić wav 16 bitów. Czy jest to możliwe w dosyć prosty sposób?? Czym to zrobić?? Może jakiego komponentu użyć??

Z góry dzięki za pomoc

0

Domyślam się, że BASS powinien potrafić coś takiego zrobić... Ma tam możliwość zapisu, więc tak generalnie próbowałbym tak: Otworzyć WAV'a -> Zmienić właściwości -> Zapisać.

0

ok dzięki za odpowiedź. Pobawię się. Jeśli będą problemy to zapytam.
A jeśli ktoś zna inne sposoby to piszcie. Każda sugestia przyda mi się

0

piszę jeszcze raz bo nijak nie mogę sobie poradzić z tym bass.dll. Dźwięk odtwarzam ale nie potrafię zmienić właściwości, a o to mi właśnie chodzi.
Pomóżcie!!!
Może jakiś kodzik przykładowy???

0

Po co Bass, skoro można samemu :-)
Struktura wava jest dość prosta, ale przetworzenie rozdzielczości bitowych nie jest takie proste z punktu widzenia jakości dźwięku. Tzn w górę jest łatwo, w dół trudno.
Z 8 na 16 bit w teorii należałoby bajt z 8-bit użyć jako bardziej znaczący bajt słowa 16-bitowego. Rzecz w tym, że w 8-bit amplituda jest kodowana jako unsigned byte. Czyli zero =127, minimum to 0, a maximum to 255. W 16-bit wartość próbki jest zapisywana sensowniej, tzn jako signed word. zero=0, minimum to -32768, maximum to 32767. Zwróć na to uwagę przy konwersji.

Przy zmniejszania rozdzielczości bitowej (np z 16 na 8) teoretycznie wystarczy urwać mniej znaczący bajt, a bardziej znaczący zostawić przekształcając go zgodnie z podanymi powyżej zasadami. Jednak jeśli cichy sygnał 16-bitowy po konwersji do 8-bit takiej jak powyżej będzie w okolicy jednego bita, wtedy będzie dziwnie brzmiał, zanikał, pojawiał się itd. Dlatego stosuje się dithering, czyli dodanie niewielkiej ilości szumu przy konwersji. Szum nieco wzrasta, ale poprawia się jakość w porównaniu do normalnej konwersji. Dodatkowo, stosuje się odpowiednią funkcję gęstości prawdopodobieństwa dithera żeby wzrost szumu był niewielki a jednocześnie żeby szum nie był zmodulowany przez sygnał. Dalej, widmo szumu zwykle kształtuje się w dziedzinie częstotliwości, by maksimum energii przypadało na pasmo słabo słyszalne. Jak już sobie z tym poradzisz, to ostatni problem będzie doprawdy pikusiem. Otóż formatów wyższych niż 16-bit jest kilka, jest 24-bitowy (być może z podformatami), jest kilka standardów 32-bitowego float. Kowerter musi poprawnie je wszystkie obsłużyć :-);

0

hehe to teraz mnie kompletnie załamałeś :(
Tekst który napisałeś wygląda jakby czystą zerżniety z jakiejś książki czysto teoretycznej. Rozumiem go tylko po części (małej części :-/ niestety)

Ja jestem praktykiem. Potrzebuję jakichs przykładów. Prosiłbym o podanie jakiegoś prostego przykładu a dalej chyba sobie jakos poradzę - mam takja nadzieje :)

Chodzi mi o czysty kod. Jeden prosty przykład jak to zrobić.

HELP ME!

0

wygląda jakby czystą zerżniety z jakiejś książki czysto

Wypraszam sobie! :[ :[ :[

Tekst pisałem z głowy.

0

ja napisałem że tak wygląda a nie że tak jest.
Wszyscy piszą samą teorię - żadnych przykładów, a o nie mi chodzi.
Skoro tyle o tym wiesz - bo chyba wiesz - to podaj jakiś prosty przykład do przerobienia na jeden tylko typ.

0

No na pewno nie będę za Ciebie kodu stukał.
Jak przeszukasz forum na hasło TWaveHeader to znajdziesz mój opis struktury najprostszej wersji pliku wav. To oraz informacje podane powyżej w zupełności wystarczą na napisania prostej (bez ditheru) konwersji 16 na 8 i 8 na 16. Jeśli Ci nie wystarczą, to masz problem z własnymi umiejętnościami programistycznymi.
A jeśli to sobie zrobisz, to necie pewnie znajdziesz strukture wavów 24 i 32bitowych, a na pewno jest pełna struktura wava (z blokami zawierającymi informacje inne niż dźwięk). O ditherze może też będzie :-)

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