Otázka:
Jaký je nejúčinnější způsob zpětného inženýrství formátu SysEx pro moji starou Yamahu CS1x
Mats Wiklander
2011-11-13 16:15:24 UTC
view on stackexchange narkive permalink

Nedávno jsem dal svůj starý Yamaha CS1x zpět do provozu a uvědomil jsem si, že svět se posunul dál, pokud jde o softwarovou podporu pro toto modré zvíře.

Takže jsem uvažoval o napsání softwarového nástroje pro úpravy oprav a rychle jsem narazil na potíže. Pokud vím, není k dispozici žádná dokumentace o formátu výpisu patchů SysEx.

Jaký je nejúčinnější a nejchybnější způsob zpětného zpracování formátu výpisu patchů SysEx?

Má někdo udělal něco podobného a jaký přístup fungoval nejlépe?

Dva odpovědi:
datageist
2011-11-14 10:25:29 UTC
view on stackexchange narkive permalink

Krátká (bolestivá) odpověď je začít s výchozí opravou, měnit parametry po jednom a prohlížet hexadecimální výpisy, abyste zjistili, co se změnilo ve výstupu. Pokud máte seznam parametrů, které vám nejvíce záleží na úpravách, začněte s nimi, protože pak rychle spustíte něco , které má částečnou podporu. Poté můžete přidat více parametrů v průběhu jejich identifikace.

Chcete-li začít konkrétně:

  1. Vypište výchozí opravu.
  2. Změňte a jeden parametr a poté jej vypustit.
  3. Pomocí výchozí opravy jako šablony vytvořte editor, který vám umožní vybrat buď výchozí hodnotu, nebo to, na co jste tuto hodnotu změnili.
  4. Změňte tento parametr na jeho maximální / minimální hodnoty a pro ně vypište opravy. Doufejme, že vám poskytneme dostatek informací, abyste mohli plně upravit jeden parametr.
  5. Podle potřeby opakujte.

Některé parametry mohou být bitová pole, některé mohou být jedno nebo dva bajty atd. Bude užitečné mít dokumentaci pro obecný formát sysexu, protože některé malé části budou diktovány touto specifikací (na rozdíl od Yamahy specifické). Pokud najdete dokumentaci k nějakému jinému vybavení Yamaha (zejména něco, co vyšlo ve stejném časovém období), může vám poskytnout pohled na to, jak mají tendenci navrhovat formáty jako společnost. Pokud nemůžete najít něco od Yamahy, může vám pomoci i přečtení dokumentace formátu sysex pro jinou společnost.

Podívejte se například na hexdump pár oprav z archivu Planet Groove, můžeme určit několik věcí pouhou kontrolou.

Yamaha Patch Hex Dump

Z pohledu na midi spec a obě tyto opravy vypadá, že všechny opravy budou začínat 0xf0 a končit 0xf7 . Kromě toho 0x43 (který následuje za 0xf0 ) je ID výrobce společnosti Yamaha.

  Tabulka 2: Seznam rozšířených stavových bajtů
Binární | Hex | Funkce Dec 2.bajt 3.bajt o více datových bajtů a končící na EOX.  

I když se jedná pouze o dvě ukázkové opravy, je velká šance, že formát opravy má vždy sedm sysexových zpráv v pořadí (každá začínající / končící 0xf0 0x43 0x00 0x4b 0x00 / 0xf7 ), které mají vždy stejnou délku. Úkolem je pouze postupovat podle výše uvedeného postupu k obrácení jednotlivých parametrů.

Několik dalších pozorování:

  • Vypadá to, že prvních pár bajtů po každé hlavičce souvisí s délkou každé zprávy (tj. 0x2e , 0x17 , 0x09 , 0x29 , 0x29 , 0x29 , 0x29 , každý následuje 0x60 ), ale nejsem si úplně jistý, jaký je to vztah. Pokud pole vždy zůstanou stejně dlouhá, dobrá zpráva je, že na tom opravdu nezáleží.

  • Vypadá to, že název opravy má vždy osm znaků ASCII a je vždy na stejném místě, takže první verze holých kostí editor by to mohl prostě povolit.

  • Jedno z polí v každé zprávě může být kontrolním součtem této zprávy. Pokud se pokusíte vytvořit editor pro název opravy a výsledná oprava se nenačte, může to být problém. Pokud k tomu dojde, zkuste to ještě otestovat, zkuste změnit některý binární parametr ve výchozí záplatě (tj. Možnost zapnutí / vypnutí) a zjistěte, zda se změní pouze jeden lokalizovaný bit / bajt nebo zda se změní dva [nelokalizované] bajty. Pokud existuje kontrolní součet, je pravděpodobně nejlepší najít dokumentaci Yamahy k nějakému jinému zařízení. Kromě toho je v tomto dokumentu [pdf] popis kontrolního součtu Roland, který vás přinejmenším provede pokusem uhodnout, jak to funguje.

Celý proces může být relativně snadný nebo brutální, ale je to dobrý způsob, jak začít.

To může nebo nemusí mít také některé užitečné informace: http://search.cpan.org/~hayashi/Win32API-MIDI-0.05/MIDI/SysEX/Yamaha.pm
Velmi zajímavý příspěvek a spousta cenných informací. Mnohokrát děkuji.
Wouter van Nifterick
2012-04-22 23:37:23 UTC
view on stackexchange narkive permalink

Neobtěžujte reverzní inženýrství. Stačí se podívat na konec příručky pro majitele. Je tam vše.

Tato příručka je nutností, pokud máte v plánu napsat editora. Google pro „cs1x návod k použití“. Právě jsem to udělal a toto se objevilo jako první: http://www.synthfool.com/docs/Yamaha/CS_Series/Yamaha%20CS-1X%20Owners%20Manual.pdf

Poznámka: Nevlastním cs1x, ale jsem autorem editorů pro různé syntezátory Yamaha (YS100, B200, DX21, FS1-R). Yamaha vždy dokumentuje každý bit, který lze ovládat. Někdy potřebujete jen malé reverzní inženýrství, abyste zjistili přesný význam hodnot a převedli je na hodnoty, které jsou uživatelům snadno srozumitelné (Hertz, Decibel, ...).

Příručka je k dispozici také na Yamaha.com.
Zajímalo by mě, kde jste našli dokumentaci Sysex k FS1R? Uživatelská příručka je pro Yamahu neobvykle lehká a obsahuje ještě méně technických informací než příručka DX200.
Vidím, že sysex doc pro FS1R je k dispozici na yamaha.co.jp, ale ne na americkém webu.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...