Fórum témák

» Több friss téma
Fórum » LPT portos hangkártya (Covox)
Lapozás: OK   3 / 3
(#) Inhouse válasza nagym6 hozzászólására (») Jan 12, 2024 /
 
A Hantek digitális szkópok generátorához is van ilyen.
Mióta írtátok, ránéztem, vannak lehetőségek a wav->csv konverzióra. A szinusz mellett én javasolnék majd egy vicces audio fájlt is, ha már gyerekeknek lesz, jobban leköti őket, ha játékos a történet.
(#) kameleon2 válasza Bakman hozzászólására (») Jan 12, 2024 / 1
 
OK. Ezen már régen túljutottam. Én valami jó kis C64 vagy egyéb 8 bites zenére gondoltam, amivel a mintavételezési sebességet, stb tudom úgy kordinálni, hogy akár streemelni is lehessen, akár egy rendes hangkártyára. Egy teszt fájlt találtam, de az "offline" így most ezzel küzdök, igaz, legalább már zenél. Színusz, négyszög fűrészjel nem haladta meg a matematikai tudásomat eddig, az alap, de sajnos a neten kevés ennél többet leltem fel.
(#) Bakman válasza kameleon2 hozzászólására (») Jan 12, 2024 /
 
Én a kérdésedre válaszoltam:
Idézet:
„Milyen adatokkal tudnám tesztelni? Nyilván az lenne első körben az egyszerűbb, hogy magába az Arduino Uno-ba töltenék le adatokat, amit direktben kiküld.”


Vannak zeneszerkesztő programok, amelyek számsorokká alakítják a hangot, igény szerinti felbontásban/sebességben.
(#) kameleon2 válasza Bakman hozzászólására (») Jan 14, 2024 /
 
Szia! Erről tudnál bővebbet mondani? Mert túrom egy ideje a netet, de valószínűleg rossz kulcsszavakkal. Odáig eljutottam, hogy már mindenféle jelalakot létrehoztam, de a sebesség elég gyatra. Igaz a soros plotter kimeneten és szkópon szép. A színusz, háromszög, négyszög, fűrész jobbra, balra, háromszög megvan. Egy kis elmélet hiányzik még a burkológörbéket illetően ugyanis a fejembe vettem, hogy nem "sima" digitalizált fájlok lejátszására akarom használni, hanem fm szintetizátorként az unoval állítanám elő a jelformákat. Legrosszabb esetben hullámtáblával. Sajnos nagyon gyatra és alacsony nívójú videók és anyagok vannak csak zömében a neten. ezeknek a 90%-át eltiltanám a posztok készítésétől. 100 oldal a dac létra matematikájáról és szinte semmi a felhasználást illetően, kivéve az mp3 és wav lejátszókat, amikből Dunát lehet rekeszteni. Az is segítség, ha valaki tud olyan libeket, amikből lehet építkezni. Az angol kicsit hátráltat, de valahogy leküzdöm. Most ott tartok, hogy 2db R2R létra megvan, várom az import "gyári" 8 bites párhuzamos és soros DAC-okat is. Így az evolúciót is meg tudnám mutatni a gyerekeknek a COVOX-tól a mai USB hangkártyákig (egychipes pendrive méretben).
(#) Bakman válasza kameleon2 hozzászólására (») Jan 14, 2024 /
 
Mármint melyik részéről akarsz bővebbet tudni? Egy tömörített hangfájlt (pl. mp3) nagyon egyszerűen lehet konvertálni számokká pl. a ffmpeg segítségével.

  1. $ ffmpeg -i zene.mp3 -f u8 zene.bin

u8: Unsigned integer, 8 bit
s8: Signed integer, 8 bit

Itt van némi infó: Bővebben: Link.
A hozzászólás módosítva: Jan 14, 2024
(#) Bakman válasza kameleon2 hozzászólására (») Jan 14, 2024 /
 
Ha pedig hangfájllal modulált PWM-re vágysz, akkor itt is van némi infó: Bővebben: Link, pár hozzászólással később pedig a program lényegi elemei láthatóak Attila86 jóvoltából.
(#) kameleon2 válasza Bakman hozzászólására (») Jan 14, 2024 /
 
Köszönöm. Részben értem, részben nem.
(#) Bakman válasza kameleon2 hozzászólására (») Jan 15, 2024 /
 
A te esetedben, ha megvan a számsor (pl. tömbben), egyszerűen szabályos időközönként a számsor értékét kiküldöd a kontroller portjára. Célszerű egy komplett portot felhasználni (8 bites kontroller esetén), így egy mozdulattal kikerül a nyolc bit a kimenetekre. Ha a hangfájl pl. 16 kHz mintavételi frekvenciájú, akkor te is ilyen időközönként küldöd az értékeket a kimenetre, ami 62.5 µs.
(#) kameleon2 válasza Bakman hozzászólására (») Jan 16, 2024 /
 
Akkor az eredményekről: négyszög, színusz, háromszög, fűrész jobbra balra - pipa, igen tömbből. A frekivel még vannak gondok. Találtam egy R2R projektet a youtube-on, ami hasonló. Nagy nehezen lefordítottam a PC-s oldalt, de a sender nem küldi ki a 8 bites megadott fájlt, pedig úgy tűnik maga a program működik, csak a fájlhivatkozásnál van valami bibi. Ha egy terminálról küldöm, modem jellegű zaj van, azaz a létra teszi a dolgát, csak a fájl nem küldődik rá. Erőlködtem már soros printerrel, az is kiküldi, de sok felesleges karaktert is és nem tudom időzíteni, csak a szabvány sebességekre belőni. Hterm is ráküldi, de ugyanaz a nyűg. Putty-al is próbálkoztam, mert láttam rá példát, de ott is pont a lényeg marad le, hogy milyen beállításokkal teszik. Azaz az USB-vel van a legtöbb macera, nem a konverzióval. Azelőtt 30 évvel simán egy ciklus plusz párhuzamos port azt ment.
A hozzászólás módosítva: Jan 16, 2024
(#) Bakman válasza kameleon2 hozzászólására (») Jan 16, 2024 / 1
 
Idézet:
„Ha egy terminálról küldöm, modem jellegű zaj van, azaz a létra teszi a dolgát, csak a fájl nem küldődik rá.”
Ezt a részt nem értem. Terminal-ból bájtokat küldesz, ami 0-255 -ig lehet bármi, már ha a normál, 8 bites adatátvitellel számolunk. A modem jellegű zaj is rendben van, ha véletlenszerű bájtokat küldesz. A "fájl nem küldődik rá" rész, amit nagyon nem értek.

"Felbontod" a hanganyagot az ffmpeg segítségével. Kapsz egy bináris fájlt. Ezt megnyitod valamilyen hexadecimális szerkesztővel, a tartalmát átmásolod a Terminal programba és átküldöd a kontrollernek. Itt a trükk abban lehet, hogy a Terminal program milyen formátumban várja az adatokat. Elég a hexadecimális szám, pl. A1 vagy külön tudatni kell vele, hogy ez hexadecimális szám, pl. 0xA1 vagy A1h. Arra figyelj, hogy mennyi adatot tömsz a Terminal-ba, egy 4 perces zeneszám "kiterítve" szabályos hexadecimális alakra 45 MB lett.

Ebben a hozzászólásban: Bővebben: Link van egy rövid hagfájl, egy pittyenés. Ebben pl. decimálisan szerepelnek az értékek. Ezt a mennyiséget akár programmemóriában is lehet tárolni.
A hozzászólás módosítva: Jan 16, 2024
(#) kameleon2 válasza Bakman hozzászólására (») Jan 17, 2024 /
 
Terminálon keresztül 8 bites 16kHz-es fájlt küldök és ezt szerettem volna tenni a lefordított c programmal is. Csak az nem küld semmit. De már találtam megoldásokat, csak fogyok ki az időből.
A hozzászólás módosítva: Jan 17, 2024
(#) benjami válasza kameleon2 hozzászólására (») Jan 18, 2024 /
 
Ezzel a terminál programmal lehet bináris fájlt küldeni a soros porton. Ha a zip változatot töltöd le, még telepíteni sem kell, csak kicsomagolod valahova és futtathatod.
(#) kameleon2 válasza benjami hozzászólására (») Feb 14, 2024 / 1
 
Sok dolog kiderült azóta. Például, hogy néhány arduino másolat memóriája kisebb, illetve, hogy a soros port kommunikációja alatt nem tiltja le a portot és fordítva. Az eredetiekkel elindultak végre a DAC-ok. Ez már kezd tetszeni. Arduino UNO 8bit DAC music
(#) kameleon2 válasza Inhouse hozzászólására (») Feb 18, 2024 /
 
Nos. A DAC jól működik arduino alól (link). Azonban Beszereztem egy parallel portos megoldást is, amit az istennek nem tudok működésre bírni. Már windows XP-s gépen is kínlódtam, amin még van LPT1 párhuzamos port. Port tesztert is készítettem ledekből. PC-s szoftverrel a ledeket tudom vezérelni, de a Covox, adlib szoftverek az istennek sem mennek. Van valaki aki tudna orientálni, hogyan lehetne feléleszteni? Már odáig jutottam, hogy felteszek egy gépre egy 3.1 windowst. De azért mégis... Legalább XP-n elfutna valami ami végre megy. Semmilyen a neten fellelhető szoftverrel nem jutottam előrébb. Próbálkoztam usb-párhuzamos átalakítóval, de kudarc. Nem is értem, hogyan lehetett így kinyírni egy 8 bites párhuzamos portot? Annyira hiányzik az egyszerűsége. a lényeg majdnem lemaradt. Ezt a panelt raktam össze: LPT DAC
A hozzászólás módosítva: Feb 18, 2024

lpt1_test.png
    
(#) kameleon2 válasza kameleon2 hozzászólására (») Feb 18, 2024 /
 
Megpróbáltam DOSBOX alól. Itt már annyi eredmény van, hogy egy qbasic rutinról ki tudom iratni az eredményt, de sajnos csak hangszóróra irányítja, nem lpt portra. milyen beállítás kellhet dosbox-nak, hogy alapértelmezettként ne a pc speakerre akarja küldeni az adatot, hanem az lpt dacra?
A hozzászólás módosítva: Feb 18, 2024
(#) Skori válasza kameleon2 hozzászólására (») Feb 18, 2024 /
 
Úgy emlékszem, annak idején DOS-ra létezett covox driver, amivel hangkártyaként lehetett használni, így sokféle program tudott hangot adni ezen keresztül. DOSBOX-on viszont ez valószínűleg nem működne, esetleg virtuális PC-n, de ott meg az kérdéses, hogy a virtuális gép hogyan kezeli LPT port-ot. Win9x alatt még rá lehetett nyúlni portra közvetlenül, az újabb oprendszerek alatt már sokkal nehezebben, bár win2k-ra is létezett olyan driver amivel ezt meg lehetett tenni, (ill. meg lehetett kerülni az oprendszer védelmét). Akkoriban én is építettem covox-ot, de az olcsó hangkártyák megjelenése után ez értelmét vesztette.
A hozzászólás módosítva: Feb 18, 2024
(#) benjami válasza kameleon2 hozzászólására (») Feb 18, 2024 /
 
Ez a nyomtatóportra DAC módszert a DOS korszakban találták ki, amikor a program a teljes gép felett rendelkezett. Ez volt szükséges ahhoz, hogy viszonylag pontos időzítéssel tudja a nyomtatóportra küldeni a mintákat. A preemtív multitaszk oprendszerek alatt ezt a pontos időzítést már nem lehet tartani, ott a perifériáknak kell az időzítést megoldani és megszakításos vagy DMA módot használva célszerű a perifériát adatokkal etetni.
(#) szsrobert válasza Bakman hozzászólására (») Feb 19, 2024 /
 
Nem az adott Bytenak megfelelő hangot játssza le a kimeneten?
(#) kameleon2 válasza szsrobert hozzászólására (») Feb 20, 2024 /
 
Az adott Byte mindössze egyetlen kis időszeletke feszültsége 0-255 értékre megfelelően felbontva az 5V-ot. A mintavételezés frekvenciája pakolgatja össze a sok kis 8 bites vagy 1 Byte-os adatot hullámformává. Most elkészültem egy Arduino-s SD kártya lejátszóval. CD-ről CDA formátumot konvertáltam 8 bitre, de 48kHz mintavételezési frekvenciával. Egész jól szól a Bom Shaka Laka... Szóval 1 Byte ide, vagy oda, de egy magas mintavételezéssel ez sem rossz. Kis ércesség ugyan van benne, de éppen nem volt kéznél pF nagyságrendű kondim. Magyarul a Byte-od csak a feszültség nagyságát adja. Még a régi ZX Spectrumos időkben már ez is varázslatnak számított volna az 1 bites digitalizálásokhoz képest.
(#) sdrlab válasza kameleon2 hozzászólására (») Feb 20, 2024 /
 
Párhuzamos portot XP alól már csak speciális driver/függvényeken keresztül lehet elérni!
Mezei program, ami csak magát a portot akarná írni, az nem fog működni XP alól...
Ha jó emlékszem talán még a 98/95 Win is jó. Sőt, biztos, hogy jó, ami nem NT alapú windows....
(#) Skori válasza kameleon2 hozzászólására (») Feb 20, 2024 /
 
Kellő sebesség esetén akár az 1 bites megoldás is szólhat jól - lásd 1 bites CD játszók...
ESPxxx MCU-ra elvileg létezik ilyesmi könyvtár arduino alatt is.
(#) kameleon2 válasza Skori hozzászólására (») Feb 20, 2024 /
 
Én is kínlódok 1 bitessel és elfogadható - de a jótól ez már nagyon messze van. Jó volt anno a Spectrum hangja is - mert nem volt más . Mondjuk egy Robin of the wood...
(#) kameleon2 válasza Skori hozzászólására (») Ápr 6, 2024 / 3
 
Elkészült a legmacerásab része végre. No nem a hardver volt a gond, hanem a MS. szabványtalansága és a folytonos változtatás. Van egy USB > Párhuzamos átalakító > 8bites DAC Arduinóval és kicsit bele kellett másznom a PC-s C nyelvbe, de működik. Feltöltöm az eredményt. PC-ről soros porton küldöm az adatokat, az Arduino DAC pedig szépen dekódolja. 8 bites felbontású 45kHz-es mintavételezésű mono hangot tud lejátszani. Nem a minőség volt az elsődleges, hanem a teljes folyamat szemléltetése. Kicsit cserpákolni kellett, mert Arduino UNO-ra lett rátéve egy shield, ami csak kifejti a lábakat és továbbította egy LPT portos SillySound R2R létrára. Nyilván direkt R2R létra is megtette volna, sőt egy sima régi PC is, amire csak rádugom a COVOX klónt és win 3.1 vagy dos alól vígan muzsikált volna. De hála az égnek ugye win10-em van USB-vel, ami alatt reménytelen volt LPT DAC-ot használni. De ha már megvolt a klón, gondoltam kössük össze a kellemest a hasznossal. Persze ehhez kellett a C nyelven írt sender is. A lényeg: működik!
A hozzászólás módosítva: Ápr 6, 2024
(#) sargarigo válasza kameleon2 hozzászólására (») Ápr 6, 2024 /
 
Azért úgy mégis! Hogyan vetted rá a wint hogy realtime küldhesd a cuccot?
(#) gg630504 válasza sargarigo hozzászólására (») Ápr 7, 2024 /
 
Ha jól értem ( én úgy csinálnám ), a PC az Arduinónak küldi az adatokat valamilyen pufferelési protokollal ( hw vagy sw ).
Utána az Arduino belső időzítése szerint küldi a saját pufferéből a DAC-nak.
(#) kameleon2 válasza sargarigo hozzászólására (») Ápr 7, 2024 / 3
 
Nem minden saját kútfőből jött, de megizzasztott. Nem realtime, de elég gyors. gg630504-nek: Így van megoldva. De nagyon kicsi a puffer, éppen csak annyi, hogy levágja a nem szükséges Byte-okat. A trükk csak annyi, hogy egy nem szabványos sebesség van beállítva, hogy olyan gyors lehessen a küldés, amit csak az USB-s hardvert tud. Sokat kellett küzdeni minden részével. Nem volt elég a DAC, készítettem egy ledes változatot is, mert gyanús volt, hogy nem is küldődik ki adat a régebbi, XP-s PC-ről, amiről próbáloztam a direkt COVOX meghajtással. BASIC-ből sem mentek már ki az adatok, mert a windows blokkolta. Ezért lett volna jó egy DOS-os gép, de nekem az már nem volt. DOSBOX-al próbálkoztam, de a Windows azt is überelte. A soros-párhuzamos átalakítás már megvolt félig meddig az Arduinora. Ezt Wokwi-n megcsináltam, teszteltem, működött, de a valóságban a windows ebbe is beleszólt a valódi hardvernél. Ekkor elkezdtem kutatni hasonló projektek után. De nem volt kész, csak félkész recept. Próbáltam megérteni, implementálni és a PC-s C nyelvű forrásokat lefordítani.
Az eredmények:
- Hangkeltés IO port ki-be kapcsolgatással. - pipa
- Hangkeltés portmanipulációval. - pipa
- Hangkeltés két szólamban / MÁV szignál / - pipa
- Hangkeltés assembly 32 szólammal. - pipa
- Hangkeltés hullámtáblával. - pipa
- Hangkeltés 8 és 12 bites PCM-el R2R DAC segítségével. - pipa
- Hangkeltés SD kártyáról (wav). - pipa
- Hangkeltés SD kártya nélkül (wav). - pipa
- Hangkeltés SD kártyával és anélkül (Amiga MOD player).
- Hangkeltés USB > párhuzamos konverzió Arduino R2R létrás 8 bites DAC-al (SD nélkül). - pipa
Egyszóval kicsit meghaladtam a youtube-on található 3 féle hangkeltést. Mindig is szerettem az elektronika és a zene határfelületeit.
Ha az időm engedi, belekezdek a MIDI részbe is. Most, hogy már mindenféleképpen sikerült hangot előállítani Arduinoval is, fejembe vettem egy sampler elkészítését. Parallax P8x32-vel ez már megvolt, építettem egy miniszintetizátort, ami PS2 billentyűzetről is képes zenélni. Működik C64 SID AY hangchip emulációval és MIDI 0-ás fájlokat le tud játszani SD kártyáról. De ott szinte minden szoftvert "ingyen adtak", azaz csak rá kellett tölteni, no meg volt egy kis nyák s doboz tervezés. Az eredménye 9x6,5x4cm-es MIDI dobozka, amin 3 5 pólusú DIN csatlakozó is van. Arduinóval egy kicsit nagyobb lesz. Még gondolkodom, hogy maradjon az UNO az egyszerűsége miatt, vagy legyen egy Mega. De utánaépíthetőnek szeretném. Inkább modulárisnak. De a fő cél, hogy ezt bemutathassam a diákoknak. A net ugyanis tele van félkész és rossz projekttel. Amiket megcsináltam ezek reprodukálhatóak. Ha lenne rá időm, valahol publikálnám is szívesen. Akár itt is, de sajna nagyon tele a naptáram. Pedig ezt tényleg szívesen csinálom.
(#) sargarigo válasza kameleon2 hozzászólására (») Ápr 7, 2024 / 1
 
Szerintem lenne rá érdeklődő ha egyszer úgy adódna hogy lenne rá időd!
Amiket itt felsoroltál, nem kis munka van benne!
(#) kameleon2 válasza sargarigo hozzászólására (») Ápr 8, 2024 / 1
 
Ezért csináltam...
(#) sdrlab válasza kameleon2 hozzászólására (») Ápr 9, 2024 /
 
Windows alól is lehet a mai napig küldeni adatokat, közvetlen porteléréssel..., de tény, hogy nem triviális már, mint NT előtt! Még az sem reménytelen, hogy nagyon ne szaggassa meg a feladatütemző a kommunikációt, de ehhez már elég jól kell ismerni a rendszert...
Szoftveresen jóval egyszerűbb egy segéd harveren keresztül fpgadni az adatokat, valami legális csatornán keresztül(pl USB), bepufferelve az 1msec/125usec-nyi adatot, és azt atombiztosan és pontosan lejátszani...
(#) kameleon2 válasza sdrlab hozzászólására (») Ápr 9, 2024 /
 
Nekem arra lett volna szükségem, hogy a régebbi trackerek mentek volna ugyanúgy PC-ről, int anno. De ezt eddig csak régi PC-ken láttam futtatni. Anno természetes volt, e már annyit változott minden, hogy ezek a kódok nem futnak csak emulátorokon. Ott meg a hardvert nem egyszerű munkára bírni. Hacsak nem írsz hozzá saját drivert. Ez már meghaladja az én PC-s tudásomat.
Következő: »»   3 / 3
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem