Najprostszy recorder z obsługą ASIO
Ideałem byłby chyba oprogramowanie bootowane z CD, z własnym systemem operacyjnym, obsługujące najważniejsze elementy komputera i konkretną kartę dźwiękową...
Ale napisanie czegoś takiego to raczej dłuższa zabawa...
Ale napisanie czegoś takiego to raczej dłuższa zabawa...
[URL=http://dziecineo.prv.pl/Nie dzieciom neo!][/URL]
Re: Najprostszy recorder z obsługą ASIO
MB masz u mnie 6+
Właśnie optymalizacja kodu z wykorzystaniem MMX, SSE będzie mieć tu kluczowe znaczenie dla wydajności takiego rekordera.
Dlaczego jedne sterowniki są wydajne od innych ?
Bo każdy programista inaczej podejdzie do procesu optymalizacji kodu. Jak to zrobi będzie miarą wydajności programu czy sterownika obsługującego ASIO.
A tu mówimy o nagrywaniu znaczącej ilości kanałów, które na dodatek mają być wydajnie przesyłane na dysk. Jeżeli ktoś twierdzi, że jest to banalnie proste to ...
Chyba trzeba bedzie cos takiego zrobic, wlasnie czytam sobie SDK do AISO i widze ze tam nic bardziej skomplikowanego od konstrukcji cepa nie ma, chociaz znajac Steinberga diablow w szczegolach moze byc zatrzesienie.
***************
Szkudlik nie wiem być może faktycznie jesteś dobry i zaawansowany w pewnych sprawach programistycznych ale to nie jest takie "hop-siup"
jak Ci się wydaje. Musisz znać wątki i synchronizację wątków oraz znać optymalizowanie kodu w MMX i SSE.
Przy okazji cieszę, się że się w końcu ujawniłeś
A od tych 24-bitów to lepiej uciekaj. Przekonasz się gdzie tkwi haczyk jak do tego siądziesz. Tutaj trzeba 32-float albo 32-int. Jedne procesory radzą sobie lepiej z int a inne z float.
----------
Panowie proponuję wam może coś takiego.
A weźcie sobie kod źródłowy z VstHost-a i wykonajcie niewielką przeróbkę dodając zapis na dysk twardy + wielokanałową obsługę.
http://www.hermannseib.com/english/vsthost.htm
Chociaż estetyka kodu fatalna i niestety studenckie podejście do programowania to myślę, że da się z tego coś zrobić i może nawet łatwym sumptem. A dodatkowo mamy nieźle skomentowany kod gdzie autor wręcz krytykuje to co stworzył Steinberg. I ma słuszną rację. Warto poczytać te komentarze - to już jest niezła lektura.
Jacek niestety smutna wiadomość dla Ciebie bo to w C++ i MFC.
Nie wiem jak w Delphi z dostępem do MMX i SSE ale powinniście mieć tam polecenie asm i można przejść na ten język.
W sumie tak naprawdę dużo nie trzeba. Najważniejsze to kopiowanie i konwersja danych. Reszta tych instrukcji nawet może nas nie interesować.
W sumie to zależy od ostatecznej kompilacji i kompilatora. Intel i Microsoft bardzo dobrze kompilują i optymalizują kod. Być może bez rozszerzonych instrukcji procesorowych będzie to śmigać. Ale jak na razie ciężko mi w to uwierzyć, bo jestem już po pewnych doświadczeniach i wiem, że MMX i SSE ratuje sytuację w momentach kiedy kompilator nie poradził sobie z optymalizacją kodu.
SSE wykonuje 4 instrukcje jednocześnie a więc możemy 4 kanały jednocześnie przetwarzać. No i zrób to teraz w normalnym kodzie. Jak widać, nie da się bo nasz biedny procesorek zamęczy się jedną instrukcją. Dodatkowo w SSE są inne świetne sztuczki w sam raz do audio. Ale to temat Pro.
Podsumowując taki rekorder ASIO przydałby się.
Przekopałem się przez trochę tych rekorderów i faktycznie ASIO to temat TABU dla większości programistów. I tak jest.
Pozdrawiam.
Właśnie optymalizacja kodu z wykorzystaniem MMX, SSE będzie mieć tu kluczowe znaczenie dla wydajności takiego rekordera.
Dlaczego jedne sterowniki są wydajne od innych ?
Bo każdy programista inaczej podejdzie do procesu optymalizacji kodu. Jak to zrobi będzie miarą wydajności programu czy sterownika obsługującego ASIO.
A tu mówimy o nagrywaniu znaczącej ilości kanałów, które na dodatek mają być wydajnie przesyłane na dysk. Jeżeli ktoś twierdzi, że jest to banalnie proste to ...
Chyba trzeba bedzie cos takiego zrobic, wlasnie czytam sobie SDK do AISO i widze ze tam nic bardziej skomplikowanego od konstrukcji cepa nie ma, chociaz znajac Steinberga diablow w szczegolach moze byc zatrzesienie.
***************
Szkudlik nie wiem być może faktycznie jesteś dobry i zaawansowany w pewnych sprawach programistycznych ale to nie jest takie "hop-siup"

Przy okazji cieszę, się że się w końcu ujawniłeś

A od tych 24-bitów to lepiej uciekaj. Przekonasz się gdzie tkwi haczyk jak do tego siądziesz. Tutaj trzeba 32-float albo 32-int. Jedne procesory radzą sobie lepiej z int a inne z float.
----------
Panowie proponuję wam może coś takiego.
A weźcie sobie kod źródłowy z VstHost-a i wykonajcie niewielką przeróbkę dodając zapis na dysk twardy + wielokanałową obsługę.
http://www.hermannseib.com/english/vsthost.htm
Chociaż estetyka kodu fatalna i niestety studenckie podejście do programowania to myślę, że da się z tego coś zrobić i może nawet łatwym sumptem. A dodatkowo mamy nieźle skomentowany kod gdzie autor wręcz krytykuje to co stworzył Steinberg. I ma słuszną rację. Warto poczytać te komentarze - to już jest niezła lektura.
Jacek niestety smutna wiadomość dla Ciebie bo to w C++ i MFC.
Nie wiem jak w Delphi z dostępem do MMX i SSE ale powinniście mieć tam polecenie asm i można przejść na ten język.
W sumie tak naprawdę dużo nie trzeba. Najważniejsze to kopiowanie i konwersja danych. Reszta tych instrukcji nawet może nas nie interesować.
W sumie to zależy od ostatecznej kompilacji i kompilatora. Intel i Microsoft bardzo dobrze kompilują i optymalizują kod. Być może bez rozszerzonych instrukcji procesorowych będzie to śmigać. Ale jak na razie ciężko mi w to uwierzyć, bo jestem już po pewnych doświadczeniach i wiem, że MMX i SSE ratuje sytuację w momentach kiedy kompilator nie poradził sobie z optymalizacją kodu.
SSE wykonuje 4 instrukcje jednocześnie a więc możemy 4 kanały jednocześnie przetwarzać. No i zrób to teraz w normalnym kodzie. Jak widać, nie da się bo nasz biedny procesorek zamęczy się jedną instrukcją. Dodatkowo w SSE są inne świetne sztuczki w sam raz do audio. Ale to temat Pro.
Podsumowując taki rekorder ASIO przydałby się.
Przekopałem się przez trochę tych rekorderów i faktycznie ASIO to temat TABU dla większości programistów. I tak jest.
Pozdrawiam.
Re: Najprostszy recorder z obsługą ASIO
nie rozumiem problemu - zeby podac do laptopa audio i tak musisz miec karte muzyczna - zeby to bylo te kilka kanalow to juz to musi byc cos z lepszych kart - a one maja asio i juz problem nie istnieje....
wiec?
wiec?
Re: Najprostszy recorder z obsługą ASIO
...nie rozumiem problemu - zeby podac do laptopa audio i tak musisz miec karte muzyczna - zeby to bylo te kilka kanalow to juz to musi byc cos z lepszych kart - a one maja asio i juz problem nie istnieje....
wiec?...
**********************
Tak mi sie wydaje ze kazda karta to ma drivery AISO, a mi raczej chodzi o cos co tychze driverow uzywa.
To taka roznica jak miedzy driverami do karty graficznej (kazda ma swoje...) a przegladarka do obrazkow.
[addsig]
wiec?...
**********************
Tak mi sie wydaje ze kazda karta to ma drivery AISO, a mi raczej chodzi o cos co tychze driverow uzywa.
To taka roznica jak miedzy driverami do karty graficznej (kazda ma swoje...) a przegladarka do obrazkow.
[addsig]
Ilu realizatorów potrzeba żeby wkręcić żarówkę?
Czterech, jeden wkręca a trzech mówi że by to zrobiło lepiej
Czterech, jeden wkręca a trzech mówi że by to zrobiło lepiej
Re: Najprostszy recorder z obsługą ASIO
Tak mi sie wydaje ze kazda karta to ma drivery AISO, a mi raczej chodzi o cos co tychze driverow uzywa.
**********************
Karty o których mówimy posiadają sterowniki ASIO, więc to już jest gotowe i nikt nie zamierza tego pisać. Trochę niepotrzebnie wkroczyłem i wmieszałem w to temat sterowników i ich wydajności bo to dyskusja na kiedy indziej. Dzisiejsze sterowniki dzięki szybszym komputerom nie sprawiają już takich problemów jak kiedyś, więc pomińmy ten temat.
Jedno warto wiedzieć. Dane jakie otrzymamy od karty w zależności od sterownika i tak naprawdę fizycznej konstrukcji karty mogą być w różnym formacie. Chcąc nie chcąc musimy odwalić nieźle ciężką robotę w postaci konwersji tych danych na bardziej akceptowalny format. Bardzo możliwe, że kompilator wykona dobrze te zadanie i będzie działać to szybko, ale w innym przypadku czeka nas optymalizacja w SSE.
Lista tych formatów podana jest w SDK ASIO.
Przeszukałem trochę tych prostych audio rekorderów pod Windows i prawie każdy korzysta z MME albo WDM. ASIO nie udało mi się znaleźć. Po za tym rzadko który obsługuje więcej niż stereo.
Próby szukania po hostach VST,ASIO również spełzły na niczym gdyż tutaj jeżeli to host VST to zwykle odtwarza niż nagrywa.
Na przykład Chainer ma ASIO ale nagrywa tylko stereo
Wniosek nasuwa się sam jak to zauważył słusznie MB. Jest to trochę "wyczynowe" zadanie i chyba zadanie na dłuższą "chwilkę".
Niby jego całość sprowadza się do napisania obsługi buforowania ASIO w naszym hoście i zapisu na dysk. IMHO musi być to w miarę rozsądnie napisane jeżeli ma udźwignąć trochę śladów i być "lekkie". Oba procesy czyli, buforowanie i konwersja danych z ASIO karty oraz zapis na HDD powinny być odpowiednio dostosowane do wydajności komputera. To jest mniej więcej podobne zagadnienie jak przy czytaniu sampli z dysku. Zbyt intesywne zapisywanie spowoduje blokadę buforowania ASIO. Zbyt intensywne buforowanie ASIO spowoduje blokadę zapisu na dysk
. Tym samym ryzyko wystąpienia dropów, utraty danych a może nawet i zawieszki systemu.
Poprzeczkę i trudność zadania podniesie również wielokanałowy zapis na dysk. Do tego tematu można podejść naprawdę różnie. Do RAM-u, bezpośrednio na dysk, z wykorzystaniem pamięci wirtualnej itd. itd.
Gdyby nie inne moje prace jakie muszę teraz pilnie wykonywać to chętnie przymierzyłbym się do takiego rekordera. Jak do tej pory nie spotkałem zgrabnego rekordera nagrywającego np. do RAM-u i okresowo zapisującego na dysk. Myślę, że tutaj można jest metoda na oszczędność pracy dysku podczas wielokanałowego nagrywania. Choć w przypadku braku zasilania niesie to ryzyko utrady danych no ale od czego mamy UPS-y.
O ile dobrze pamiętam do tego tematu (czyli wielokanałowego nagrywania na dysk) zawodowo podeszła firma SAMPLITUDE wyposażając swoje oprogramowanie w kilka zaawansowanych opcji nagrywania.
Tak mi sie wydaje ze kazda karta to ma drivery AISO, a mi raczej chodzi o cos co tychze driverow uzywa.
To taka roznica jak miedzy driverami do karty graficznej (kazda ma swoje...) a przegladarka do obrazkow.
**********************
Ale to coś co używa tych driverów musi te dane z ASIO buforować. Steinberg dodaje przykładowe kody źródłowe jak to zrobić.
PS. Przypomniało mi sie, że jeden z moich zaczętych już projektów to sterownik ASIO Multi-Client. Projekt jest chwilowo wstrzymany z powodu innych pilnych zadań ale wrócę do tego niebawem.
Pozdrawiam,
**********************
Karty o których mówimy posiadają sterowniki ASIO, więc to już jest gotowe i nikt nie zamierza tego pisać. Trochę niepotrzebnie wkroczyłem i wmieszałem w to temat sterowników i ich wydajności bo to dyskusja na kiedy indziej. Dzisiejsze sterowniki dzięki szybszym komputerom nie sprawiają już takich problemów jak kiedyś, więc pomińmy ten temat.
Jedno warto wiedzieć. Dane jakie otrzymamy od karty w zależności od sterownika i tak naprawdę fizycznej konstrukcji karty mogą być w różnym formacie. Chcąc nie chcąc musimy odwalić nieźle ciężką robotę w postaci konwersji tych danych na bardziej akceptowalny format. Bardzo możliwe, że kompilator wykona dobrze te zadanie i będzie działać to szybko, ale w innym przypadku czeka nas optymalizacja w SSE.
Lista tych formatów podana jest w SDK ASIO.
Przeszukałem trochę tych prostych audio rekorderów pod Windows i prawie każdy korzysta z MME albo WDM. ASIO nie udało mi się znaleźć. Po za tym rzadko który obsługuje więcej niż stereo.
Próby szukania po hostach VST,ASIO również spełzły na niczym gdyż tutaj jeżeli to host VST to zwykle odtwarza niż nagrywa.
Na przykład Chainer ma ASIO ale nagrywa tylko stereo

Wniosek nasuwa się sam jak to zauważył słusznie MB. Jest to trochę "wyczynowe" zadanie i chyba zadanie na dłuższą "chwilkę".
Niby jego całość sprowadza się do napisania obsługi buforowania ASIO w naszym hoście i zapisu na dysk. IMHO musi być to w miarę rozsądnie napisane jeżeli ma udźwignąć trochę śladów i być "lekkie". Oba procesy czyli, buforowanie i konwersja danych z ASIO karty oraz zapis na HDD powinny być odpowiednio dostosowane do wydajności komputera. To jest mniej więcej podobne zagadnienie jak przy czytaniu sampli z dysku. Zbyt intesywne zapisywanie spowoduje blokadę buforowania ASIO. Zbyt intensywne buforowanie ASIO spowoduje blokadę zapisu na dysk

Poprzeczkę i trudność zadania podniesie również wielokanałowy zapis na dysk. Do tego tematu można podejść naprawdę różnie. Do RAM-u, bezpośrednio na dysk, z wykorzystaniem pamięci wirtualnej itd. itd.
Gdyby nie inne moje prace jakie muszę teraz pilnie wykonywać to chętnie przymierzyłbym się do takiego rekordera. Jak do tej pory nie spotkałem zgrabnego rekordera nagrywającego np. do RAM-u i okresowo zapisującego na dysk. Myślę, że tutaj można jest metoda na oszczędność pracy dysku podczas wielokanałowego nagrywania. Choć w przypadku braku zasilania niesie to ryzyko utrady danych no ale od czego mamy UPS-y.
O ile dobrze pamiętam do tego tematu (czyli wielokanałowego nagrywania na dysk) zawodowo podeszła firma SAMPLITUDE wyposażając swoje oprogramowanie w kilka zaawansowanych opcji nagrywania.
Tak mi sie wydaje ze kazda karta to ma drivery AISO, a mi raczej chodzi o cos co tychze driverow uzywa.
To taka roznica jak miedzy driverami do karty graficznej (kazda ma swoje...) a przegladarka do obrazkow.
**********************
Ale to coś co używa tych driverów musi te dane z ASIO buforować. Steinberg dodaje przykładowe kody źródłowe jak to zrobić.
PS. Przypomniało mi sie, że jeden z moich zaczętych już projektów to sterownik ASIO Multi-Client. Projekt jest chwilowo wstrzymany z powodu innych pilnych zadań ale wrócę do tego niebawem.
Pozdrawiam,
Re: Najprostszy recorder z obsługą ASIO
No więc chyba doczekaliśmy się.
Dzisiaj pojawiła się nowa wersja VstHost-a.
Najnowsza wersja nagrywa wielokanałowo !!!
Added a Wave File Player/Recorder. It can playback and record .WAV files in any bit rate up to 32 bit plus floating-point, with a configurable number of up to 32 channels. It follows a simple "tape recorder" paradigm and is simply inserted into the audio stream just before it is sent to the output device.
http://www.hermannseib.com/vsthost.htm
Dzisiaj pojawiła się nowa wersja VstHost-a.
Najnowsza wersja nagrywa wielokanałowo !!!


Added a Wave File Player/Recorder. It can playback and record .WAV files in any bit rate up to 32 bit plus floating-point, with a configurable number of up to 32 channels. It follows a simple "tape recorder" paradigm and is simply inserted into the audio stream just before it is sent to the output device.
http://www.hermannseib.com/vsthost.htm
Re: Najprostszy recorder z obsługą ASIO
...No więc chyba doczekaliśmy się.
Dzisiaj pojawiła się nowa wersja VstHost-a.
Najnowsza wersja nagrywa wielokanałowo !!!
Added a Wave File Player/Recorder. It can playback and record .WAV files in any bit rate up to 32 bit plus floating-point, with a configurable number of up to 32 channels. It follows a simple "tape recorder" paradigm and is simply inserted into the audio stream just before it is sent to the output device.
http://www.hermannseib.com/vsthost.htm...
**********************
Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"
Jacek
Dzisiaj pojawiła się nowa wersja VstHost-a.
Najnowsza wersja nagrywa wielokanałowo !!!


Added a Wave File Player/Recorder. It can playback and record .WAV files in any bit rate up to 32 bit plus floating-point, with a configurable number of up to 32 channels. It follows a simple "tape recorder" paradigm and is simply inserted into the audio stream just before it is sent to the output device.
http://www.hermannseib.com/vsthost.htm...
**********************
Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"

Jacek
Re: Najprostszy recorder z obsługą ASIO
...Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"
Jacek...
**********************
Ano.
WG, może zrób coś z tym po swojemu. Please!

Jacek...
**********************
Ano.
WG, może zrób coś z tym po swojemu. Please!
Sympatycznie zielonokreskowy nadworny klaun Forum EiS
Re: Najprostszy recorder z obsługą ASIO
......No więc chyba doczekaliśmy się.
Dzisiaj pojawiła się nowa wersja VstHost-a.
Najnowsza wersja nagrywa wielokanałowo !!!
Added a Wave File Player/Recorder. It can playback and record .WAV files in any bit rate up to 32 bit plus floating-point, with a configurable number of up to 32 channels. It follows a simple "tape recorder" paradigm and is simply inserted into the audio stream just before it is sent to the output device.
http://www.hermannseib.com/vsthost.htm...
**********************
Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"
**********************
No pacz jak to sie fajnie sklada, akurat ktos toto naszrajbował
Rozplot WAVa to zaden problem. Bardzo dobrze ze zapisuje w jednym WAV - zawsze nieco mniejszy narzut do obslugi systemu plikow i fragmentacja mniejsza... (przynajmniej tak by bylo na FAT, nie mam pojecia jak jest zarzadzany NFTS). Ciekawe w zasadzie jak windows optymalizuje i buforuje dostep do dysku - to znaczy czy i na ile zapis jednego pliku jest efektywniejszy od zapisu tej samej ilosci danych w kilku plikach. Hmm...
Zobaczymy ile moj stary laptopik + RME digiface + ten VSThoscik pociagnie.
[addsig]
Dzisiaj pojawiła się nowa wersja VstHost-a.
Najnowsza wersja nagrywa wielokanałowo !!!


Added a Wave File Player/Recorder. It can playback and record .WAV files in any bit rate up to 32 bit plus floating-point, with a configurable number of up to 32 channels. It follows a simple "tape recorder" paradigm and is simply inserted into the audio stream just before it is sent to the output device.
http://www.hermannseib.com/vsthost.htm...
**********************
Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"

**********************
No pacz jak to sie fajnie sklada, akurat ktos toto naszrajbował

Rozplot WAVa to zaden problem. Bardzo dobrze ze zapisuje w jednym WAV - zawsze nieco mniejszy narzut do obslugi systemu plikow i fragmentacja mniejsza... (przynajmniej tak by bylo na FAT, nie mam pojecia jak jest zarzadzany NFTS). Ciekawe w zasadzie jak windows optymalizuje i buforuje dostep do dysku - to znaczy czy i na ile zapis jednego pliku jest efektywniejszy od zapisu tej samej ilosci danych w kilku plikach. Hmm...
Zobaczymy ile moj stary laptopik + RME digiface + ten VSThoscik pociagnie.
[addsig]
Ilu realizatorów potrzeba żeby wkręcić żarówkę?
Czterech, jeden wkręca a trzech mówi że by to zrobiło lepiej
Czterech, jeden wkręca a trzech mówi że by to zrobiło lepiej
Re: Najprostszy recorder z obsługą ASIO
WG, może zrób coś z tym po swojemu. Please!
**********************
Po swojemu to ja najchętniej napiszę swojego hosta ale to w swoim czasie
Dzięki za "odzew" ale być może moja ingerencja nie będzie potrzebna. Szczegóły niżej.
Zapis do jednego pliku powinien być bardziej efektywny.
Zwłaszcza przy danych ułożonych tak jak jest to w pliku wave czyli na przemian L1, R1, L2, R2, L3, R3 ... A więc zapisujemy za jednym razem kilka kanałów.
W sumie nie wiem jak jest z wielokanałowym zapisem, gdyż tego nie miałem okazji badać ale wiem jak jest z odczytem. Jest różnica w wydajności przy odczycie np. sampli metodą DFD z pojedynczych plików mono a plików stereo w systemie plików NTFS. Tutaj jest zauważalna różnica w wydajności.
Rozplot WAVa to zaden problem.
****************
Niezupełnie. Taki Cubase SL nie radzi sobie z tym
Mimo że importuje go jako wielokanałowego to umieszcza 4 ślady na jednym tracku. Konwersja do stereo nic nie daje bo z 4 kanałów robi tylko stereo gubiąc resztę
. Podejrzewam, że Nuendo tutaj powinno śmigać bez problemu.
Na razie poczekajmy i zobaczmy czy pojawi się nowa wersja VstHost-a uwzględniająca zapis do oddzielnych plików, ponieważ napisałem do autora
Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"
**********************
No to Jacek w sam raz robótka dla Ciebie
**********************
Po swojemu to ja najchętniej napiszę swojego hosta ale to w swoim czasie

Dzięki za "odzew" ale być może moja ingerencja nie będzie potrzebna. Szczegóły niżej.
Zapis do jednego pliku powinien być bardziej efektywny.
Zwłaszcza przy danych ułożonych tak jak jest to w pliku wave czyli na przemian L1, R1, L2, R2, L3, R3 ... A więc zapisujemy za jednym razem kilka kanałów.
W sumie nie wiem jak jest z wielokanałowym zapisem, gdyż tego nie miałem okazji badać ale wiem jak jest z odczytem. Jest różnica w wydajności przy odczycie np. sampli metodą DFD z pojedynczych plików mono a plików stereo w systemie plików NTFS. Tutaj jest zauważalna różnica w wydajności.
Rozplot WAVa to zaden problem.
****************
Niezupełnie. Taki Cubase SL nie radzi sobie z tym

Mimo że importuje go jako wielokanałowego to umieszcza 4 ślady na jednym tracku. Konwersja do stereo nic nie daje bo z 4 kanałów robi tylko stereo gubiąc resztę

Na razie poczekajmy i zobaczmy czy pojawi się nowa wersja VstHost-a uwzględniająca zapis do oddzielnych plików, ponieważ napisałem do autora

Tylko trzeba potem tego wielokanałowego wave'a "rozszyć"
**********************
No to Jacek w sam raz robótka dla Ciebie
