Keresés

Részletes keresés

djuice Creative Commons License 2019.03.18 0 0 2379

Uff!

Hát ezt még ízlelgetni kell, mert elsőre nekem sok, de hálás köszönet a fejlesztésekért.

Én azért megőrzöm az 1 csatornás szóló válogatású exe-t, mert felteszem, ha jól értem, ha már zongora-hegedű duo játszik felváltva szólózva egy kompozícióban, az is szólónak kell számítson?

Előzmény: zbacsko (2378)
zbacsko Creative Commons License 2019.03.18 0 0 2378

Sziasztok,

Végül úgy döntöttem, hogy megtartom az export rutint. Kicsit módosítottam az interfészen és a szóló leválogatásból kiszedtem a "csak egy csatorna lehet" ellenőrzést.

http://falcosoft.hu/midiplayer_57_test.zip

 

Ez utóbbit azért, mert azon kívül amit kolléga leírt (szólók, amik 2 külön csatornát használnak bal ill. jobb kézhez) létezik még egy különleges csoportja a midi fájloknak, amivel Djuice nem számolt, nevezetesen  a Microsoft "Dual Authoring Guidelines" szerint készült midi fájlok.

Egy kis történeti áttekintés: Nem tudom hányan emlékeznek még a Windows 3.1 Midi Mapper-re (többet tudott, mint bármelyik verzió a későbbi Windows-okban).

De a lényeg, hogy akik használták még emlékezhetnek 3 különféle csatorna kiosztásra, amelyek nevében ott volt a "Base, "Extended" és "All".

Az "All" volt a klasszikus GM kompatibilis 1-16 csatorna kiosztás míg az "Base" a 13-16 csatornákra az "Extended" pedig az 1-10 csatornákra volt korlátozva.

A Basic setup rendhagyó, mivel a 16-os csatornát Dob csatornaként használja. Tehát nem GM kompatibilis, mivel a GM nem ismer dobcsatornákat a 10. csatornán kívül.
A Microsoft ötlete az volt, hogy készít  egy "Szerzői útmutatót", hogy a Midi fájlokat kompatibilissé tegye mind az Extended, mind a Base kiosztással.
Eszerint egyetlen zeneszámnak 2 külön verzióját helyezzük egyetlen midi fájlba - egy verziót a 13-16 csatornákra, a másikat pedig az 1-10 csatornákra.

A kora 90-es években készült midi fájlok közül sok ilyen.  Pl. a klasszikus canyon.mid és passport .mid Win3.1/Win95 verziói is ilyenek. Ha ezeket a számokat nem Windows Media player-rel (vagy az én Midi player-emmel) játszod le egy GM/GS/XG eszközön, akkor feltűnhet, hogy az 16-os csatornán ott "zörög" egy zongora, aminek semmi keresnivalója ott, mivel eredetileg dobnak volt szánva. Itt elérhető egy csomagban a fent nevezett 2 szám, le lehet ellenőrizni:

https://www.vogons.org/download/file.php?id=44057

 

De a lényeg: ebben a formátumban még az 1 csatornás szólók is 2 csatornát használnak (1 és 13). Egyet a Base, egyet pedig az Extended kiosztás számára.

Én nem vagyok egy nagy szóló gyűjtő, szóval nálam ez eredeti algoritmus egy ezres mintából mindössze 35 szólót talált. A csatornákat figyelmen kívül hagyó viszont 44 szólót. A 9 plusz mind ilyen MS dual midi volt, és mindegyik valóban szólót tartalmazott. Feltöltöttem egyet teszteléshez:

http://falcosoft.hu/ms_dual_midi.zip

 

A Midi playerben az ilyen MS specifikus midi fájlokat egy "MS" felirat jelzi a Tracks és PPQN értékek után. A főmenü -> Compatibility Settings -> Channels résznél tudsz váltogatni a különböző csatorna kiosztások között.

 

Más:

Hozzáadtam a playerhez as SMPTE idő formátumot használó midi fájlok támogatását. Ilyen nagyon kevés van, és a Sekaiju-n kívül csak a Windows Media Player ismeri fel őket (GNMidi, Van Baso, Winamp, Foobar2k, XM Play stb. nem). Bár a WMP esetében a lejátszás túl gyors, annak ellenére, hogy a szám hosszát megfelelően ismeri fel. Ehhez is letölthető egy teszt midi:

https://www.vogons.org/download/file.php?id=60529

 

djuice Creative Commons License 2019.03.15 0 0 2377

Küldtem egy emailt Zoli, de lehet hogy vagy nem kapod meg vagy kb. óránként új példányban bombáz vele az indamail szolgáltató (nekem is jövöget vissza)! Előre is elnézést, most már nagyon be vagyok rájuk rágva és fel fogom számolni náluk a címem, mert eszéletlen dolgokat művelnek...

Előzmény: zbacsko (2366)
Törölt nick Creative Commons License 2019.03.15 0 0 2376

igen, és akkor még nem is beszéltünk arról, hogy azért kevesen játszanak teljesen pontosan (bár ezt még a időbeli kvantálás tudja gépiesíteni), de pld. egy tempó váltás csak vagy több menetes felvétellel, v. utólagos szerkesztéssel volt gondolom megoldható (hacsak nem úgy, hogy előre beállítja a tempó váltásokat a sávon, aztán rájátszik)

 

de ha már AI (v. legalábbis valami hasonló): ezt már mintha említettem volna: https://scorecloud.com

ez nem csak mechanikusan rögzíti a feljátszott dolgot, hanem próbálja kitalálni, mit is szerettél volna :) játszani

 

 

Előzmény: djuice (2375)
djuice Creative Commons License 2019.03.15 0 0 2375

Értem a felvetésed. Van egy zenetanár ismerősöm, egyszer elmentem hozzá Cubase kottázási üzemmódot kitanulni, mert ő abban serénykedik (persze ma már Sibeliust használ). Akkor mutogatta nekem ezt a témát, de ő mindent 1 midi csatornára játszott fel és a Cubi pont az ilyen master key vagy minek nevezett billentyű megadása után dobta ketté 2 kulcsba a művet. Kérdeztem ezekről a 18 felső pótvonalas hangokról is hogy azzal mit szokott csinálni és az volt tán ha jól emlékszem, hogy azért mindent nem lehetett automatizálni ott sem, hanem ki kellett jelölgetni és 8va meg stb. jelzést kézzel beállítgatni + pont az ilyen nyomdakész formára, az adott hangjegyeket is tologatni kellett hol basszus kulcsba, hol violinba végigmenve a darabon. Szóval inkább ez a pepecselés játszhat ha nyomdai formára akarják előkészíteni vagy oktatási célra.
2 kezet külön midi sávra egy időben feljátszani max. úgy tartok lehetségesnek legegyszerűbben, hogy mondjuk ez 2 külön billentyűn történik, de nem tudom egy ilyen zenetanár zongorista mit érezhet eközben, hogy nem 1 hangszeren játszik. :)

Törölt nick Creative Commons License 2019.03.14 0 0 2374

Erre gondolok, ha ez egy type 0 midiben lenne minden hang egy csatornán módon tárolva, akkor már az első D hang a violinkulcsos részben jelenne meg a C alatt.

Viszont ha az (a többi F kulcsos hanggal együtt) a 2-es csatornára megy, akkor a szekvencerben is így jelenik meg.

 

 

Előzmény: Törölt nick (2373)
Törölt nick Creative Commons License 2019.03.14 0 0 2373

én csak arra gondoltam, hogy egy normál zongora kotta két sávra (kulcsra) van lekottázva (függetlenül attól, hogy melyik hangot melyik kéz/ujj játszik), és ennek a pontos (a nyomtatott kottához üzembiztosan hasonlító) megjelenítése type 0 midi fájl esetén  - szerintem - csak úgy történhet, hogy a külön csatornára teszik a basszuskulcsnak és a violinkulcsnak "szánt" hangokat

 

ha minden hang egy csatornán szól(na), akkor vagy nézheted a szekvencerben egy kulcson az összes hangot, vagy jellemzően a c3 mentén szétvágva minden mélyebb hang a basszus kulcshoz, a többi meg a violinhoz "rajzolódna" - így nem biztos, hogy ugyanúgy fog kinézni a kotta, mint nyomtatva

Előzmény: djuice (2372)
djuice Creative Commons License 2019.03.14 0 0 2372

Ilyesmire gondolsz? Ilyet már láttam persze: https://youtu.be/stsBqdo9Svc

Előzmény: Törölt nick (2369)
djuice Creative Commons License 2019.03.14 0 0 2371

Akkor már itt is előrébb jársz tőlem, mert én még ilyen oktató midiket se láttam, de nyilván fontos terület lehet és itt ésszerű is a 2 kéz 2 sávra szeparálása, de gondolod hogy akkor vmi AI algoritmus nézheti mi tartozik bal kézbe és mi a jobb kézbe pl. leütött egyidejű hangok számából? És mi van akkor a kéz átvételes technikáknál ha már itt járunk a témában? Azt nincs algoritmus ami eldönti és nincs kotta se ahol le van írva. Azt maga a zongoratanár mondja el hogy úgy kell játszani. Szóval kutya nehéz dolog ez a zongorillázás amúgy (is)! :)

Előzmény: Törölt nick (2369)
Törölt nick Creative Commons License 2019.03.14 0 0 2370

bocs, most nézem amit írsz: " kijelölt hangtól fel vagy le elválasztások" - ez pont nem az, amiről én írtam :), nyugodtan lehetne abban a kottában bal kezes a7 is, pont úgy mutatná az alsó sávon 

Előzmény: djuice (2367)
Törölt nick Creative Commons License 2019.03.14 0 0 2369

hát valószínűnek tartom - anélkül persze, hogy belemélyedtem volna a témába -, hogy az összes type 0 zongora oktató midinél így kódolnak (nyilván nem a valósidőben feljátszottakról van szó), már csak azért is, hogy a szekvencer egyértelműen két sávon tudja megjeleníteni a kottát, és nem úgy, hogy pld. c3-nál vágja ketté, hogy mi kerüljön 2 két sávra, hanem az eredeti (értsd papír) kotta szerinti módon eldöntve, hogy melyik hang hol van

Előzmény: djuice (2367)
Törölt nick Creative Commons License 2019.03.14 0 0 2368

Tiszta sor, egyértelműen meg lett határozva a működési feltételrendszer.

 

Bizony, még ez is lehet. Sokszor nem azt akarjuk, amiről azt gondoljuk, hogy akarjuk :)

Sőt van egy olyan elképzelés is - az agy működéséről - , hogy valójában a cselekvés történik először, és (csak) utána a gondolat / tudatos szándék, egyfajta igazolásképp :)

Előzmény: zbacsko (2366)
djuice Creative Commons License 2019.03.14 0 0 2367

"amiben a zongora két keze kettő csatornán van.

Pld. az example4.mid"

 

Ez vmi tenyésztett példa. Normális esetben senki nem zongorázik 2 csatornára, hisz zongora darabok akár lehetnek mindkét kézzel fent a 3-4-5 vonalas oktávban megírt részekkel, mint ahogy lent a kontra oktávban is. Szóval ez a kijelölt hangtól fel vagy le elválasztások szerintem eleve nem zenei megközelítésűek.

Ez az a témakör ahol a Zoli emlegette AI kellene eldönteni dolgokat és itt is a human faktor eredményesebb. Lehetne itt egyre keményebb dolgok felé kanyarodni (pl. magyar nyelvi fordítása a playernek stb) :), de már ezért is köszönet, hogy megoldotta egy programban amit kértünk.

Előzmény: Törölt nick (2365)
zbacsko Creative Commons License 2019.03.14 0 1 2366

Eszerint mind a type 0, mind a type 1 midiknél kiesik az összes olyan midi, amiben a zongora két keze kettő csatornán van.

Pontosan. Én egy pillanatig sem gondoltam, hogy ez egy mindent vivő szóló kereső algoritmus, amit holnap érdemes lenne szabadalmaztatni.

Sőt, mindvégig amellett érveltem, hogy ez egy sokkal összetettebb ügy. De aztán Djuice ezt írta:

 

"Ezért is különbözik a szemléletem, mert a szóló zongora darabot én absz. zeneileg értem, nem technikailag, azaz ebben az esetben csak 1 hangszer használata lehetséges a midi fájlban és 1 csatornát használva."

 

Erre már nem lehetett azt mondani, hogy nem egyértelmű. Most mindegy, hogy ez szerintem is a lehető legszűkebb értelemben vett szóló definíció akár "zeneileg" vesszük, akár máshogy. De tény, hogy ez már így leprogramozható, ha valakinek ez kell.  Amit írtam, pont azt csinálja, amit Djuice kért. De egy pillanatig sem gondoltam, hogy az a szóló definíció ami alapján működik teljes és részletes. Ezért írtam:

 

Fontos még, hogy ez tényleg pont azt, és csak azt csinálja ami fent le lett írva. Tehát nagy eséllyel ki fog hagyni midiket, amiket egy ember simán szólóként azonosítana.

 

Én végig arra próbáltam utalni, hogy amikor szólóként identifikálsz valamit, akkor nagyon sok implicit szabályt és kivételt alkalmazol, még ha nem is tudatosan. A programozás/algoritmusban gondolkodás viszont megköveteli, hogy ezeket az implicit szabályokat explicit alakra hozd, és számszerűsítsd. Enélkül nem megy. 

 

A másik gond, hogy neki lehet olyan szűrési lista kellene (nyilván ezt neki kellene végiggondolni), hogy mi az, ami "lehet" szóló mű

Bizony, még ez is lehet. Sokszor nem azt akarjuk, amiről azt gondoljuk, hogy akarjuk :)

Törölt nick Creative Commons License 2019.03.14 0 0 2365

Minden elismerésem (tényleg), de:

"1. Ha egy track önmagában "mixed" (különböző csatornákra vonakozó üzeneteket tartalmaz) ... akkor egyből átugorja a midit."

2. Egy track vizsgálata után megjegyzi a track-hez rendelhető egyetlen csatorna és hangszer számát  (az 1. pont miatt csak egy ilyen lehet már )

Eszerint mind a type 0, mind a type 1 midiknél kiesik az összes olyan midi, amiben a zongora két keze kettő csatornán van.

Pld. az example4.mid http://valentin.dasdeck.com/php/midi/downloads/mf2t.zip

MFile 0 1 48
MTrk
0 Meta Text "96ppq1,2 "
0 On ch=1 n=43 v=80
0 On ch=1 n=62 v=88
0 On ch=1 n=59 v=80
0 On ch=1 n=65 v=80
4 On ch=2 n=79 v=116 <-itt végeti s ér a történet, holott tiszta zongora
24 On ch=1 n=62 v=0
24 On ch=1 n=59 v=0
24 On ch=1 n=65 v=0
29 On ch=2 n=78 v=96

 

Persze djuice pont ezt kérte :)

 

A másik gond, hogy neki lehet olyan szűrési lista kellene (nyilván ezt neki kellene végiggondolni), hogy mi az, ami "lehet" szóló mű (pld. a minden mínusz a biztos nem szóló mű), és abból (az egészhez képest vélhetően csökkentett számosságú listából) már talán könnyebben tudja "kézzel" a tényleges szóló műket leválogatni /ha pld. 1000-ből marad 100 potenciális. Így az a fajta "hiba" eltűnik, hogy valójában szóló műveket nem fogja átnézni soha.

 

Előzmény: zbacsko (2364)
zbacsko Creative Commons License 2019.03.14 0 1 2364

 Milyen címletű sörök szokásosak ilyen körökben? :)

Nincs szokás, amit érzel :)

 

 A szűrési feltételeknél végülis mit, miket alkalmaztál a szóló midik kiválogatására?

Az algoritmus bejárja az összes track minden event-jét.

