Welcome, Guest. Please login or register.


Author Topic: MIDI to BASIC (Read 14774 times)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1081
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 79.0.3945.131 Chrome 79.0.3945.131
    • View Profile
Re: MIDI to BASIC
« Reply #15 on: 2020.January.20. 12:28:49 »
Köszi, nagyjából értem...
A bájtok legfelső bitje mindig jelző bit, a tárolt érték kiszámításában nem játszik szerepet. Ha az értéke 1, akkor az adott bájt feldolgozása után még nem értünk az érték beolvasásának végére. Ha az értéke 0, akkor az adott bájt feldolgozása után elértük az érték beolvasásának végét.

Valami hasonló algoritmust lehet elképzelni:
  • Nullázzuk az értéket tároló változót. (pl.: LET VALUE = 0)
  • Beolvassuk a soronkövetkező bájtot. (pl.: beolvassuk a MIDIBYTE nevű változóba)
  • Ha nagyobb az értéke 127-nél, akkor a tárolt értéket megszorozzuk 128-cal és hozzáadjuk az alsó hét bit értékét. (pl.: LET VALUE = VALUE * 128 + MIDIBYTE - 128)
  • Ha kisebb az értéke 128-nál, akor a tárolt értéket megszorozzuk 128-cal és hozzáadjuk az alsó hét bit értékét. (pl.: LET VALUE = VALUE * 128 + MIDIBYTE)
  • Ha nagyobb az értéke 127-nél akkor folytatjuk a 2. ponttól.
  • Kész.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1081
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 79.0.3945.131 Chrome 79.0.3945.131
    • View Profile
Re: MIDI to BASIC
« Reply #16 on: 2020.February.06. 13:33:14 »
Olvastam a Videoton TVC témában, hogy sikeresen megoldottad a MIDI->TVC BASIC konverziót. Akkor sikerült használni a legutóbb általam javasolt módszert, vagy külső segítséget vontál be?

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 79.0.3945.130 Chrome 79.0.3945.130
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #17 on: 2020.February.06. 18:43:48 »
sikerült használni a legutóbb általam javasolt módszert, vagy külső segítséget vontál be?
Még mindig csak az egy bájttal leírható hanghosszúságokkal ügyködtem. Még nem próbáltam ki a módszered, de már nagyon érik. Még csak azon morfondíroztam, hogy akár nagyobb 127-nél, akár kisebb 128-nál az a bizonyos érték, akkor is meg kell szorozni a tárolt értéket 128-cal, és hozzá kell adni az alsó 7 bájt értékét, mindkettőhöz ezt írtad. Csak az előbbi esetben ki kell vonni belőle 128-at, az utóbbi esetben nem. Majd megpróbálom nemsokára bevinni ezt a programba, ha meg nem megy, majd írok megint ide.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1081
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: MIDI to BASIC
« Reply #18 on: 2020.February.06. 21:46:48 »
Még csak azon morfondíroztam, hogy ...
Jól van, látom figyelsz! :smt023

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 72.0 Firefox 72.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #19 on: 2020.February.06. 22:22:38 »
Jól van, látom figyelsz! :smt023
Figyelek, csak iszonyat nehezen fogja fel az agyam ezeket a bináris dolgokat. Pedig amúgy biztos tök egyszerű. A négyszínű karakteres módnál is ez volt. Még mindig nem teljesen értem, hogy ha a jelzőbiten kívül mindegyik bit értéke nulla, akkor hogy lesz abból 128, hiszen a jelzőbit az csak jelez. De mindegy, nem is fontos, a lényeg, hogy működjön majd a programban a cucc! :D
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1081
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Opera 12.18 Opera 12.18
    • View Profile
Re: MIDI to BASIC
« Reply #20 on: 2020.February.07. 06:05:05 »
Egyébként lehet még egyszerűsíteni rajta. ;)

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 79.0.3945.130 Chrome 79.0.3945.130
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #21 on: 2020.February.07. 11:14:59 »
Egyébként lehet még egyszerűsíteni rajta. ;)
Ha kisebb 128-nál a bájt értéke, akkor egyszerűen csak fogjuk a bájtot és az értéke annyi marad, amennyi, és nem kell megszorozni meg hozzáadni. Ezt csinálta eddig is. Ha meg nagyobb 127-nél, akkor meghívhat egy eljárást, pl. DEF BONYODALOM, és ott elbánik a felső matematikát igénylő, rendkívül bonyolult, több bájtos virtuális objektumokkal. Most pont nem tudom kipróbálni, mert másik gépről vagyok, azért csak szövegelek.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 72.0 Firefox 72.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #22 on: 2020.February.10. 10:03:50 »
« Last Edit: 2020.February.10. 10:28:44 by szipucsu »
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1081
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Opera 12.18 Opera 12.18
    • View Profile
