Welcome, Guest. Please login or register.


Author Topic: MIDI (Read 401671 times)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re:MIDI
« Reply #15 on: 2017.August.03. 10:52:36 »
Tegnap már feltöltöttem egy MIDI-s verziót példa programmal, de nem töltötte le senki. Bár file konvertáláshoz egyébként sem lenne szükség ilyesmire, amint említettem, először a C64 és CPC programok között lenne érdemes keresni, könnyen lehetséges, hogy ezekre a gépekre már írtak jó minőségű konvertáló programot, aminél nehéz lenne jobbat készíteni.
Honnan tölthető le, nem találom.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re:MIDI
« Reply #16 on: 2017.August.03. 10:58:12 »
A chip ami a lelke a dolognak: MC6850P ACIA "Asynchronous Common Interface Adapter", ugyan ez van az Atari ST-ben is felhasználva a MIDI-hez. Gondolom ez van berakva memóriába ágyazott I/O-val.

Valóban memóriába ágyazott I/O-nak tűnik. :( A 07-es szegmens végén (BFF8-BFF9, de úgy látom, ez csak kimenet), de talán az F8-on is van, mert a program végtelen ciklusban próbál olvasni valamit onnan amíg érvényes byte jelenik meg. Szerk.: lehet, hogy nem jól értettem az egészet, és a ROM a MIDI kártyát valójában csak lejátszásra használja, nem felvételre. :)

Honnan tölthető le, nem találom.

[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
« Last Edit: 2019.April.19. 18:40:27 by IstvanV »

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re:MIDI
« Reply #17 on: 2017.August.03. 11:19:23 »
Láttam ezeket a links, de aztán eltűntek.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re:MIDI
« Reply #18 on: 2017.August.03. 17:35:24 »
fájlból is ha tudna .mid-et olvasni tök jó lenne!
és akkor basic-ból lehetne paraméterezni a hangzást meg mindent, kíirni esc szekvenciákba, máris lenne egy jó midi konverterünk.
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re:MIDI
« Reply #19 on: 2017.August.04. 17:08:09 »
amúgy ennek a midis dolognak jó lenne egy másik topik, mert elég jó téma.

a midiben amúgy hogy van az időzítés? emlékszem, mintha programoztam volna midis dolgot, tök jó kis egyszerű nyelve van, de nem ugrik be hogy hogyan van az időzítés benne.

ja és az exos sound tud olyat hogy az envelope-ban megadható RELEASE, ami a midi billentyű elengedésnek feleltethető meg

várom már hogy fájból tudjunk basicben midit olvasni :)
Vigyázat! Szektás vagyok! :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re:MIDI
« Reply #20 on: 2017.August.04. 17:33:43 »
a midiben amúgy hogy van az időzítés? emlékszem, mintha programoztam volna midis dolgot, tök jó kis egyszerű nyelve van, de nem ugrik be hogy hogyan van az időzítés benne.

A MIDI alapvetően esemény alapú, ezek az egyszerűbb (csatorna) események lehetségesek:

8xh y z = Note Off = billentyű elengedése (y = magasság, z = sebesség, az utóbbi gyakran figyelmen kívül hagyható), X mindenhol a csatorna száma, a paraméterek 7 bitesek
9xh y z = Note On = billentyű leütése (y = magasság (69 = 440 Hz, a BASIC-hez képest +23), z = erősség, a z = 0 valójában Note Off)
Axh y z = Polyphonic Pressure = billentyű Y lenyomva tartásának az erőssége (Z), ezt az olcsóbb billentyűzetek általában nem támogatják
Bxh y z = Control Change = vezérlő (hangerő stb.) Y változása Z értékre
Cxh y = Program Change = program (hangszer) Y választása
Dxh y = Channel Pressure = az összes billentyű lenyomva tartásának az átlagos erőssége a csatornán
Exh y z = Pitch Bend = hajlítás, 0 és 16383 közötti 14 bites érték (y = alsó 7 bit, ami valójában gyakran 0), 8192 esetén nincs hajlítás, a "szabványos" tartomány alapértelmezés szerint +/- 2 félhang

Valós idejű bemenetnél ezeket a legrövidebb késéssel fel kell dolgozni, a PC-s API-k adnak információt a késés mértékéről is a pontos időzítéshez. A MIDI file formátum az események közötti időt tárolja.

Quote
ja és az exos sound tud olyat hogy az envelope-ban megadható RELEASE, ami a midi billentyű elengedésnek feleltethető meg

Az EXOS hangkezelőjével az a probléma, hogy a hangjegy időtartamát már az indításakor is ismerni kell, ami valós idejű bemenet (hangszeres játék) esetén nyilvánvalóan nem lehetséges. Illetve a hang paramétereit (magasság stb.) sem lehet az indítása után már módosítani, csak INTERRUPT lehetséges, ami lecsengés nélkül megszakítja.

Quote
várom már hogy fájból tudjunk basicben midit olvasni :)

Az IS-BASIC támogat file műveleteket, tehát elvileg semmi akadálya. :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re:MIDI
« Reply #21 on: 2017.August.04. 17:43:33 »
hát a hang közbeni paraméter megváltoztatás főleg a hajlításra van alkalmazva, amit meg kevés midi zene használ, persze az igényesebbek biztos. de szerintem megleszünk nélküle.

a fájlból lejátszást nem csinálod meg? :)
Vigyázat! Szektás vagyok! :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re:MIDI
« Reply #22 on: 2017.August.04. 19:08:59 »
a fájlból lejátszást nem csinálod meg? :)

Loopback eszközzel már most is tetszőleges lejátszó (vagy sequencer vagy egyéb program) csatlakoztatható a MIDI bemenethez. Bár a közvetlen file olvasás előnye a pontosabb időzítés. Mindenesetre ha a tömeges file konvertálás a cél, azért szerintem nem éri meg az emulátorba építeni, ezt meg lehet oldani PC-s programmal a SID konvertáláshoz hasonlóan.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re:MIDI
« Reply #23 on: 2017.August.05. 10:20:23 »
Érdekelhet, kéne midi lejátszót írni, van egy valagnyi midi zene, csak az a fránya idő, meg másképp idő, ebben a kellemes melegben a gépet sincs kedvem bekapcsolni.

Linuxon a "Midi Through" porton keresztül egyszerűen összeköthető a módosított emulátor bármilyen programmal:

wine ep128emu_midi.exe -no-opengl

[ Guests cannot view attachments ]

A port azért jelenik meg két példányban a listán, mert a második a kimenet, de az nem használható. Célszerű a hang és video beállításokat optimalizálni a késés (latency) és időzítési hiba minimalizálása céljából:
- Windowson érdemes az alapértelmezett MME helyett WASAPI audio eszközt használni, ha lehetséges: ez megkerüli a lassú szoftveres keverőt, de kizárólagos hozzáférést igényel a hangkártyához
- a Latency paraméter az alapértelmezett 70-nél lényegesen kisebbre is állítható az operációs rendszertől és audio API-tól (ALSA, MME, WASAPI, stb.) függően. A kisebb alapvetően jobb, legalábbis amíg stabil a lejátszás és nem akadozik a hang
- a CPU-t terhelő vagy várakozást igénylő video módokat (pl. "Resample to monitor refresh rate") érdemes lehet letiltani, bár ezek hatását az időzítésre még nem teszteltem

A bemenet előállítására a legegyszerűbb program talán az "aplaymidi", ami egy parancssoros file lejátszó:

aplaymidi -l

 Port    Client name                      Port name
 14:0    Midi Through                     Midi Through Port-0

aplaymidi -p 14:0 file.mid


Azonban a kezdetleges "keyboard.com" programmal valószínűleg csak egészen egyszerű (egy csatornás) file lejátszása lesz elfogadható.

Offline nyuzga

  • EP addict
  • *
  • Posts: 2280
  • Country: hu
Re:MIDI
« Reply #24 on: 2017.August.05. 11:36:37 »
Nálam nincs midi, de a win7 lejátssza a mid fájlokat.

[ Guests cannot view attachments ]
« Last Edit: 2017.August.05. 11:42:03 by nyuzga »

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: MIDI
« Reply #25 on: 2017.August.05. 12:27:58 »
megpróbálom majd istván basic port olvasó programját átalakítani hogy .mid fájlt tudjon olvasni és átalakítani exos zenévé
Vigyázat! Szektás vagyok! :)

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: MIDI
« Reply #26 on: 2017.August.05. 12:47:18 »
Kérlek Istvan, készíthetsz egy Win32-t az emulátor Midi változatából?

Ünnepnapokon vagyok, és az egyetlen PC-je Win7 32bits.

Kösz.

---------------------------------------------

Please Istvan, can you put a Win32 build of that Midi version of the emulator?

I am on holidays and my only PC is a Win7 32bits.

Thanks.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: MIDI
« Reply #27 on: 2017.August.05. 13:06:44 »
kicsit lassítanunk kéne... már midi is lesz EP... mi marad így nekünk 30 év múlva? :)
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: MIDI
« Reply #28 on: 2017.August.05. 13:10:17 »
Error opening Portmidi device-t kapok, win7 alatt (bármelyik midit választom ki) , valaki tudja mi lehet a baj?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: MIDI
« Reply #29 on: 2017.August.05. 13:18:11 »
Error opening Portmidi device-t kapok, win7 alatt (bármelyik midit választom ki) , valaki tudja mi lehet a baj?

Egyelőre csak Linux+Wine alatt próbáltam a Windows verziót, ott működött. De figyelni kell arra, hogy egyes eszközök csak kimenetnek használhatók, azok természetesen nem fognak működni, vagy legalábbis csak akkor, ha az emulátorba MIDI kimenet támogatása is kerül. Lehet, hogy Windowson alapértelmezés szerint bemenet nincs is, csak a Microsoft szoftveres szintetizátora, ami kimenet, tehát vagy billentyűzetet kell csatlakoztatni a géphez, vagy loopback eszközt ("midi loopback device" keresésével könnyen lehet ilyen programokat találni) telepíteni.

Rájöttem egyébként, hogy miért nem talál semmilyen eszközt a natív Linux verzió: a PMALSA makrót definiálni kell fordításkor ahhoz, hogy a PortMidi működjön:

scons cflags="-DPMALSA=1" -j 4 ep128emu

Így már Wine nélkül is lehet MIDI bemenet Linuxon.