1. Ha egy track önmagában "mixed" (különböző csatornákra vonakozó üzeneteket tartalmaz), vagy többféle hangszerre referáló Program Change üzeneteket tartalmaz, akkor egyből átugorja a midit.

2. Egy track vizsgálata után megjegyzi a track-hez rendelhető egyetlen csatorna és hangszer számát  (az 1. pont miatt csak egy ilyen lehet már )

3. Minden egyes track léptetés során megnézi, hogy az előző és a jelenlegi track-hez tartozó csatorna és hangszer megegyezik -e. Ha nem, átugorja a midit.

 

Amúgy nagyon köszi a funkciót! Annyi hogy valamiért a Panda Dome antivir ugrik ezekre a kicsomagolt exe-kre a midilejátszót tekintve, aztán nem talál semmit végül, de vmire mindig gyanakszik...

Erről a jelenségről többet olvashatsz itt:

https://blog.nirsoft.net/2009/05/17/antivirus-companies-cause-a-big-headache-to-small-developers/

és itt is:

https://coolsoft.altervista.org/en/blog/2018/05/antivirus-false-positives-are-plague-small-developers

 

A lényeg, hogy a mai vírusirtók kissé paranoiásabbak a kelleténél, és van az a furcsa policy vírusirtók körében, hogy inkább 100 hibás pozitív, mint 1 hibás negatív. Ezen kívül még létezik a teljesen agyhalál 'Reputation based' heurisztika, ami annyit jelent, hogy minden gyanús, amit nem használnak sokan... Ez kisebb fejlesztők számára 22-csapdájaként működik, mivel soha nem fogják sokan használni, ha a virusirtók egyből törlik, mivel nem használják elegen... Persze nagyobb cégek számára külön bejárás létezik az AV engine gyártókhoz., de te mint pöttöm fejlesztő maximum levélben panaszkodhatsz, amire persze sohasem jön válasz. Szóval a legtöbbet Te teheted, mint az adott AV engine felhasználója, azzal hogy jelented nekik a téves (false positive) riasztást.    

 

 

djuice Creative Commons License 2019.03.14 0 0 2363

Amúgy nagyon köszi a funkciót! Annyi hogy valamiért a Panda Dome antivir ugrik ezekre a kicsomagolt exe-kre a midilejátszót tekintve, aztán nem talál semmit végül, de vmire mindig gyanakszik...

(?)

Előzmény: zbacsko (2360)
djuice Creative Commons License 2019.03.14 0 0 2362

Milyen címletű sörök szokásosak ilyen körökben? :)

 

A szűrési feltételeknél végülis mit, miket alkalmaztál a szóló midik kiválogatására?

Előzmény: zbacsko (2361)
zbacsko Creative Commons License 2019.03.14 0 1 2361

Van "Donate" gomb az About boxban, szóval lehet sört is küldeni :)

zbacsko Creative Commons License 2019.03.14 0 1 2360

OK,

Mivel úgy éreztem ez elég reménytelen feladat szöveg illesztéssel (nem lehet egy bejárással megoldani) és az utolsó megfogalmazás már elég konkrét volt a kódoláshoz (csak 1 hangszer 1 csatornán a szóló definíciója)  beleírtam az export rutinba. Mivel nem volt kedvem grafikus interfésszel bíbelődni, csak egy dialógus ablakot dob fel "Solo Only?" kérdéssel az export könyvtár választása előtt. Ha a válasz nem, akkor ugyanaz történik, mint eddig is az exportnál. Ha a válasz igen akkor a playlist-ről kiválasztott fájlok közül csak azokat exportálja, amelyek megfelelnek a fenti "szóló" kritériumoknak. A leöltés helye ugyanaz, mint korábban:

http://falcosoft.hu/midiplayer_57_exporttest.zip

 

Kéretik eltenni, mivel nagyon nem valószínű, hogy ez benne lesz a végleges verzióban, annyira speciális igényekre lett szabva :)

Fontos még, hogy ez tényleg pont azt, és csak azt csinálja ami fent le lett írva. Tehát nagy eséllyel ki fog hagyni midiket, amiket egy ember simán szólóként azonosítana. Az ember sokkal jobb mintázatok, analógiák felismerésében, mint a gép. Te például a Sekaijuban attól még szólóként simán felismersz egy midit, hogy van benn egy kósza program change, ami eltér a fő hangszertől. Vagy pl. csak van benne egy seashore vagy taps effekt a végén. A program viszont ki fogja hagyni, mivel a fő hangszerétől eltérő program change üzenetet talált, tehát az egzakt kritériumok szerint a midi nem szóló, és pont.

 

Ebben különbözik igazából a szemléleted, de nem az enyémtől, hanem az algoritmusokétól. Nekik mindent le kell fordítani pontosan mennyiségekre. És bizonyos dolgokat nem igen lehet jól. Ezekben a holisztikus, analógiákon alapuló megközelítésekben az ember egyszerűen jobb. Szóval legközelebb remélem nem a szép darabokat és mesterműveket szeretnéd majd leválogatni :)

 

Törölt nick Creative Commons License 2019.03.13 0 0 2359

igen, de az egy relatíve egyszerű mintakeresés volt, ha jól emlékszem

(amúgy amit linkeltem, az egy letölthető - parancssori - program, szóval ha tudnál egyértelmű -(szöveg)feldolgozási szabályokat felállítani, és leprogramozni valamilyen szövegfeldolgozó nyelvben awk/perl, akkor akár batch módon is végignézhető az összes midi)

Előzmény: djuice (2358)
djuice Creative Commons License 2019.03.13 0 0 2358

Igen, hát azt hittem eleinte, egyszerűbb feltételekkel szűrhetőek mondjuk TC-ben az ilyenek is, de ez nem így van sajna, mint mikor a sysexekre vadásztunk hogy azt tartalmaznak-e.

Törölt nick Creative Commons License 2019.03.13 0 0 2357

ahogy gondolod :)

Előzmény: djuice (2356)
djuice Creative Commons License 2019.03.13 0 0 2356

Persze, biztos jól el lehet ebben a php-ben is kalandozni, de a kötegelt fájlkezelést kereséssel még fogalmam nincs hogy lehet benne megoldani.

De ha az a cél hogy csak ez mutassa meg a midik tartalmát egyenként megnyitva, akkor már egyszerűbb a Sekaijuba behajingálni mondjuk 20-asával mert az többet is meg tud nyitni és ott rögtön vizuálisan szűrhető és gyorsan bezárogatható ami nem szóló midi.

Ezzel eljátszogatok 100-200 midinél, de mikor 1000 van :) az olyan egész estés mozi ezzel is...

Előzmény: Törölt nick (2355)
Törölt nick Creative Commons License 2019.03.13 0 1 2355

A korábban Általad linkelt oldalon http://valentin.dasdeck.com/php/midi/downloads/ van egy program (mf2t.zip), ami szöveggé alakít egy midi-t (és vissza). Ezzel meg tudod nézni, hogy mi van a fájlban (ugyanezeket Zoltán programjában is látod, de ott sávonként, itt meg - gondolom -, ahogy a midiben tárolva van, egymás után.

 

Tulajdonképpen ez a szövegfájl is feldolgozható (szűrhetők ez alapján fájlok), ha egyértelműen tudni, hogy mit kell keresni/figyelni.

 

Előzmény: djuice (2354)
djuice Creative Commons License 2019.03.12 0 0 2354

Ezért is különbözik a szemléletem, mert a szóló zongora darabot én absz. zeneileg értem, nem technikailag, azaz ebben az esetben csak 1 hangszer használata lehetséges a midi fájlban és 1 csatornát használva.

 

El kell akkor gondolkodnom, hogy egy midi fájl betöltésekor mit is csinál tulkép egy seq.

Ezek szerint nincs eleve olyan struktúra az SMF-ben, ami valójában egy hangszerben vagy seq programban fizikailag van megvalósítva a szeparációra, hanem csak egy adatfolyam, amiben az egyes kódszakaszok (midi események) vannak csak deklarálva együvé tartozó értékekkel (pl. note on üzenet stb.), de lehet hogy azt utána egy teljesen más csatorna másik üzenete fogja időben követni és ezek teljes szkennelése után rak a seq megfelelő helyre sorrendbe rendezve mindent, amik együvé tartozóak? Ebből adódóan akkor így nem is lehet előre aktív track státuszról stb. beszélni, mert az már absz seq funkció, jól gondolom?

Ezeket előre nem tudván gondoltam én, hogy pl. lehetne úgy esetleg keresni vmit egy midi fájlban leszűréshez, hogy megnézetem tartalmaz-e 1 csatorna megnevezésnél többet és utána, hogy vannak-e note on üzenetek azon csatornán... Ezek szerint teljesen más elv szerint kéne keresni a track end és stb események miatt.

 

A szóló zongorás darabot meg nem úgy értem, hogy 1 midi fájlon belül van-e zongora szóló, hanem 200 midi fájl közt hogy találom meg pl. a Für Elise-t, ami egy szóló zongora darab elejétől végéig, más hangszerek nélkül, 1 midi csatornát vezérelten lejátszhatóan (és persze felvetten), ha pl. nem ismerem a címét (nyilván mást keresek, aminek nem tudom a címét). :)
De nem is akadok le én a csak zongora hangszínnél mint kérdés irányult rá, mert lehet az egy gitárra írt szóló mű is! Ezt jelenti a 200 közt 1-2 szóló hangszeres mű pontosabban. Tehát ezzel azt akarom mondani, olyan midi fájlt (fájlokat) akarok kiszűrni, ami 1 csatornát használ zenei eseményekre (note on/off üzenetek) és 1 prg.chg. található benne (ui. ezt gondolom egyértelmű mást kizáró kritériumnak). Ha ezzel szemben mondjuk másik 15 midi csatornára is benne szerepel a prg.chg. 0 zongora hangszín váltás, bankváltás, stb. pl. Rolandoknál ahogy mentenek "üres sávokra" tartozó információkat is SMF-be, az tényleg bukta, mert ilyen összetett keresést akkor kizárt, hogy a Totalcommander véghezvigyen, mely sysexeknél még egyértelműen működhetett.

 

 

Előzmény: zbacsko (2353)
zbacsko Creative Commons License 2019.03.12 0 1 2353

1. Nincs olyan bit/bájt, ami megmondja, hogy egy track aktív-e vagy sem. Azért nincs, mert egy player/sequencer számára nincs rá szükség.  Ugyanis egy program alapvetően midi event-ekkel dolgozik. Ha egy track tartalmaz event-eket, akkor azokat elüldi/lejátsza/megjeleníti. Ha nem tartalmaz, akkor nincs mit elküldeni/lejátszani/megjeleníteni, problem solved :) Tényleg ilyen egyszerű.

2. Tehát pl. a lejátszás szempontjából nincs különbség egy nem létező, és egy létező, de üres track között. De fájl szinten van különbség. Létezhet, és létezik is olyan midi fájl amelyik több üres tracket is tartalmaz. Lehet , hogy a Te példa 16 track-es sequencer-ed is alapra mindig elment 16 track-et akkor is, ha üresek.

3. A használt csatorna nem létezik magában, a használt csatorna mindig csak egy midi event részeként létezik (abban van kódolva). Tehát a csatornák nem track-ekhez, hanem csak konkrét midi üzenetekhez tartoznak.

 

De a lényeg:

Meg lehet mondani, hogy egy track üres-e vagy sem. Ez egy egyértelműen megválaszolható kérdés egy algoritmus számára. De persze ezzel Te nem lennél boldog, mert a legtöbb esetben az üres sem teljesen üres (általában minden üres track is tartalmaz legalább egy trackEnd meta event-et) . De még az is megválaszolható kérdés egy algoritmus számára, hogy melyik track-ek tartalmaznak nem csak meta és/vagy SysEx üzeneteket (hanem normál csatorna üzeneteket is).

Az viszont már egyáltalán nem egyértelműen megválaszolható egy algoritmus számára , hogy egy  midi fájlban "meg van-e bújva 1, 2 szóló zongorás darab".

 

