fsex

Roland Fantom S/X and Juno-G SysEx utilities

OTHER License

Stars
5
		    ____
		   / __/_______  _  __
		  / /_/ ___/ _ \| |/_/
		 / __(__  )  __/>  <
		/_/ /____/\___/_/|_|

			 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]

Kernel patch

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:

cd /usr/src/linux-${version}

patch -p1 < linux-2.6.21-junog.patch

ALSA MIDI client

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 ]-------------------------------

Listing patches from a librarian file

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

  • XV_Collection.jgl: Juno-G librarian file (1024 patches)

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

  • xv_collection.jgl: Juno-G librarian file (1024 patches)

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

Extracting, deleting and merging patches

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

  • XV_Collection.jgl: Juno-G librarian file (1024 patches)
  • Sineshine.jgl: Juno-G librarian file (16 patches)

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

  • New.jgl: Juno-G librarian file (5 patches)

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 ]-------------------------------

Sending a patch via SysEx

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

  • XV_Collection: Juno-G librarian file (1024 patches)
    Send to MIDI address 20:0
    Send patch 0538: PhazeWahClav (KEY)

Receive a patch via SysEx

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

  • USER: 128 patches
  • PR-A: 128 patches
    Send to MIDI address 20:0

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

Request identification

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 ]-------------------------------

Convert a library from Fantom-S to Juno-G

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

  • SRX03AP5.fsl: Fantom-S library file (128 patches)

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

  • asd.jgl: Juno-G library file (128 patches)

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 ...