Autor Wątek: BTc 1bit encoder  (Przeczytany 19493 razy)

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
BTc 1bit encoder
« dnia: 2014.12.13, 00:11:54 »
Linka do niego już kiedyś podawałem : http://www.romanblack.com/picsound.htm
W końcu ciekawość mnie zmogła i znalazłem pięć minut żeby to wypróbować na ZX.
Zakodowałem kawałek WAVe najsłabszym algorytmem BTc1.
Na emulatorze gra, ale rzęzi.
Gdyby kogoś ciekawość ruszyła na tyle, by wrzucić to w realny sprzęt, bardzo bym prosił o info jak to brzmi :)

W załączniku trzy pliki - grające na bicie trzecim portu #FE, na czwartym i na obu.

(uprzedzając pytania - tak, 'player' pisany na kolanie, mający głęboko czasy i T-stejty, a prędkość dobierana na oko w emulatorach - z których każdy odtwarzał to z inną prędkością :) )
« Ostatnia zmiana: 2014.12.13, 00:29:07 wysłana przez steev »
Machines should work. People should think.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: BTc 1bit encoder
« Odpowiedź #1 dnia: 2014.12.19, 21:02:10 »
Ciekawa sprawa z emulatorami.
Tylko ZX Spin odtwarza bit 3 i nie ma słyszalnej różnicy między trzema plikami.
Inne, w których sprawdziłem - Spectaculator, Fuse, RealSpeccy, WJSpeccy - w ogóle nie traktują bitu 3 jako wyjście audio.
Do wgrywania w Unreal zabrakło mi cierpliwości.

A swoją drogą, co to za pieśń?

AY Music, ULA plus.

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: BTc 1bit encoder
« Odpowiedź #2 dnia: 2014.12.19, 23:08:43 »
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: BTc 1bit encoder
« Odpowiedź #3 dnia: 2014.12.22, 23:45:05 »
Inne, w których sprawdziłem - Spectaculator, Fuse, RealSpeccy, WJSpeccy - w ogóle nie traktują bitu 3 jako wyjście audio.
Dziwne bo u mnie w Spectaculator 8 pliki b34 i b4 działają, tylko w pierwszym b3 nic nie słychać.

Mój klon "Bajt" odtwarza wszystkie trzy pliki  8). Najlepiej plik player_b3 ponieważ trzaski są cichsze niż materiał audio i wyraźniej słychać muzykę :-) dobre  :D  :D

Jeszcze ładniej 'b3' brzmi gdy podłączę zewnętrzny wzmacniacz - magnetofon kasetowy SONY CFS-DW38L i zminimalizuję 4kHz i 10kHz tak aby zostały basy i środek.

W b4 i b34 trzeszczenie jest zbyt głośne.

Możesz napisać w skrócie jak konwertować WAV'y do TAP ? Czy trzeba robić jakieś urządzenie czy wystarczy program z tamtej strony?
« Ostatnia zmiana: 2014.12.23, 01:09:20 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: BTc 1bit encoder
« Odpowiedź #4 dnia: 2014.12.23, 02:31:12 »
I tak powinno być, tzn. 2-bitowy beeper. Z testów, które robiłem na Timexie dawno temu, wynikało że bit 3 podawał słabszy sygnał na wyjście audio i brak sygnału na głośnik, a bit 4 full sygnał na oba. 3 i 4 razem nie sprawdzałem. W Spectrum 48 chyba bit 3 idzie też na głośnik (?)
AY Music, ULA plus.

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: BTc 1bit encoder
« Odpowiedź #5 dnia: 2014.12.23, 10:34:36 »
W Spectrum 48 chyba bit 3 idzie też na głośnik (?)
Nie wiem jak jest w ZX48 ale jeśli chodzi o Spectaculator to prawdopodobnie używasz starej wersji. Dopiero od wersji 7.5 autor wprowadził poprawkę poprawnej emulacji BEEP'era:
Cytuj
Implemented correct beeper emulation with respect to the four voltage levels produced by the ULA. The correct sound is now heard from (the few) programs using both the EAR and MIC bits to drive the speaker.
W Spectaculatorze 7.5 i nowszych działa bezbłędnie poprawka DD72speaker_fix stworzona na ROM mojego klona "Bajt" która odłącza dźwięk ładowania programów z głośnika. Poprawkę mam też zastosowaną w "Bajcie" - nie wiem czy to ma coś do rzeczy ale te testy odtwarzania są właśnie na komputerze z zastosowaną poprawką.

P.S. W Komputer_1986_06.djvu na stronie 14 jest opis bitów dotyczących portu #FE (254):
128
64
32
16
8
4
2
1
bit 7
bit 6
bit 5
bit 4
bit 3
bit2
bit 1
bit 0
SPEAKER
MIC
BORDER
BORDER
BORDER

P.S. Sprawdziłem starszą wersją Spectaculator 7.0.1 i odtwarza dokładnie tak samo jak nowsze wersje - czyli ta poprawka nie ma wpływu na odtwarzanie a tylko ma związek z dźwiękiem ładowania programów z taśmy.
« Ostatnia zmiana: 2014.12.23, 11:18:41 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: BTc 1bit encoder
« Odpowiedź #6 dnia: 2014.12.23, 12:57:54 »
Możesz napisać w skrócie jak konwertować WAV'y do TAP ? Czy trzeba robić jakieś urządzenie czy wystarczy program z tamtej strony?
Tylko wynik działania BTc.
Plus kilka wierszy w asm wrzucających kolejne bity na głośniczek.
Machines should work. People should think.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: BTc 1bit encoder
« Odpowiedź #7 dnia: 2014.12.23, 15:20:58 »
Nie wiem jak jest w ZX48 ale jeśli chodzi o Spectaculator to prawdopodobnie używasz starej wersji. Dopiero od wersji 7.5 autor wprowadził poprawkę poprawnej emulacji BEEP'era
Tak, mam 7 i starsze. Mało kiedy używam.
AY Music, ULA plus.

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: BTc 1bit encoder
« Odpowiedź #8 dnia: 2014.12.23, 15:31:15 »
Pobawiłem się chwilę w samplowanie tego VICTORY i już lepiej brzmi w Voice Manipulator 2 czy chociażby w Kmiot-Sampler :-)
Tak, mam 7 i starsze. Mało kiedy używam.
A ja właśnie poniższe pliki .z80 stworzyłem w Spectaculator dzięki opcji Load from Audio Source :-)
« Ostatnia zmiana: 2014.12.23, 15:39:00 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: BTc 1bit encoder
« Odpowiedź #9 dnia: 2014.12.23, 16:15:56 »
Jaki rozmiar ma wejściowy plik .wav? Jakość oryginału osiągnie się, kiedy 1-bitowe dane sampla załaduje się binarnie do RAM zamiast z wejścia audio. Później tylko dostrojenie szybkości  odtwarzania. 
Więcej o samplach było tutaj.
AY Music, ULA plus.

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: BTc 1bit encoder
« Odpowiedź #10 dnia: 2014.12.23, 20:24:13 »
Jaki rozmiar ma wejściowy plik .wav? Jakość oryginału osiągnie się, kiedy 1-bitowe dane sampla załaduje się binarnie do RAM zamiast z wejścia audio. Później tylko dostrojenie szybkości  odtwarzania. 
Więcej o samplach było tutaj.
Sampling robię bezpośrednio z YT z tego linku co zapodał steev do programu odpalonego w Spectaculator (gdzieś tak od 0:55 minuty) ale z wykorzystaniem wirtualnej karty dźwiękowej Virtual Audio Cable. W rezultacie zapodaję oryginalny dźwięk wprost do programu. Wirtualna karta dźwiękowa ma wejście Wave In czyli nagrywa wszelki dźwięk generowany za pomocą dowolnego odtwarzacza programowego w komputerze. W tym przypadku odtwarzaczem jest Flash Player w Firefox. Wszystko odbywa się cyfrowo bez utraty jakości sygnału źródłowego. Jest to podobne do nagrywania z kanału Stereo Mix ("What You Hear") znanego z kart Sound Blaster ale tylko podobne, o czym pisze autor programu Virtual Audio Cable:
Cytuj
It creates a set of virtual audio devices named "Virtual Cables", each of them consists of a pair of the waveform input/output devices. Any application can send audio stream to an output side of a cable, and any other application can receive this stream from an input side. All transfers are made digitally, providing NO sound quality loss (a bitperfect streaming).

VAC behavior is similar to "What You Hear" (or "What U Hear", "Stereo Mix") feature of Sound Blaster Live! and Audigy cards. But it is only similar, not equivalent. If you simply need a function like "Stereo Mix" under Vista/Win7/Win8, there could be better to try to enable it in your audio adapter.

P.S. W linku który zapodałeś sam mi dziękujesz za zrobienie sampli w VM2 :-) :-)
« Ostatnia zmiana: 2014.12.23, 20:59:18 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: BTc 1bit encoder
« Odpowiedź #11 dnia: 2014.12.23, 22:40:18 »
Sample są dobre, ale myślę że mogą być jeszcze lepsze. Co nieciekawe, nawet tak zaawansowany edytor jak Cool Edit Pro, pozwala obniżyć bitdepth jedynie do 8 bitów. Myślę o edytorze audio, który pozwoli obrobić 1-bitowy dźwięk - equalizer do wycięcia zbędnych fal które odbierane są jako szum, median filter i ostatecznie efekty. Później taki dźwięk zapisać jako raw i wgrać binarnie do emulatora, w przypadku VM2 pod adres 23850.

Załadowanie 8-bitowego sampla do VM2 przez Load Binary generuje przypadkowy szum. VM2 czyta bit po bicie, a tutaj bajt po bajcie to dane o głośności. Redukcja do 1-bit pozwoli na stworzenie 8 razy dłuższego sampla.

To dość okrężna droga, bo już sam VM2+Virtual Audio Cable jest właśnie tym konwerterem z dowolnego formatu do 1-bit, tyle że nie ma możliwości post-produkcji.

Dwa załączniki - 8bitowy sampel (rozszerzenie .bin dodałem aby przeszlo jako załącznik. Drugi to .z80 z tym samplem wgranym do VM2.

Powiedz mi jeszcze gdzie skąd ściągnąć ten Picsound? Nie widzę  :(
AY Music, ULA plus.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: BTc 1bit encoder
« Odpowiedź #12 dnia: 2014.12.23, 22:44:22 »
Sample są dobre, ale myślę że mogą być jeszcze lepsze. Co nieciekawe, nawet tak zaawansowany edytor jak Cool Edit Pro, pozwala obniżyć bitdepth jedynie do 8 bitów. Myślę o edytorze audio, który pozwoli obrobić 1-bitowy dźwięk - equalizer do wycięcia zbędnych fal które odbierane są jako szum, median filter i ostatecznie efekty. Później taki dźwięk zapisać jako raw i wgrać binarnie do emulatora, w przypadku VM2 pod adres 23850.

Załadowanie 8-bitowego sampla do VM2 przez Load Binary generuje przypadkowy szum. VM2 czyta bit po bicie, a tutaj bajt po bajcie to dane o głośności. Redukcja do 1-bit pozwoli na stworzenie 8 razy dłuższego sampla.

To dość okrężna droga, bo już sam VM2+Virtual Audio Cable jest właśnie tym konwerterem z dowolnego formatu do 1-bit, tyle że nie ma możliwości post-produkcji.

Dwa załączniki - 8bitowy sampel (rozszerzenie .bin dodałem aby przeszlo jako załącznik. Drugi to .z80 z tym samplem wgranym do VM2.

Powiedz mi jeszcze gdzie skąd ściągnąć ten Picsound? Nie widzę żadnego linku na stronie  :(
AY Music, ULA plus.

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: BTc 1bit encoder
« Odpowiedź #13 dnia: 2014.12.23, 23:27:00 »
Nie picsound. Konwerter nazywa się BTc
Wave 8000Hz mono 8 bit daje po kompresji około 1 s/kB
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: BTc 1bit encoder
« Odpowiedź #14 dnia: 2014.12.23, 23:56:02 »
Później taki dźwięk zapisać jako raw i wgrać binarnie do emulatora, w przypadku VM2 pod adres 23850.
Do emulatora może i tak ale do VM2? Nie znam się za bardzo na samplerach ZX Spectrum. Czy mam rozumieć iż sampel nagrany np. w Kmiot da się wczytać do VM2 i ten go poprawnie odtworzy i odwrotnie? Muszę spróbować bo jeszcze tego nie próbowałem :-)
Załadowanie 8-bitowego sampla do VM2 przez Load Binary generuje przypadkowy szum. VM2 czyta bit po bicie, a tutaj bajt po bajcie to dane o głośności. Redukcja do 1-bit pozwoli na stworzenie 8 razy dłuższego sampla.
Nie rozumiem dlaczego wejściowymi danymi ma być sampel 8-bit skoro taki VM2 sampluje jako 1-bit jak sam napisałeś więc nie rozumie on danych 8-bitowych sampla z pliku bin.

Sam napisałeś iż nie ma edytora na PC który zsampluje i zapisze sampel jako 1-bit więc skoro jedynym sposobem utworzenia sampla 1-bit jest sampler uruchomiony na ZX Spectrum np. VM2 to mój sposób jest jedynym i najlepszym sposobem do uzyskania najlepszej jakości dźwięku :-)

Nawet YERZMYEY w temacie ZX Spectrum 48k jako sampler sam się dziwił, że jego program Kmiot-Sampler potrafi tak świetnie odtwarzać sample gdy zapodałem mu Prognozę pogody :-) którą to nagrałem w ten sam sposób z wykorzystaniem VAC.
Posłuchaj tego jeszcze raz :-) - Prognoza pogody w Kmiot-Sampler

Nie potrzeba nam zaawansowanego edytora typu Cool Edit aby obniżać rozdzielczość do 1-bit. Virtual Audio Cable + emulator Spectaculator z włączoną opcją Load from Audio Source i uruchomionym np. VM2 to jest właśnie nasz sampler 1-bitowy na PC który spełnia znakomicie swoją rolę bez żadnej utraty jakości dźwięku :-)

Myślę o edytorze audio, który pozwoli obrobić 1-bitowy dźwięk - equalizer do wycięcia zbędnych fal które odbierane są jako szum, median filter i ostatecznie efekty. Później taki dźwięk zapisać jako raw i wgrać binarnie do emulatora, w przypadku VM2 pod adres 23850.
Myślę iż nie tędy droga aby edytować 1-bitowy sampel. Aby uzyskać najlepszy efekt trzeba zapodać do samplowania w VM2 odpowiedni materiał źródłowy czyli bez pogłosu (reverb), nie za głośny (nie przesterowany) czyli mówiąc krótko obrobić go w edytorze audio przed zsamplowaniem.

To jest gwarancją sukcesu :-)
« Ostatnia zmiana: 2014.12.24, 00:24:50 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники