Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Itt egy videó róla: Bővebben: Link
Már csak azt kellene kitalálni, hogyan töltsem ki az egész LCD-t, ha csak 8 speciális karakterem van. ![]() A hozzászólás módosítva: Nov 23, 2018
Sziasztok! A Korg Poly61-emhez szeretnék egy Midivezérlőt, ami a billentyűzetmátrixot helyettesítené.
A billentyűzetmátrix valójában 8x8-as, a tesztprogramban ezt 1x8-ra butítom. A soros bemenetről a checkMidi eljárással midi noteon, vagy noteoff utasítást fogad a program. Az alapján, hogy melyik billentyű leütését, vagy felengedését kapom az éppen lenyomott billentyűk térképét a boolean típusú hangok[] tömbben tárolom. A void loopban meghívom a checkMidit, majd gondolom amikor épp nincs dolga, akkor továbbmegy, és ha a matrixomon az első sor aktív, azaz a szintetizátor azt a sort időzíti a matrixból, akkor kiírja a 8digitalis kimenetre, hogy az adott 8 hangból melyik aktív. Szerintetek működőképes lehet-e a dolog? Bocs a primitív programmegoldásokért!
A hozzászólás módosítva: Nov 24, 2018
Köszi a választ!
61 billentyű lenne a végén, de szerintem multiplexerrel megoldható a 8 bemenet az 1-re, három címmel, de egyenlőre annak örülnék, ha működne, a midi bemenetérkezésekor egy ledet felvillantani a kimeneten dolog ![]() Megpróbálom összerakni.
Megoldható vele, de csak addig amíg egy billentyű van lenyomva az adott 8-ból.
Miért? Amely billentyűk le vannak nyomva, ott változik a kimenet. Egy kimenet bemenet egy billentyű...
Mondjuk én azzal kezdeném, hogy ráakasztanám a kis 8 csatornás logikai analizátoromat a 8db mátrix-in vezetékre és megnézném milyen sebességgel történik a lekérdezés. Mivel a 8049 nem egy erőmű, ez talán nem lesz MHz nagyságrendű. Az sajnos az nem deríthető ki, hogy a 8049 a mátrix megcímzése után mennyivel olvassa vissza az adott sort, de ha ez több 1-2 mikroszekundumnál, akkor talán csupán szoftveresen is megoldható. Persze ez nem a fenti programmal, hanem megszakítással (szükség esetén a lábállapot változás megszakítás kiszolgálását ASM-ben megírva).
Ez ugyan nem MIDI, de példának talán jó, amin elindulhatsz. A hozzászólás módosítva: Nov 24, 2018
Nem értem miért a bonyolultabb megoldást választottad, mármint a velocity-t használni, mikor a note on 0x90, a note off pedig 0x80.
Igen ez jogos. Úgy tudom mindkettő elfogadott noteoff parancsnak. Természetesen mindkettőt le kell kezelnem a hangok kikapcsolásához. Egyenlőre nem ezen volt a hangsúly
![]()
Elvileg a billentyűzet részben csak ellenállások és diódák vannak, tehát ha megcímzi őket, akkor illene is visszaolvasnia szerintem...
Van más megoldás is, igaz nem olcsó.
Bővebben: Link
Gondolom vissza is olvassa. Csak az a kérdés, hogy mennyi idővel a megcímzés után. Ha fél mikroszekundummal, akkor nincs időd a programodban a megcímzett sorhoz tartozó kimeneteket beállítani, ha legalább 5-10 mikroszekundummal, akkor viszont le tud futni az az algoritmus, ami ezt megteszi.
Szia!
Én nem adnám fel. Ki kell próbálni, majd szépen lassan gyorsabb megoldások felé venni az irányt. A kódod ha megy is akkor kicsit lassú lesz, de lehet rajta gyorsítani. Rögtön ott egy Port operáció, tök fölösleges és lassú a 8 Digital write. Bővebben: Link Az, hogy a soros portról kap egy/két bájtot, azzal semmi gond nincs szerintem. (azzal igen, hogy nem várod meg, míg minden átjön.)
Ennél sokkal összetettebb a feladat, szerintem. Kvázi emulálni kell egy 8x8-as matrix működést, ami ráadásul multiple, mivel a hangszer 6 hang polifónikus, bárhol megjelenhet egyszerre 6 lenyomás (vagy több). Vissza kellene keresni a teljes hangkiosztást a matrixban, aztán megfejteni a szkennelést. Közben midi adatokat fogadni, feldolgozni és megfelelő időzítéssel, kiadni.
Szerintem bármennyi billentyűt lenyomhatok egyszerre, azt már intézi a szinti. Tehát a polifónia miatti "csuklásokat" nem nekem kell megoldani. Tulajdonképpen ha lenne 61 kapcsolóm és azokat be ki kapcsolgatnám, az is megoldaná a dolgot, és akár mind a 61-et bekapcsolhatom, a szinti eldönti, mi fog szólni a beérkező sorrendből...
Kb 25ezerből lehetne egy szlovák cégtől venne ehhez egy midi vezérlőt, de abba semmilyen kihívás nincs, ráadásul nem költséghatékony...
Lehet ez az analóg kapcsolós cucc nem is olyan rossz megoldás kb 16 db kéne...
Persze, hogy kapcsolhatod mind, nem ezért hoztam fel. Ha vezérlő ad egy oszlop jelet például, akkor neked tudnod kell mikor adja és nem biztos, hogy csak egy sorjellel kell reagálnod. Ezt addig meg kell tenned, amíg át nem vált a következőre.
Idézet: „Tulajdonképpen ha lenne 61 kapcsolóm és azokat be ki kapcsolgatnám, az is megoldaná a dolgot” Értem, akkor te lennél a MIDI? ![]()
És ha a processzort házasítanál egy tárolókból álló hálózattal? Ha a márrix nem alkalmaz kimenetén irányfordítást, elég lehetne 8 D-tip. tároló OE kimenettel. A mátrix oszlopkijelölő vezetékei pont jók kimenet engedélyezőnek. Amit a tárolókba beírsz az meg pont jó lehet az adott oszlophoz tartozó gomb információnak. Igy a processzornak csak annyi dolga van, a megfelelő időben a megfelelő tárat átírja. A mátrix időzítésével nem kell foglalkoznia.
A hozzászólás módosítva: Nov 25, 2018
Ez sem rossz verzió, 8db 8bites D tárolóval (pl. 74HC574) megoldható (ha nem kell invertálni az OE lábakat).
Ez jó ötletnek tűnik így ránézésre mivel mindaddig tárolja a lenyomást, amíg fel nem emelem a billentyűt, tehát nem változik az állapot.
Közben, mivel az előző projektet szüneteltettem megvalósíthatatlansága miatt, és egy régi vágyam volt egy olyan MIDI GS controller, ami a Roland JV30-am realtime állítható hangszínparamétereit képes állítani, elkészítettem ezt. Három optikai ellenállást használtam hozzá, meg kaptam egy panelt még régebben, meg most rendeltem egy kínai Nanot és egy kék LCD-t. Sima normál Midi csatlakozó kimeneten kapja a szintetizátor a jelet..
Szóval ez egy midi kontroller, de nem CC üzeneteket ad, hanem Roland készülékek Gs üzenetét. 11bájton, 6-7-8 a paramétercím, 9-es az érték, 10-es a hibaellenőrző bit: a 3címbájt és az adat összegét kivonva 128-ból kapható meg. Működik szépen, ha valakit érdekel esetleg a forráskód ide feldobom. Az előző projektet átgondolom, illetve rámérek a hangszerre, de azt nem kapkodom el...
Ez jó ötlet. Vennék egy start jelet megszakítás formájában valamelyik oszlopjelölőről, mikor kezdhető az átírás.
A konvertált midi adatokat pedig FIFO-ba tenni. Csak arra kellene ügyelni,hogy ne legyen túlcsordulás és ha üres a FIFO nullákat kapjon. Elmélet, nem biztos, hogy belefér az időbe.
7 szegmenses kijelzőt szeretnék használni, meg is csináltam vele amit szeretnék, csak az utolsó lépés hiányzik.
Ilyen a kijelző, és innen van a kódom kiindulási alapja: Bővebben: Link A jobb szélen az akku kijelzést szeretném használni, de nem tudom értelmezni a csatolt képet. Bővebben: Link Hogyan tudom bekapcsolni (és lekapcsolni) azok a karaktereket?
Szerintem a BAT1, BAT2 és BAT3 bitek billentésével, a hogyant nem tudom.
A tizedesvessző bitjeit így billegeti:
Akkor tippem szerint:
Ugyanis pont ugyanolyan pozícióban vannak a BAT[1-3] szegmensek, mint a DP[1-3] szegmensek, csak 3 byte-tal odébb.
És mivel kapcsolod le?
|
Bejelentkezés
Hirdetés |