Sokkal konkrétabb kritériumokat kell NEKED megfogalmazod: Pl:

1. Mit jelent a zongora? Csak a Program 0 (Acoustic Grand Piano) vagy a Program 3 (Honky-Tonk) is mehet még? És ezeken kívül még mi? 

2. Mit jelent az 1-2. Ha már 3,4,5 stb. track tartalmaz zongorát az már nem teljesíti a feltételeket?

Akkor sem, ha a  track-ek midi event-jei  ugyanazt  a csatornát használják?

3. Mit jelent a szóló? Ha bármilyen más hangszert is használ a midi fájl akkor már nem teljesíti a feltételeket? Akkor sem, ha a más hangszer csak ütős/dob?

 

Ne várd, hogy az ezekhez hasonló kérdéseket majd valami AI válaszolja meg neked. Neked kell egyértelművé tenned, hogy milyen feltételek mellett tekintesz valamit "szóló zongorás darabnak".

djuice Creative Commons License 2019.03.11 0 0 2352

Na újból:

Szóval én nem programozói és midifájl boncnok szemléletből nézem alapvetően mint laikus a dolgot. (Az más kérdés hogy utóbbiak is érdekelnek még.)

Én olyan hangszereken szocializálódtam, amikben ha volt sequencer, ráírták a specifikációs lapra hogy 16 track seq. Most az tök mindegy nekem, hogy ő képes 0-s és 1-es formátumban SMF-et írni és olvasni, az már tényleg informatikai adatkezelési oldal, meg hogy 65000 sáv lehetne elméletileg.

Csak annyi van kézzelfoghatóan, hogy egy hangszer amin jobb esetben 16 tracknek van dedikált gomb, mint pl. itt, de a trackek akár ua. a midi channelt is vezérelhetik ha úgy akarom, amúgy általában a 16 külön midi channelre állnak be gyárilag...

https://www.musicash.it/413/yamaha-mo6.jpg

 

Namost, ha van pl. 200 midim, amiben 1, 2 szóló zongorás darab van megbújva, nem tudom a címét de tudom hogy van, ahhoz ne kelljen már mindegyiket elindítani hogy azt a 2-t megtaláljam, csak erre szerettem volna valami ötletet, szemelőtt tartva a fenti koncepciót és hogy ehhez nem tudom mit kellene nézni a fájlokban (mondhatni, "merhogy teccik tudni, ideológiailag nem vagyok én olyan képzett ehhez!" :))), szóval a midik leírásában gőzöm se volt, van-e olyan bit, bájt stb, ami megmondja, hogy egy track használva van és ON állapotú-e, mint mondjuk egy Cubaset megnyitva ez látszik már grafikusan is.

Amúgy én az analóg rögzítés elvén elindulva úgy gondoltam, hogy ami midi csatorna nincs használva (kvázi ezzel külön seq. trackek) az nincs is tárolva a midi fájlban, csak az aktív csatorna/track dolgai.

 

Így körvonalazódik esetleg mennyire egyszerű, gyakorlati amúgy a kérdés mint probléma? :)

zbacsko Creative Commons License 2019.03.11 0 1 2351

Javítás: Ezt már a múltkor is rosszul írtam, a lehetséges trackek száma: 65535.A "trackek száma" mezőnek 65536 féle lehetséges értéke van , beleértve a 0-át (0-65535).

 

zbacsko Creative Commons License 2019.03.11 0 1 2350

Kiegészítés:

Annyit lehet biztosan mondani, hogy

1. Type 0 midi fájlok esetében csak 1 track van, ehhez nem kell tovább szkennelni a fájlt.

2. Type 1/2 midi fájlok esetében pedig hogy hány track-et tartalmaz a fájl (csak a header alapján, ehhez sem kell tovább szkennelni a fájlt).

Viszont nincs ilyen összefoglaló információ a header-ben sem a használt csatornákról, sem az egyéb event-ekről.

 

http://www.music.mcgill.ca/~ich/classes/mumt306/StandardMIDIfileformat.html#BM0_

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!