Welcome, Guest. Please login or register.


Author Topic: MIDI lejátszása IS-BASIC alatt (Read 18519 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
MIDI lejátszása IS-BASIC alatt
« on: 2024.August.21. 12:28:03 »
Azt vajon meg lehetne csinálni, hogy basic program játsszon le midi fájlt? Akár úgy, hogy Zzzippel fordítható legyen? Gondolom, az ALLOCATE után nagyon nagy szám kéne, ahogy aztán nagyon sok HEX$ kód a lejátszóhoz.
A Soundtracker 2.1 eredetileg basic program és Zzzippel van lefordítva, ebbe is valami trükkel beépítettek egy digi zene lejátszót.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #1 on: 2024.August.21. 14:43:00 »
Biztos be lehetne tenni az allocate-be a DAVEPLAY lejátszót, és a konvertált midi adatot, sőt, még akár a HEX$-ba beépíthető lenne a zene betöltő is, hogy ne kelljen a zenét is HEX$-ba tenni, de mivel a konverált zene adat lokációfüggő, ezért még a helyes címeket is be kéne pöcsölni.
A sima MIDI lejátszót is biztos be lehetne valahogy, de az nagyon helyigényes lenne egyrészt, másrészt megnézném, azt, aki HEX$-osítja :D

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14773
  • Country: hu
    • http://enterprise.iko.hu/
Re:MIDI lejátszása IS-BASIC alatt
« Reply #2 on: 2024.August.21. 19:49:33 »
A Midizéshez hány Hz-es megszakítás kell? Ha elég az 50, akkor lehetne úgy mint az MBPlay.

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #3 on: 2024.August.21. 20:25:02 »
szerintem a midiplay magasabbat hasznal, de a daveplaynek eleg az 50Hz, legalabbis az eddigi osszes midibol konvertalt zene 50Hz-es megszakitasbol lett visszajatszva. Raadasaul a midiplay lejatszo is sokkal bonyolultabb, es tobb helyet hasznal a lejatszaskor, mint a daveplay.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:MIDI lejátszása IS-BASIC alatt
« Reply #4 on: 2024.August.21. 21:32:48 »
Raadasaul a midiplay lejatszo is sokkal bonyolultabb, es tobb helyet hasznal a lejatszaskor, mint a daveplay.
Olyanra gondoltam, hogy nincs vizuális megjelenítés, csak pl. a menüben ilyen zene szólna, és valamilyen billentyűvel ha továbblépnénk, akkor hallgatna el. (Vagy pl. lenne egy CALL USR(MUSIC,1), erre indulna a lejátszás, és egy CALL USR(MUSIC,0), erre hallgatna el. Nem tudom, pl. a Dots and Gems játékban a játék alatti zene megoldható lenne-e így, szebben hangzana midiből játszva, egyenletesebb lenne a ritmusa. De lehet, lassítaná is a programot. Mondjuk talán pont ehhez a játékhoz nem is lenne olyan bonyolult, egyetlen szólam szól, két csatornán, végig ugyanazzal az envelope-pal és gyűrűmodulációval. Persze ennél bonyolultabb zenék lennének jók pl. játékok menüibe.
Nyilván nem lenne létfontosságú, basic-ből is egész jó dolgokat ki lehet hozni a SOUND-dal.

Az MBPlay-re én is gondoltam, csak azzal az a gond, rendszerbővítő, amit a Zzzip nem szeret. Utólag belegondolva egyszerűbb basic játékokba, melyek nincsenek zzzippelve (pl. Manhole), lehetett volna akár MBP zenét is tenni. Gondolom, basicből simán be tudná tölteni a bővítőt a program.

Igazából a :SAY bővítést is használhatnák basic játékok. A Basic programcsokorban van is pár játék, amihez jól hangzana, ha a SAY és az MBP bővítést is használnák. Nem tudom, a két bővítés mennyire tűrik meg egymást, még sosem próbáltam. Betöltéskor azt is ellenőrizni kéne, nincs-e még bent a rendszerben a SAY és az MBP, mert valaki eleve ilyen konfigurációt használhat, és akkor ne töltse be újra.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #5 on: 2024.August.22. 08:29:40 »
Most jutott eszembe a legegyszerűbb megoldás, és ezzel nem is kell sokat HEX$-ozni, mind a zenelejátszót, mind a zenét a HEX$-os rész töltené be egy vagy két lefoglalt szegmensre, töltés után beállítódik a USER_ISR, és már zenél is a program, a DAVEPLAY alig használ memóriát, és CPU-t.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:MIDI lejátszása IS-BASIC alatt
« Reply #6 on: 2024.August.22. 09:24:26 »
Most jutott eszembe a legegyszerűbb megoldás
Ez jól hangzik!
A Zzzipet nem akasztaná ki a szegmensek lefoglalása?
A lejátszót akkor nem bővítőként töltené be? Azt nem szereti a Zzzip.
Mindenképpen kéne valami CALL USR(MUSIC,x) parancs, ahol az x értékétől függően a lejátszás elindítható vagy megállítható.
És ha később egy másik basic programba akarjuk betenni a lejátszó és a zene betöltését, akkor mennyire kell átírni az egészet? Gondolom, a zene fájl nevét csak az OPEN utasítás után kéne átírni. Meg talán a zene file hosszát is meg kéne adni, ami mindig eltérő.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #7 on: 2024.August.22. 09:43:46 »
Ez nem használna bővítést, és szabad szegmenst kérne a program, igen, a betöltendő fájl nevét kéne csak átírni.
CALL lesz mindenképp, de lehet minkább csak ezek lennének CALL USR(MUSIC_LOAD),CALL USR(MUSIC_OFF), CALL USR(MUSIC_ON)

Vagyis a basicben csak a betöltendő fájl nevét kéne átírni, de a betöltendő fájl előállításához kell majd a zene konvertáló program, és a sjasm, ami egybefordítja a lejátszót a zenével, amit majd betöltünk. Ez se lesz bonyolult.

Egyelőre annyi megkötést tervezek, hogy a zene nem lehet nagyobb 16KB-nál.
« Last Edit: 2024.August.22. 09:47:01 by geco »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:MIDI lejátszása IS-BASIC alatt
« Reply #8 on: 2024.August.22. 10:58:25 »
Egyelőre annyi megkötést tervezek, hogy a zene nem lehet nagyobb 16KB-nál.
Azért már 16KB alatti zenéket betenni basic programok alá, az se lenne semmi.
Az már túl sok lenne, ha két zene is kerülhetne a programba? Egy a menü alatt, egy játék közben szólhatna.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #9 on: 2024.August.22. 12:08:05 »
Egyelőre legyen meg az egy, a második mindenképp macerásabb lenne, mert a beaktiváláshoz kéne tudnod a címét, ami az LST fájlból kiderül, de a BASICből is azzal a címmel kéne meghívni a zene inicializálót (decimálisra átalakítva)

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #10 on: 2024.August.22. 18:27:29 »
Elakadtam, miután meghívom a lejátszót, és elindul a zene, mindig
*** STOP key pressed.
Üzenettel áll le a basic, még akkor is, ha kiadom a SET INTERRUPT STOP OFF parancsot.

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #11 on: 2024.August.22. 21:30:37 »
No, megvan a hiba, saját magamat szopattam, engedélyeztem a SOFT_IRQ-t, és az eredményezte a STOP-ot, kivettem a SOFT_IRQ engedélyezést, és minden meg is javult, az alábbi csomagban minden megtalálható, ami a zene adatfájl generálásához kell, és a basic program is két formátumban.

Leírtam a lejátszó korlátját a readme.txt-ben, de egy kimaradt, a SOUND eszköz megszakításból való hívását ki kellett iktatnom, mert minden megszakításban 0-ázta a dave regisztereket, ezért a zene, és hang effektek BASIC-ből egyszerre nem fognak működni, a MUSIC_OFF újra engedélyezi a SOUND eszköz megszakításból való hívását.
Ja, és ne jusson eszébe senkinek 18 karakternél hosszabb fájlnevet megadni a Basic programban :D :D
És EXOS 2.0 alatt se fog működni, mert ott nincs EXOS-ban USER_IRQ.

*** Attachment removed
« Last Edit: 2024.August.24. 20:15:53 by geco »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:MIDI lejátszása IS-BASIC alatt
« Reply #12 on: 2024.August.22. 22:03:37 »
Fú, nem semmi! Mindezt 1 nap alatt!
Elmélyedek benne és kísérletezem.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re:MIDI lejátszása IS-BASIC alatt
« Reply #13 on: 2024.August.22. 22:08:35 »
Igyekeztem a leheto legegyszerubbre megcsinalni :-)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:MIDI lejátszása IS-BASIC alatt
« Reply #14 on: 2024.August.23. 00:02:26 »
32 bites Win10 alatt azt írja konvertálásnál, nem megfelelő a rendszer. 64 bites Win10 alatt pedig egy dll-t hiányol:
[ Guests cannot view attachments ]
Ha jól értem, csak a konvertálandó midi fájlt kell a MIDI mappába az envelope.txt-vel együtt betenni, utána futtatni a _midiwork.bat-ot, és ez létrehozza az egy könyvtárral lejjebb lévő midi.mid-et, amit betölt és lejátszik a basic_midi.bas.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos