Zpracování MIDI eventu Time Signature

Klavíry, keyboardy, digitální piana, syntezátory, ...
Odpovědět
Petr13
Příspěvky: 240
Registrován: 31.01.2016 14:10

Zpracování MIDI eventu Time Signature

Příspěvek od Petr13 » 23.06.2022 7:50

Píšu program na zpracování midi souborů a řeším, možná hypotetický, problém, k němuž jsem nenašel informace v midi standardu. Ten program má zobrazovat takty. Délka taktu je uvedena v eventu TimeSignatur, třeba že je 4/4 nebo 6/8 a podobně. Takže stačí odpočítat správný počet dob a vím, kde začíná další takt. Je to jednoduché do chvíle, kdy je TimeSignature uveden přesně na začátku taktu. Ale co když se event TimeSignature objeví uprostřed taktu?

Imho nejlepší by bylo, kdyby to bylo zakázáno, ale standard to nezakazuje a technicky to možné je. Jak to potom ošetřit? Uplatnit ten event ještě na stávající takt nebo až ten příští? Nebo to nějak zaokrouhlovat? Je jasné, že když se TimeSignature objeví až ke konci taktu, třeba u 4/4 taktu ve čtvrté době, tak už ani nepůjde na stávající takt uplatnit změna na 2/4 takt. Ale zase když se tato změna objeví jen pár ticků po začátku taktu, což jsou milisekundy, tak to může být bráno jen jako nepřesnost časování s tím, že by se to ještě mělo uplatnit na stávající takt. Takže si umím představit třeba pravidlo, že pokud se TimeSignature objeví během první doby, aplikuje se ještě na takt, kde se event vyskytl.

Nevím s jakou přesností různé sw a hw nástroje tyto eventy do midi umísťují a zda řeším něco, co je běžné, vzácné nebo nenastává vůbec. Zatím nemám nástroj, kterým bych mohl projet pár stovek midi souborů, abych si mohl udělat alespoň nějakou statistiku. Neexistuje nějaký úzus, jak toto ošetřit?

Uživatelský avatar
Čavli
Příspěvky: 881
Registrován: 16.03.2014 23:51

Re: Zpracování MIDI eventu Time Signature

Příspěvek od Čavli » 23.06.2022 9:20

To asi nebude dotaz na muzikanty, ale spíš do nějakého vývojářského fóra ...
╭╭(╭⊚‿⊚╮)╮╮

Uživatelský avatar
pavlii
Globální moderátor
Příspěvky: 6852
Registrován: 2.04.2009 11:47
Skype: studio_kappka
Bydliště: Hostivice
Kontaktovat uživatele:

Re: Zpracování MIDI eventu Time Signature

Příspěvek od pavlii » 23.06.2022 11:11

Tak. Pokud to jednoznačně nevymezuje MIDI norma, tak je to o implementaci příslušného MIDI zařízení. Myslím (ale zase tolik jsem s tempostopou v Cubase nekouzlil), že jakmile je event zachycen, je zpracován. Ono mě by se to jevilo i jako víc logické (tady není nutno dělat žádné věci na straně MIDI příjmu tudíž není důvod posílat takový event v jakkoli krátkém předstihu před bodem platnosti).

Event je vždy umisťován s takovou přesností, jakou umožňuje rozlišení v ticích daného MIDI nástroje. Obvykle se to dá najít pod "PPQN" ("pulse per quarter note") nebo "MIDI resolution" apod.

Samozřejmě není lichá ani varianta naznačená Petr13.

P.

EDIT: jestli jsem nic nepřehlédl, tak fyzicky se jedná o SysEx zprávy - a ty jsou zde dvě možné: Immediate (tj. hned při nejbližším synchrotiku) a Delayed (od následujícího taktu).
Naposledy upravil(a) pavlii dne 23.06.2022 11:25, celkem upraveno 3 x.
Obrázek
Skype: studio_kappka
home recording: Cubase Pro 11, WaveLab 10
Dynaudio BM6 + A500, Steinberg UR824

Petr13
Příspěvky: 240
Registrován: 31.01.2016 14:10

Re: Zpracování MIDI eventu Time Signature

Příspěvek od Petr13 » 23.06.2022 12:18

Time Signature je standardní meta-event (tj. určený pro midi soubory) FF 58 (FF 58 04 nn dd cc bb). Neřeším realtime komunikaci, ale zpracování midi souboru.

Co se týče přesnosti, nejde mi o přesnost reálného času, který zde nehraje žádnou roli. Jde mi o přesnost v rámci ticků. Tj. shodnost ticku začátku taktu a ticku eventu Time Signature a nakolik na to mohu spoléhat. Zatím to řeším tak, že změnu TS zohledňuji až v novém eventu a mám mentální poznámku, že když mi program bude ukazovat špatně začátky taktů po změně TS, bude to první místo, které budu zkoumat.

Uživatelský avatar
pavlii
Globální moderátor
Příspěvky: 6852
Registrován: 2.04.2009 11:47
Skype: studio_kappka
Bydliště: Hostivice
Kontaktovat uživatele:

Re: Zpracování MIDI eventu Time Signature

Příspěvek od pavlii » 23.06.2022 14:26

Zajímavé, v MIDI dokumentaci jsem na Signature text narazil až u SysEx. Ale neprohlížel jsem různé Add-ons, pouze základní a rozšířenou verzi. Taky mě to udivilo, ale nemám dneska moc času zjišťovat, kde je chyba :-D

P.
Obrázek
Skype: studio_kappka
home recording: Cubase Pro 11, WaveLab 10
Dynaudio BM6 + A500, Steinberg UR824

Odpovědět

Zpět na „Klávesové nástroje a syntezátory“