Skip to content

cmatsuoka/fsex

Repository files navigation

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

				 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 cmatsuoka@gmail.com


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

About

Roland Fantom S/X and Juno-G SysEx utilities

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages