Elektroda.pl
Elektroda.pl
X
Serwerowe OpowieściSerwerowe Opowieści
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel-owy player wsadów (.bin) pozytywek na EPROM-ach

MES Mariusz 08 Kwi 2019 10:27 1497 21
  • #1
    MES Mariusz
    Poziom 36  
    Ewidentnie po godzinach :-D

    Kojarzy ktoś Stanisława Gardynika i jego pozytywki na pamięciach EPROM z ubiegłego wieku (lata 90-te)?

    Mam wsad takiego EPROM-a i... Planuję zrobić sobie do niego player... w arkuszu excella (VBA).

    W tym EPROMie przechowywane są kolejne nuty w postaci wartości częstotliwości, która ma być wygenerowana w głośniku.

    Chciałbym sobie odczytać takiego .bin-a (zawartość EPROM) bezpośrednio do komórek excella, i potem odegrać skryptem VBA.

    Jak ktoś ma przydatne wskazówki na dobry start, chętnie skorzystam. Na pierwszy rzut muszę uporać się z załadowaniem .bin-a wprost do excella, tak jakbym otwierał go w sofcie do programatora.

    Życzcie mi powodzenia (i dzielcie uwagami / pomysłami) cobym w maliny zamiast do celu nie doszedł :-)
  • Serwerowe OpowieściSerwerowe Opowieści
  • #2
    LChucki
    Poziom 31  
    MES Mariusz napisał:
    Kojarzy ktoś Stanisława Gardynika i jego pozytywki na pamięciach EPROM z ubiegłego wieku (lata 90-te)?

    Nieźle musiał namęczyć się przy sofcie bo system nie miał RAM więc wszystko musiał trzymać w rejestrach, nie używać skoków do podprogramów, przerwań.

    MES Mariusz napisał:
    W tym EPROMie przechowywane są kolejne nuty w postaci wartości częstotliwości, która ma być wygenerowana w głośniku.

    Oraz program dla Z-80.

    MES Mariusz napisał:
    Na pierwszy rzut muszę uporać się z załadowaniem .bin-a wprost do excella, tak jakbym otwierał go w sofcie do programatora.

    Bezpośrednio nie wczytasz. Najpierw zdebuguj program aby określić gdzie i w jaki sposób są zapisane melodie. Bym może zrobione jest to tak jak w programie pozytywki dla CA-80?
    Jak już będziesz miał dane samej melodii to skonwertuj BIN do ASCII np Hexplorer'em.
  • #4
    LChucki
    Poziom 31  
    MES Mariusz napisał:
    Tego nie obsługiwał mikrokontroler, tylko 4 scalaki logiczne. Do było na swój sposób genialne.

    Dokumentacja:
    www.elektroda.pl/rtvforum/download.php?id=858183

    Myślałem o innym projekcie, gdzie był Z-80, EPROM, generator i dzielniki (może 4060?).
  • Serwerowe OpowieściSerwerowe Opowieści
  • #5
    JacekCz
    Poziom 37  
    Excell jest ostatnią platformą,która się do tego"by" nadawała. A nawet Microsoft nigdy nie przedstawiał go jako platformę programistyczną.
    Przejścia na fizyczne porty itd...
  • #6
    MES Mariusz
    Poziom 36  
    A jaka filozofia w funkcji beep, częstotliwość, długość trwania? Jeśli się nie mylę VBA ma to w standardzie.
  • #7
    kinggustav
    Poziom 23  
    Na początek zastanów się jak chcesz to trzymać w Excelu. Wczytanie pliku binarnego do komórki jest słabe, bo Excel sam ci to pozamienia. Albo wczytuj do tablicy (po co komuś widzieć binarne dane?), albo jak kolega wcześniej napisał przetwórz to na hex i zapisz jako tekst.
    Z tym wydawaniem dźwięków też może być kiepsko. W VBA nie widać Beep z parametrem, więc nie posterujesz częstotliwością. Trzeba będzie pewnie użyć jakiejś biblioteki z Windowsa.
  • #8
    MES Mariusz
    Poziom 36  
    Excel bardzo ładnie odwzoruje umiejscowienie liczbowych reprezentacji częstotliwości w poszczególnych komórkach pamięci - kolejna komórka pamięci EPROM = kolejna komórka excela (pozwoli się zapoznać że strukturą / organizacją melodii w pamięci), umożliwi wygodne przełączanie pomiędzy systemami liczbowymi (Hex / Dec) jak również umożliwi edycję komórek, a później ewentualnie ponowny eksport do .bin (edytor wsadów dla pozytywki).

    Gdyby nieco bardziej się wysilić w VBA możnaby zorganizować klawiaturę muzyczną (odgrywanie melodii z klawiatury z bezpośrednim zapisem do kolejnych komórek pamięci).
  • #9
    LChucki
    Poziom 31  
    MES Mariusz napisał:
    Excel bardzo ładnie odwzoruje umiejscowienie liczbowych reprezentacji częstotliwości w poszczególnych komórkach pamięci (pozwoli się zapoznać że strukturą / organizacją melodii w pamięci), umożliwi wygodne przełączanie pomiędzy systemami liczbowymi (Hex / Dec) jak również umożliwi edycję komórek, a później ewentualnie ponowny eksport do .bin (edytor wsadów dla pozytywki).

    Ja i setki osób po zaawansowanych kursach Exela dla zaawansowanych nie wiedziałem. Zastanawiam się dlaczego pytasz?

    MES Mariusz napisał:
    Gdyby nieco bardziej się wysilić w VBA możnaby zorganizować

    Droga droga do sukcesu. Te produkty Micro$osft :-)
    Wydaje mi się, że robisz reklamę upadającego, miernego produktu.
  • #10
    MES Mariusz
    Poziom 36  
    W zasadzie programistą (na co dzień) nie jestem. Po co tu piszę? Kreuję / klaruję sobie jakąś wizję całości.

    Jeśli uważacie, że idzie to zrobić prościej (niż excel + VBA) chętnie posłucham. Uczepiłem się takiego rozwiązania, bo jakieś tam szkolenie z VBA mam za sobą, i wydaje mi się, że daje mi to gotowy interfejs graficzny (reprezentacja zawartości pamięci EPROM, edycja).

    Jeśli są lepsze narzędzia, które stosunkowo szybko ogarnę, chętnie po nie sięgnę.


    --- edit ---

    Implementacja beep:

    https://answers.microsoft.com/en-us/msoffice/...ency-and/c4aee4c8-a3f5-4f62-87b5-f4ada6f2a897

    Cytat:
    Insert the following declaration at the top of a module:

    Public Declare Function Beep Lib "kernel32" _
    (ByVal dwFreq As Long, _
    ByVal dwDuration As Long) As Long

    You can now use code like this to play a beep of 880 Hz during 300 milliseconds:

    Beep 880, 300
  • #11
    Woycek
    Poziom 12  
    MES Mariusz napisał:

    W tym EPROMie przechowywane są kolejne nuty w postaci wartości częstotliwości, która ma być wygenerowana w głośniku.

    Scalak 40103 w tej konfiguracji to dzielnik częstotliwości. Więc w EPROMIE masz zapisane przez ile trzeba podzielić częstotliwoś wejściową a nie częstotliwość dźwięku.
  • #12
    MES Mariusz
    Poziom 36  
    Woycek napisał:
    MES Mariusz napisał:

    W tym EPROMie przechowywane są kolejne nuty w postaci wartości częstotliwości, która ma być wygenerowana w głośniku.

    Scalak 40103 w tej konfiguracji to dzielnik częstotliwości. Więc w EPROMIE masz zapisane przez ile trzeba podzielić częstotliwoś wejściową a nie częstotliwość dźwięku.


    Fakt, przepraszam, za skrót myślowy. Dokumentacja tutaj: www.elektroda.pl/rtvforum/download.php?id=858183
  • #13
    Woycek
    Poziom 12  
    Czyli rozumiesz że zawartość EPROM-u jest nieużyteczna???
  • #14
    ppc
    Poziom 15  
    Wrzuć ten eprom jak możesz, postaram się napisać program

    EDIT: Proszę, odtwarza Dla Elizy z instrukcji. Można przerobić, żeby odtwarzał z pliku, jets to trywialne. Warto by poprawić obliczanie czasu trwania danej nuty, aby zmniejszyć 'pykanie' pomiędzy nutami(generowanie tonu powinno się zaczynać i kończyć w 0 sinusa). Nie użyłem Beep, bo przerwy między nutami są jeszcze bardziej widoczne. Można przerobić tą apkę, żeby zapisywała pliki jako .wav. Kod w C#.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod
  • #15
    kinggustav
    Poziom 23  
    Czyli masz na myśli nie samo VBA i Excela, ale aplikację na tym postawioną. Wszyscy wiemy, że tak to można, choć są do tego lepsze platformy. Ja miałem na myśli wpakowanie do komórki zawartości EPROMa, a to nie jest dobry pomysł, bo co jeżeli np. (pierwszy) bajt będzie zawierał znak "=", "'", albo "~" W najlepszym razie stracisz bajt, w najgorszym, zablokujesz sobie aplikację, albo całego Excela. Musiałbyś też (nawet jak nie masz wartości binarnych) zadbać, żeby Excel nie domyślał się formatów, bo potrafi robić cuda. Jeżeli to zamienisz na HEX lub jakikolwiek inny (ludzki) system, to już jak najbardziej można dalej przetwarzać i operator coś zobaczy.
  • #16
    Hektar Zahler
    Poziom 34  
    Niezły temat dla zapaleńców, bo na epromach ciekawe układy w zupełności sekwencyjne idzie zrobić. Jedno z ciekawszych zastosowań enkodery binarne, a ściślej rzecz biorąc transkodery, jakie wykonywali krótkofalowcy wraz z wprowadzeniem do r-telefonów syntezy PLL w latach 80-tych, aby przestroić r-telefon na inne pasmo. W załączeniu o transkoderach z epromem pewnego krótkofalowca ze stanów. I dalej przykład programowania za udziałem DIPSWITCH - Link - Dokładnie tak jak to niedawno wykonał zdesperowany @zebra017 będąc pozbawiony wsadu do zepsutego CB radia można odwrócić odbiór kodów na zapis do eepromu, aby stworzyć tak rejestrator utworów - np. z dorobionej klawiatury tonów.
  • #17
    MES Mariusz
    Poziom 36  
    @ppc
    Dzięki piękne za przykład w C#, niestety to trzeba na czymś skompliować (zdaje się, że nie ma interpreterów C#).

    Natomiast w międzyczasie stworzyłem w Excelowym VBA szkielet dokładnie tego co chciałem (plik .xlsm załączony poniżej).

    Wystarczy teraz zgrać sobie EPROM-a jakimś programatorem do pliku dajmy na to EPROM.bin, następnie skonwertować do postaci pliku ASCII (w moim przypadku wartości hex rozdzielone przecinkami), potem zaimportować to do czystego Excela i cały taki skoroszyt skopiować i wkleić do zakładki EPROM Hex (jako wartości, żeby nie zepsuć sobie formatowania (naprzemienne kolory pozwalają wizualnie wydzielić kolejne melodie w strukturze pamięci EPROM).

    Teraz wystarczy zaakceptować uruchamianie makr i kliknąć na pierwszą "nutę" (korzystając z dowolnej zakładki EPROM Hex / EPROM Bin / Real Freq:

    Excel-owy player wsadów (.bin) pozytywek na EPROM-ach

    Następnie należy użyć skrótu klawiszowego Ctrl+M. Makro odegra całą melodię (4 wiersze), ustawiając kursor kolejno na pozycjach odgrywanych nut.


    Cały magiczny kod tutaj:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Arkusz wymaga dopracowania:

    1. Zniwelowanie przerw między nutami.
    2. Importowanie z i exportowanie do bezpśrednio formatu .bin (wsady dla programatora EPROM).
    3. Dynamiczna edycja na dowolnej z zakładek (wprowadzanie zmian winno być możliwe na dowolnej z zakładek, tak by można było operować na dowolnym formacie (hex / dec / freq / nuta) - pozostałe zakładki powinny się dynamicznie aktualizować w trakcie wprowadzania zmian. Na chwilę obecną wprowadzanie zmian przewidziane wyłącznie na zakładce EPROM hex (zawartość pozostałych zakładek generowana dynamicznie na podstawie wartości w zakładce EPROM Hex).

    Zapraszam do zabawy i liczę nie tyle na lincz (stricte programistą nie jestem, wybaczcie ;-) ) co na litość :-) konstruktywny feedback :-)

    Dziękuję.
  • #18
    tzok
    Moderator Samochody
    Gratuluję wytrwałości i zaprezentowania "jak sobie utrudniać życie". Skoro to i tak jest to makro w VBA, to dlaczego nie napisałeś tego w Visual Basic'u jako normalną aplikację? Visual Studio CE jest za darmo i dla każdego...
    https://visualstudio.microsoft.com/pl/vs/community/
  • #19
    MES Mariusz
    Poziom 36  
    tzok napisał:
    Gratuluję wytrwałości i zaprezentowania "jak sobie utrudniać życie". Skoro to i tak jest to makro w VBA, to dlaczego nie napisałeś tego w Visual Basic'u jako normalną aplikację? Visual Studio CE jest za darmo i dla każdego...
    https://visualstudio.microsoft.com/pl/vs/community/


    Chętnie. Tylko czy aby na pewno dałbym rady napisać sobie praktycznie... excela od zera (interfejs graficzny)? Więc pytanie gdzie jest to "utrudnić sobie życie".

    Przy okazji nieco zaktualizowana wersja - już można zaczytać dane bezpośrednio wskazując plik .bin (wsad do EPROM-u).
  • #20
    tzok
    Moderator Samochody
    Masz gotowe komponenty, np. DataGrid, nie musisz niczego pisać od zera. Jak bardzo chcesz to można użyć nawet kontrolki arkusza Excel ;)
  • #22
    MES Mariusz
    Poziom 36  
    To jest bardzo dobre pytanie. Ja oryginałów nie mam niestety. Znając zasady działania mogę sam sobie melodie skomponować, ale oryginałów nie mam. Jeśli ktoś posiada, niech wrzuci koniecznie.