Re: MIDI to BASIC
« Reply #23 on: 2020.February.10. 17:14:33 »

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 72.0 Firefox 72.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #24 on: 2020.February.10. 17:43:36 »
Én inkább valami ilyesmire gondoltam:
Most másik gépről vagyok, innen nem tudom kipróbálni, de majd otthonról megnézem.
Amúgy, a következő nem lenne jó? Fejből írtam kicsit sietve Word-ben, sorszámok nélkül:

LET HOSSZ=0
FOR J=1 TO 4
GET C$
IF C$>CHR$(127) THEN LET HOSSZ=HOSSZ*128+ORD(C$)-128
IF C$<CHR$(128) THEN LET HOSSZ=HOSSZ*128+ORD(C$):EXIT FOR
NEXT

Ugyanaz lenne, mint amit legutóbb írtam, csak kicsit rövidebben, ha nem néztem el semmit.
Most belekutyulódtam, hogy melyik IF-es sor végére kell az EXIT FOR, de az eredeti program szerint az elsőnél van jó helyen, de az én logikám szerint a második végére kéne. (Bár én lehet, nem teljesen értem a módszert.)
« Last Edit: 2020.February.10. 21:01:52 by szipucsu »
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 72.0 Firefox 72.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #25 on: 2020.February.10. 21:55:00 »
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1081
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: MIDI to BASIC
« Reply #26 on: 2020.February.10. 22:17:36 »

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 72.0 Firefox 72.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #27 on: 2020.February.10. 22:45:38 »
Igen, strukturáltság szempontjából ez így gáz. Délelőtt betettem azt a 20 soros hosszú programrészt. Ott elszörnyedtem, láttam, hogy ez így nagyon sok, és egyszerűsíteni kell rajta, csak ugye fejben először ez volt meg. Így hát egyszerűsítettem, és ez túl jól sikerült. :D Annyira szörnyűnek tűnt az a 20 sor. Áttekinthetőség szempontjából tényleg IF ... END IF lenne elegáns, és mindegyik sorba egy utasítás.
Valamikor a strukturálatlanságnak is van előnye. Pl. TVC-n volt egy sound utasítás, felszökött a hang, és ezt egy sorban meg lehetett oldani egy ciklussal, valami ilyesmi volt:
500 FOR J=3500 TO 4094:SOUND; PITCH J,DURATION 2:NEXT
Olykor zavaró lehet, hogy ha listázok egy bonyolultabb programot, akkor ez három sort elfoglal EP-n, és a képernyőn kevesebb hely marad más dolgoknak. Az IF... END IF hiánya TVC-n meg zavaró lehet, amikor pl. 4 print utasítást akarok a then után tenni, de az már nagyon sok lenne egy sorban, és csak a 4 print miatt kell gosubozni, és még keríteni is kell valami részt a programban, ahova amúgy sose jutna el, csak innen.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 73.0 Firefox 73.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #28 on: 2020.February.22. 21:55:09 »
ErgoGnomik jóvoltából most már a hosszú hangokat is ki lehet bányászni a midi fájlból. Ennek örömére rögtön át is gyűrtem basicbe a másik topikba is betett Bach muzsikát. Kicsit döcögve szól az elején (lassú a basic), de aztán helyreáll:
* Bach01 bas.ep128s (43.74 kB - downloaded 258 times.)
Ez csak egy szólamú, a basic korlátai miatt.
A midi fájlban sokszor nagyon rövid szünetek vannak a hangok között, ami basicbe konvertálva kicsit fura, és jobb lenne, ha inkább az előző hang szólna tovább a szünet idejére is. Ráadásul olyan rövidek ezek a szünetek, hogy 1-nél rövidebb duration jön ki, de szerencsére ezt felfelé kerekíti, különben a duration 0 percekig is szólna. A tört duration értékek miatt el is csúszhat a ritmus, szóval még lehetne ezen finomítani.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 9230
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 73.0 Firefox 73.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: MIDI to BASIC
« Reply #29 on: 2020.February.22. 22:08:51 »
Ez a legutóbbi, a hosszú hangokat is jól kezelő változat:
* mid2bas4.zip (2.89 kB - downloaded 266 times.)
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos