[CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
Awatar użytkownika
tasza
Expert
Expert
Posty: 978
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

[CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: tasza » wtorek 05 lis 2019, 22:45

♬ ☘ Moja muzyka do kodowania ♬ ♬ ♬ ☘
♫ ♩ ♪ Michał Jelonek, Piotr FronczewskiAria Skołuby (Straszny dwór) ♪ ♩ ♫
https://youtu.be/hPa0yTAFnDQ


Na forum poruszono już temat współpracy systemu CA80 z magnetofonem kasetowym. I w zasadzie wszystko byłoby fajnie, gdyby nie fakt, że pomijamy tam tor analogowy interfejsu magnetofonowego. No niby w dzisiejszych czasach kaseciak niespecjalnie ma rację bytu, ale chyba warto mieć CA80 w stanie jak najbardziej kompletnym, tak jak opisują tomiki MIK i jednak wykorzystać jego możliwości przy minimalnej ingerencji sprzętowej.

Celem ćwiczenia będzie zatem spreparowanie prostego programiku (hex2wav), który przetworzy plik Intel Hex na plik audio, w formacie przyjmijmy że WAV, który to plik możemy odegrać z komputera czy odtwarzacza CD. Możemy też taki materiał audio udostępnić innym w mniej lub bardziej fikuśnej formie (np.YouTube) - jedynym sprzętem koniecznym do załadowania kodu będzie...kabelek.

Co nam potrzeba? Oczywiście karty dźwiękowej, to można przyjąć w komputerze ma każdy. Ja do swoich złącz line-out mam zapiętą Toscę i za żadne skarby nie zrezygnuję z muzyki podczas majstrowania, zatem konieczne było dostawienie blaszakowi drugiej karty, świetnie sprawdził się wyrób soundblasteropodobny kupiony w pobliskim lombardzie za kilkadziesiąt złotych. Linux bez problemu obsługuje dwie karty na raz, kwestia tylko odpowiednio wskazać oprogramowaniu z której ma skorzystać.

Konieczna jest też weryfikacja czy sygnał audio z CA80 da się nagrać na komputer naszym egzemplarzem karty, a potem stabilnie i bez błędów wczytać nazat do CA80. To sprawdzenie wykonałam w wątku :arrow: https://microgeek.eu/viewtopic.php?f=82&t=2158#p13243 i nagrywanie programem Audacity okazało się całkiem skuteczne. Odtwarzanie też, aczkolwiek wymagana była korekcja amplitudy aby CA80 zaskoczył z transmisją, mój okaz ewidentnie lubi delikatne przestery.

Skoro ćwierkania z CA80 dało się zapisać do pliku audio i potem wczytać jako program zleceniem *6 , to naturalnym wydaje się pomysł: a może by tak spreparować plik audio na podstawie pliku wynikowego IHEX – wtenczas będzie możliwość wczytywania dowolnych, przygotowanych na PC programików.

Cała sztuka polega na przygotowaniu materiału dźwiękowego (tonu) modulowanego w rytm kolejnych bitów/bajtów/rekordów zgodnie z opisem w książce MIK05. Wiemy z niej, że częstotliwością wyjściową przy nagrywaniu jest ~3kHz i taki sygnał musimy zsyntezować. Warto jednak upewnić się, czy tor odbiorczy ma pasującą do nadawczego charakterystykę. Filtr pasmowy w CA80 może mieć nieco inne zdanie na temat środkowej częstotliwości z uwagi na rozrzut wartości elementów, możemy więc ją fizycznie zbadać mierząc napięcie AC na nodze 6 układu U14 (wyjście 741), a sygnał podajemy choćby ze stronki https://www.szynalski.com/tone-generator/ Wykonując kilka prób w przedziale 2..4kHz (np. co 100Hz) na pewno trafimy na środkową f. dla naszego układu filtra, dla niej amplituda wyjściowa będzie największa spośród badanych. W moim przypadku wyszło 3.5kHz i taka wartość będzie używana dalej na zasadzie cyt. "jak doświadczalnie stwierdzono".

Sama synteza w pigułce - obrazek niżej to jeden bajt żywych, nagranych w Audacity danych z CA80 – w celach poglądowych naniosłam opisy zgodnie z tereścią MIK05.

wave_detale.png

Garść faktów - domyślna transmisja jest 140 bitów/sek, jeden sygnał jednego bitu trwa 1/140 sekundy czyli ~7 ms; chcemy odtwarzać z częstotliwością 44.1kHz czyli 1 sekunda to 44100 próbek. Z powyższych wynika, że dzieląc szybkość samplowania przez szybkość transmisji uzyskamy ilość próbek sinusa na jeden bit zapisanej informacji, wychodzi ich nieco ponad 300. I to jest mega ważne – ponieważ umożliwia określenie długości tabeli próbek dla zadanej porcji danych. Jeden nagrywany bajt to: bit startu, 8 bitów danych, dwa bity stopu (ciszy), razem 11 elementarnych odcinków sygnału lub jego braku. To oczywiście mnożymy przez narzut protokołu magnetofonowego CA80, dodajemy także rozbiegówkę, czyli dwa razy po 32 bajty. No i po trzech wieczorach kodowania dochodzimy do zabawki jak w załączniku – zagadnienie jest zdekomponowane na proste funkcje: appendDataBit(), appendStopBit(), appendByte() i nieco bardziej wysokopoziomowe: appendHex(), appendEOF() czy appendSynch(). Nazwy mówią same za siebie.

Funkcyjka appendDataBit() jest o tyle śmieszna, że tam generowanie bitu (cisza/sygnał lub sygnał/cisza) jest poprzez wyzerowanie amplitudy sygnału, przy ciągle zmieniającej się wraz z próbkami dziedzinie czasu, to zapewnia ciągłość przebiegu przy przechodzeniu na kolejne numery bitów i wyżej - bajtów.

Aby nie wynajdywać Ameryki od nowa skorzystałam z bardzo wdzięcznej mini-biblioteki ze stronki :arrow: https://www3.nd.edu/~dthain/courses/cse ... 3/wavfile/ naprawdę szacunek wielki dla autorów za tek kawałek kodu, wiele krwi mi oszczędził. Program nie jest jakimś specjalnym cudem, ale działa dość skutecznie a przede wszystkim jest wdzięcznym poletkiem do dalszych doświadczeń i zabaw, jeżeli ktoś zechce podjąć temat.

Kompilacja nowego przydasia:

Kod: Zaznacz cały

gcc -o hex2wav hex2wav.c wavfile.c -lm

Programik uruchamiamy następująco, przykład:

Kod: Zaznacz cały

hex2wav test.hex AA C000 test.wav

Pliki *.wav wyprodukowane przez konwerter są dość spore, testowy hex zawierający pełne 8kB danych dał finalnie około 86MB materiału audio. To sporo, więc zaraz pomniejszymy, najpierw test jak taki WAV wczyta się do CA80.

Do odtwarzania z konsoli (ponieważ celuje w kierunku integracji z make) wykorzystałam jeden z popularniejszych linuksowych programików - play. Program znajdziemy w pakiecie sox, niejako z pudełka odtwarza pliki *.wav. Po doinstalowaniu kodeków z paczki libsox-fmt-all potrafi odegrać także pliki *.mp3

Wspominałam o dwóch kartach dźwiękowych - programik play zauważa zmienną środowiskową AUDIODEV, wybrany dla CA80 kanał audio wskazujemy ustawiając jej wartość np. AUDIODEV=hw:2,0 i tyle.

Odegranie naszego programu sprowadza się do wywołania:

Kod: Zaznacz cały

play -v 3 test.wav

Zwracam uwagę na parametr -v to podniesienie poziomu głośności, wspominałam że mój CA80 lubi przestery...
Jeżeli wejdziemy w zlecenie *6 i podamy niepoprawną wartość nazwy aplikacji (liczbę hex) na ekranie CA80 będą pojawiały się kolejne analizowane przez komputerek rekordy.

Kolejny, finalny etap zabawy to wplecenie w/w konwersji w make, nie jest to zbyt skomplikowane i przykładowy makefile możemy
zobaczyć tu :arrow: https://raw.githubusercontent.com/biena ... o/makefile

Kolejne wywołania:

Kod: Zaznacz cały

make all
make tape
make noise


zbudują alikację `cALo`, przygotują materiał analogowy w formacie *.mp3 na koniec dadzą go CA80 do posłuchania (wczytania). Bardziej na żywo wygląda to tak:

https://youtu.be/hO_ohr0mwaI

A posiadanie programu dla CA80 w formie ścieżki dźwiękowej to prosta droga do publikacji tego `w chmurze` czyli przy pomocy np. kdenlive składamy serie obrazków z popiskiwaniem - proszę, oto zrobiona na kolanie i gotowa do załadowania wersja `cALo`, nazwa na taśmie - AA, wgrywa się pod adres 0x4000.

https://youtu.be/rvnyFHX4Vag

Taka mnie światła myśl na koniec naszła, że nagrywając te programiki w formacie wav czy mp3 na płytę kompaktową i podłączając wyjście odtwarzacza do CA80 uzyskamy - komputer CA80 z CDROM :roll:

#slowanawiatr
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
Zegar
Posty: 25
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: Zegar » środa 06 lis 2019, 13:51

tasza pisze:Na forum poruszono już temat współpracy systemu CA80 z magnetofonem kasetowym. I w zasadzie wszystko byłoby fajnie, gdyby nie fakt, że pomijamy tam tor analogowy interfejsu magnetofonowego. No niby w dzisiejszych czasach kaseciak niespecjalnie ma rację bytu, ale chyba warto mieć CA80 w stanie jak najbardziej kompletnym, tak jak opisują tomiki MIK i jednak wykorzystać jego możliwości przy minimalnej ingerencji sprzętowej.

No i kto to pisze!?

A jeszcze niedawno:

tasza pisze:
Widzę, że układy do magnetofonu nie zalutowane - nie montuj tego raczej, lepiej przystawkę do RS232 zrobić albo NVRAM w któryś bank wstawić



Poza tym szacunek. Kawał dobrej roboty. Niestety jestem bardziej przyziemny i "chmury" nie dla mnie. ;-)

Pozdrawiam.
"If opportunity doesn't knock, build a door" - Milton Berle

Awatar użytkownika
tasza
Expert
Expert
Posty: 978
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: tasza » poniedziałek 11 lis 2019, 22:31

I poczemu tak łapać za słowa, nie ma to celu.

A wracając do konwersji plików hex na materiał audio - temat nieco bardziej usystematyzowany oraz konwerter z kilkoma usprawnieniami,
już oficjalnie :arrow: http://bienata.waw.pl/ca8013.php
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
Zegar
Posty: 25
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: Zegar » wtorek 12 lis 2019, 08:22

tasza pisze:I poczemu tak łapać za słowa, nie ma to celu.


Znowu się czepiam.
1. Załóżmy, że umiem wykorzystać opisany program (tylko teoretycznie, bo nigdy nie używałem Linuxa), czy każdy CA80 odczyta wygenerowany plik?
2. Czy komputer z przerobioną płytką w celu dostosowania do możliwości zdobytych elementów (CLK = 2,5MHz), nadal jest CA80?
3. Czy niekompletny komputer, pozbawiony niektórych części (np. toru audio zapisu i odczytu z magnetofonu) nadal jest CA80?

Moim zdaniem, kryterium oceny jest tylko jedno: zawartość kości U9. Jeżeli jest tam oprogramowanie napisane przez Pana Gardynika, to CA80 może wyglądać nawet tak: Obrazek
Ostatnio zmieniony wtorek 12 lis 2019, 19:43 przez Zegar, łącznie zmieniany 1 raz.
"If opportunity doesn't knock, build a door" - Milton Berle

Awatar użytkownika
tasza
Expert
Expert
Posty: 978
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: tasza » wtorek 12 lis 2019, 09:09

ad.1 tak, pod warunkiem że CA80 posiada w pełni sprawny, wyregulowany tor zapis/odczyt to odegranie pliku *.wav niczym nie będzie różniło się od odegrania sygnału z taśmy, na co zwrócić uwagę i jakie są możliwości regulacji - napisałam we wskazanym tekście.

ad.2 nie, ale to jest moje osobiste zdanie i nie oczekuje że ktoś się z tym zgodzi

ad.3 tak, niekompletność nie oznacza modyfikacji o ile poruszamy się w granicach wyznaczonych przez pierwotną konstrukcję (CTC vs kilka TTL aby działały przerwania maskowalne, proteza na TTL zamiast systemowego portu 8255, czy w końcu ekonomiczny RAM MIK-96). btw, stara wersja CA80, która występowała w ostatnich postach nie ma interfejsu magnetofonowego, nie był po prostu potrzebny.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
Zegar
Posty: 25
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: Zegar » wtorek 12 lis 2019, 10:41

tasza pisze:ad.2 nie, ale to jest moje osobiste zdanie i nie oczekuje że ktoś się z tym zgodzi


Czyli jeden z najstarszych na Świecie (jeżeli nie najstarszy) działający egzemplarz został zdyskwalifikowany... Tylko w nim mam zmontowany i uruchomiony odczyt/zapis na magnetofon.
Nie będę mógł spać ;-)
"If opportunity doesn't knock, build a door" - Milton Berle

Awatar użytkownika
tasza
Expert
Expert
Posty: 978
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [CA80] konwersja Intel Hex do MP3 czyli oprogramowanie dla CA80 w chmurze

Postautor: tasza » wtorek 12 lis 2019, 10:55

Padło pytanie więc odpowiedziałam. Niczego nie deprecjonuje, po prostu przedstawiam swoje zdanie.
A odnośnie Linux i programu hex2wav, możliwe że czasem zbytnio manifestuje swój linuksowy fanatyzm, no trudno.

Rzeczony programik poskładany w projekt spokojnie kompiluje się w pakiecie Dev-C++ 5 i działa w windowsowej konsoli, załączniki.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości