Roland Fantom S/X and Juno-G SysEx utilities
OTHER License
____
/ __/_______ _ __
/ /_/ ___/ _ \| |/_/
/ __(__ ) __/> <
/_/ /____/\___/_/|_|
v0.2
*** EXPERIMENTAL - USE AT YOUR OWN RISK ***
*** CURRENT VERSION TESTED ONLY WITH JUNO-G ***
Fsex (from Fantom SysEx) is a set of utilities to manipulate libraries and send patches to the Roland Fantom S, Fantom X and Juno-G, written to avoid rebooting to Windows every time I want to transfer patches from and to the synthesizer.
The name is inspired by the Virus SysEx dump utility, vsex.
Note: Fsex is currently under development and was only tested with the Juno-G, but should work with other devices.
Get the latest version using:
$ git clone http://helllabs.org/git/fsex.git
Send comments and patches to [email protected]
Linux kernels 2.6.22 and earlier require a patch to properly recognize the Juno-G. Kernels 2.6.23 and later should have Juno-G support already included. See linux-2.6.21-junog.patch for further information. Apply the patch with:
Certain operations require the ALSA MIDI port address where the synthesizer is connected in client:port format. The address can be obtained using the "aconnect" utility:
$ aconnect -o client 14: 'Midi Through' [type=kernel] 0 'Midi Through Port-0' client 20: 'Juno-G' [type=kernel] 0 'Juno-G MIDI 1 '
In this case the address of the Juno-G MIDI port is 20:0 or Juno-G:0
-----------------------------[ flib examples ]-------------------------------
flib can be used to list the contents of a .jgl/fxl/fsl file. To do so, run it with the -l parameter. The list of patches to show can be specified, the default is to show all patches.
$ flib -l XV_Collection.jgl:1,42,350-352
Patches from XV_Collection.jgl:
Pat# Cat Patch name M/P Tone Waveform 1 Waveform 2 Waveform 3 Waveform 4
0001 PNO Standard Pno P -2-- (unset) JD Piano A (unset) (unset) 0042 KEY Clavicembalo P 1234 Reg.Clav A Reg.Clav C Reg.Clav C Reg.Clav C 0350 PLS Albion P 12-- Female Ahs Female Oos (unset) (unset) 0351 PLS Running Pad P 1234 TinyBellWa SBF Vox A D-50 Bell Warm Pad A 0352 PLS Stepped Pad P 1234 Super Saw Super Saw JD Fine Wi SBF Vox A
You can also specify categories in the patch list, e.g. list only Combination and Beat&Groove patches.
$ flib -l XV_Collection.jgl:CMB,BTS
Patches from XV_Collection.jgl:
Pat# Cat Patch name M/P Part Waveform 1 Waveform 2 Waveform 3 Waveform 4
0013 CMB Bs/Pno+Brs P 1234 Ac.Pno f A Finger Bs Slap +Pull Tp Section 0117 CMB Lounge Gig P 1-34 Clean TC A (unset) Fretlss Sf Flute B 0250 CMB Hillbillys P 1234 Harmonica Violin A Banjo C Ac.Bass C 0500 CMB Blue Notes P 1234 Ac.Bass C Wide Sax B Wide Sax C Ride Cymba 0728 CMB Suite Combo P 1234 Jazz Doos Female Oos Fretlss Sf Vibraphone 1022 BTS TempoMadness P 1234 TR909 Kick TR808 CHH TR909 Clap TR909 Kick 1023 CMB GenerationXV P 1234 Warm Pad A Dyno EP mp Car Pass E.Gtr Harm 1024 CMB Wedding Gig P 1234 SA E.Piano Fretlss Sf Nylon Gtr2 Full Str A
flib can manipulate librarian files in different ways such as splitting a library or merging data from different libraries.
$ flib -e XV_Collection.jgl:1,3 Sineshine.jgl:!1,2,6-16 New.jgl
Extract patch from XV_Collection.jgl: 0001 PNO Standard Pno 0003 PNO Classique
Extract patch from Sineshine.jgl: 0003 SBS Vintage Bs 1 0004 PLS VocoBassline 0005 BTS OldschoolHip
Create new library: New.jgl
$ flib -l New.jgl
Patches from New.jgl:
Pat# Cat Patch name M/P Part Waveform 1 Waveform 2 Waveform 3 Waveform 4
0001 PNO Standard Pno P -2-- (unset) JD Piano A (unset) (unset) 0002 PNO Classique P 12-- Ac.Pno f A JD Piano A (unset) (unset) 0003 SBS Vintage Bs 1 m 12-- Juno Sqr H Juno Saw H Juno Saw H Juno Saw H 0004 PLS VocoBassline m 1234 Juno Saw H Juno Saw H Juno Saw H Juno Saw H 0005 BTS OldschoolHip m 1234 106 Bs56 Super Saw Sine White Nois
-----------------------------[ fsex examples ]-------------------------------
You can send a patch from a .jgl file to the Juno-G temporary patch area using the -s parameter:
$ fsex -a 20:0 -s XV_Collection.jgl:538
fsex can be invoked in a way similar to flib to retrieve patches from the synthesizer and save them in a library file. The bank names and patch numbers are specified in the same format as flib expects library file names:
$ fsex -r USER:2,40-42 PR-A:1-3 New.jgl
Receive patches from Juno-G:
USER:0002 PLS VocoBassline USER:0040 PLS Next Step USER:0041 SBS JP8 Seq Bass USER:0042 BTS RetroSonic 1 PR-A:0001 PNO Juno-G Grand PR-A:0002 PNO Bright Grand PR-A:0003 PNO Soft Grand
Create new library: New.jgl
fsex sends a identification request SysEx message if invoked with -D. This can be used later to issue a warning if the user attempts to send data from a library made for a different model. Currently family and model numbers are displayed as hex (it should be changed to a more descriptive text later).
$ fsex -D Send to MIDI address 20:0 Identification reply Device Id : 10 Manufacturer : Roland Family number : 15 02 Model number : 00 00 Version : 00 03 00 00
----------------------------[ fconv examples ]-------------------------------
fconv tries to convert libraries from different synths by matching waveform names. Patches using waveform names that don't match won't be converted correctly.
$ fconv -f --jgl SRX03AP5.fsl SRX03AP5.jgl
Patches from SRX03AP5.fsl:
0001 [United ! ] 3: Vl Sect. A R ( 420) ==> Vl Sect. A R ( 546) 4: Full Str A L ( 431) ==> Full Str A L ( 557) 0002 [Cool EP ] 2: Dyno Rhd mpB ( 36) ==> Dyno EP mp B ( 186) 0003 [Distorted B ] 2: Org Basic 1 ( 88) ==> Org Basic 1 ( 238) 0004 [Welcome Home] 3: Full Str B L ( 433) ==> Full Str B L ( 559) 0006 [FeedDa /Aft ] 4: E.Gtr Harm ( 201) ==> E.Gtr Harm ( 352) ...
$ flib --list SRX03AP5.jgl
Patches from SRX03AP5.jgl:
Pat# Cat Patch name M/P Tone Waveform 1 Waveform 2 Waveform 3 Waveform 4
0001 PNO United ! P 1234 SRX SRX Vl Sect. A Full Str A 0002 EP Cool EP P 12-- SRX Dyno EP mp (unset) (unset) 0003 ORG Distorted B P 12-- SRX Org Basic (unset) (unset) 0004 AGT Welcome Home P 1234 SRX SRX Full Str B SRX 0005 EGT Bark Guitar P 123- SRX SRX SRX (unset) 0006 DGT FeedDa /Aft P 12-4 SRX SRX SRX E.Gtr Harm ...