Midi controllers for controlling bristol?

Help
Andrew C
2008-12-06
2013-05-23
  • Andrew C
    Andrew C
    2008-12-06

    Hi, Nick,

    Do you have any recommendations on midi controllers for controlling bristol synths such as (I swear to god, I love this emulation because it just screams 'simple' for a newbie in sound synthesis) the juno-6 (or the 60?)/hammond/korg polysix?

    Thanks,

    Andrew Coughlan

     
    • Nick Copeland
      Nick Copeland
      2008-12-06

      Yeah, it is pretty straightforward once you get it going, what you see is what you get, no menus, no having to configure the GUI or engine or anything. When it goes, it should go quite well.

      I don't have a recommendation for midi controllers specifically. I have an Oxygen M8 for when I am travelling and a Roland PCR-30 for reasons I cannot remember (it works but is too big to lug around and to small to be 'well playable'.

      Anyway, both work via USB with power as well which I like. Most of the emulations have a default GM-2 map for controls like envelope, filter and stuff. You can remap the controllers in bristol, the only gotcha is that you have to use aconnect (or similar) to link the midi device to 128:0 and 129:0, the second one is for the GUI which handles the mappings. After that, put your mouse in the control, press the middle mouse button, move the mid control and they will be linked up. Mappings will be saved when you save a memory however they are global to the synth, ie, there is not a copy per memory, something that I don't think would have made sense anyway.

      I was looking at some control surfaces such as the Novation Zero SL but I am not going to invest in one - there is some interesting work underway with open source controllers and I would prefer to follow their development. That is quite a long way off though.

      Regards.

       
    • Nick Copeland
      Nick Copeland
      2008-12-06

      Yeah, it is pretty straightforward once you get it going, what you see is what you get, no menus, no having to configure the GUI or engine or anything. When it goes, it should go quite well.

      I don't have a recommendation for midi controllers specifically. I have an Oxygen M8 for when I am travelling and a Roland PCR-30 for reasons I cannot remember (it works but is too big to lug around and to small to be 'well playable'.

      Anyway, both work via USB with power as well which I like. Most of the emulations have a default GM-2 map for controls like envelope, filter and stuff. You can remap the controllers in bristol, the only gotcha is that you have to use aconnect (or similar) to link the midi device to 128:0 and 129:0, the second one is for the GUI which handles the mappings. After that, put your mouse in the control, press the middle mouse button, move the mid control and they will be linked up. Mappings will be saved when you save a memory however they are global to the synth, ie, there is not a copy per memory, something that I don't think would have made sense anyway.

      I was looking at some control surfaces such as the Novation Zero SL but I am not going to invest in one - there is some interesting work underway with open source controllers and I would prefer to follow their development. That is quite a long way off though.

      Regards.

       
    • Andrew C
      Andrew C
      2008-12-07

      "Mappings will be saved when you save a memory however they are global to the synth, ie, there is not a copy per memory"

      not copy per memory but global?

      So if I were to set say the LFO depth in the Juno-6 emulation to a physical knob and then switch patches, the controller would still be set to the LFO depth on the Juno-6?

       
    • Nick Copeland
      Nick Copeland
      2008-12-07

      Each synth has a profile that contains things like the midi settings and the file for each synth (or emulation) is only for that emulation. They are saved in ${HOME}/.bristol/memory/profiles/<emulator>, you can edit them if you want, they are text files. There are some defaults for each emulator in the installation, usually in /usr/local/share/bristol/memory/profiles but you change that with ./configure when you build and install everything.

      The logic should go that the settings are only loaded at start time as the GUI initialises and never again. The file is saved whenever you save a memory and those settings will then be active next time you start the emulator. Any changes you make using controller mapping <Middle_button/Controller motion> would be lost if you exit without saving a memory. This is how I designed it - no options, just something like a logical implementation.

      The library should look for a private copy in ${HOME}/.bristol and if that fails look for a copy in the installation

      So, moving from one memory to another will not give you different globals. that could be programmed but I am not sure it would make sense. If you would like it then you would have to open a feature request and give some good arguments, I would roll it into a future release.

      Regards, nick.

       
    • Andrew C
      Andrew C
      2009-08-01

      Sorry to bring up this old thread again.

      I'm having a bit of trouble assigning my faders/knobs on my midi controller into the Polysix.

      All of the onboard slider/fader memories are related to controlling different software, such as GM-1 modules and some other popular PC/Mac software.

      When I connect my M-audio oxygen 61 to Brighton and move a slider, the filter freq moves.
      I reassign this to amp attack, then save the memory and exit.

      Upon starting up again, the fader seems to be set to filter freq again...
      Is this a bug with Bristol or am I just being silly with my midi controller?

      Andrew.

       
    • Nick Copeland
      Nick Copeland
      2009-08-03

      Hi Andrew,

      Bristol ships with some default mappings, these are in /usr/local/share/bristol/memory/profiles/poly and when you add mappings they are additive and the whole set of default and new mappings are saved in ~/.bristol/memory/profiles/poly. This was intentional but it may be counter intuitive. Many of the emulators ship with GM-2 controls supported, one of which will affect the filter cutoff. If you take this control and assign it to something else it will then change both of them.

      This ability to track both is called 'ganging', it is really, really useful on a mixing desk, less so on a synth.

      You might want to start with a clean slate. There are two options:

      1. Remove the defaults (both /usr/local/share and the ~/.bristol copies) and start again.
      2. If you request a mapping of the filter control, then move the controller it is supposed to remove the mapping. This will work better if there are only a few conflicts.

      Regards, nick

       
    • Andrew C
      Andrew C
      2009-08-03

      I can't appear to find the mappings:

      andrew@System1337:/usr/local/share/bristol$ ls
      bitmaps  memory
      andrew@System1337:/usr/local/share/bristol$ ls bitmaps/
      bicon.dia  bicon.svg  blueprints  buttons  digits  icon_bitmap.xbm  images  keys  knobs  newkeys  textures
      andrew@System1337:/usr/local/share/bristol$ ls memory/
      aks/        bit100/     cs80/       hammond/    memoryMoog/ obx/        poly800/    prophet52/  sidney/     trilogy/   
      arp2600/    bit99/      dx/         hammondB3/  mini/       obxa/       pro1/       realistic/  solina/     vox/       
      axxe/       bitone/     explorer/   juno/       mixer/      odyssey/    profiles/   rhodes/     sonic6/     voxM2/     
      bassmaker/  BME700/     granular/   jupiter8/   mono/       poly/       prophet/    roadrunner/ stratus/   
      andrew@System1337:/usr/local/share/bristol$ ls memory/
      aks      bassmaker  bitone  dx        hammond    jupiter8    mixer  obxa     poly800   prophet    rhodes      solina   trilogy
      arp2600  bit100     BME700  explorer  hammondB3  memoryMoog  mono   odyssey  pro1      prophet52  roadrunner  sonic6   vox
      axxe     bit99      cs80    granular  juno       mini        obx    poly     profiles  realistic  sidney      stratus  voxM2
      andrew@System1337:/usr/local/share/bristol$ ls memory/poly
      poly0.mem   poly11.mem  poly13.mem  poly21.mem  poly23.mem  poly25.mem  poly27.mem  poly31.mem  poly88.mem
      poly10.mem  poly12.mem  poly14.mem  poly22.mem  poly24.mem  poly26.mem  poly28.mem  poly32.mem

      and my /home/andrew/.bristol only has the memory directory.

      Andrew.

       
    • Nick Copeland
      Nick Copeland
      2009-08-03

      You have them:

      /usr/local/share/bristol/memory/profiles

      You might not have local ones but if you have saved any memory then the code should have created

      ${HOME}/.bristol/memory/profiles/poly

      This is your own copy, the ones in /usr/local are kind of like 'factory settings'.

      Not getting them after saving a memory is odd.

      regards, nick.

       
      • Andrew C
        Andrew C
        2009-08-03

        Hmm, maybe I'll just create the profiles directory in my $HOME/.bristol/memory/?

        Also, I'll just remove those files and try again with assigning the different hardware knobs.

        Thanks again,

        Andrew.

         
    • Andrew C
      Andrew C
      2009-08-03

      Oh sorry, I do have the profiles directory in my .bristol directory:
      andrew@System1337:~/.bristol/memory/profiles$ ls
      bassmaker  hammondB3  juno  mini  poly  pro1  realistic  sidney  trilogy  vox  voxM2

      I think they are being written to my home directory?

      Also this is the output of the .bristol/memory/profiles/poly file:

      CC: 5      0/32 16384
      CC: 7      0/0 16256
      CC: 7      0/33 16384
      CC: 71     0/14 16384
      CC: 72     0/27 16384
      CC: 72     0/23 16384
      CC: 73     0/20 16384
      CC: 73     0/24 16384
      CC: 74     0/13 16384
      CC: 75     0/25 16384
      CC: 75     0/21 16384
      CC: 76     0/9 774
      CC: 77     0/2 16384
      CC: 78     0/10 16384
      CC: 91     0/31 11868
      CC: 93     0/30 16384
      CC: 100    0/1 16384
      KM: ' 18 1
      KM: , 14 1
      KM: . 16 1
      KM: / 17 1
      KM: 0 51 0
      KM: 2 37 0
      KM: 3 39 0
      KM: 5 42 0
      KM: 6 44 0
      KM: 7 46 0
      KM: 9 49 0
      KM: = 54 0
      KM: [ 53 0
      KM: \ 0 1
      KM: ] 55 0
      KM: a 1 1
      KM: b 9 1
      KM: c 5 1
      KM: e 40 0
      KM: f 6 1
      KM: g 8 1
      KM: h 10 1
      KM: i 48 0
      KM: k 13 1
      KM: l 15 1
      KM: m 12 1
      KM: n 11 1
      KM: o 50 0
      KM: p 52 0
      KM: q 36 0
      KM: r 41 0
      KM: s 3 1
      KM: t 43 0
      KM: u 47 0
      KM: v 7 1
      KM: w 38 0
      KM: x 4 1
      KM: y 45 0
      KM: z 2 1

      Andrew.

       
    • Nick Copeland
      Nick Copeland
      2009-08-03

      Hi Andrew,

      That was a little crossposting! Anyway, good, you have the files. The 'KM' values are key mappings - these are for a US QWERTY keyboard to about 3 octaves but since it is all done with characters it should be reasonably easy to remap for AZERTY, etc. I don't think the mapping is 'clean', ie, it is based on utf-8 encoding, I don't have code for extended ISO-8859 languages (that is for future study if somebody really, really wants it).

      Anyway, the CC mappings are for MIDI continuous controllers: these will map the CC number to the GUI controller. The values are a little opaque by which I mean it is not evident which GUI device is being controlled: the 0/32 means 'GUI Panel zero, device thirtytwo'.

      If you are having problems with multiple GUI devices moving then just delete all the lines starting with 'CC' in your $HOME/.bristol/memory/profiles/poly,. or delete $HOME/.bristol/memory/profiles/poly or delete the directory $HOME/.bristol/memory/profiles

      Be careful not to delete $HOME/.bristol/memory - that would remove all the profiles but also all of your own private memories. Just so you understand how it works, if you save a memory I write it to the $HOME/.bristol/memory/poly directory. If you load a memory I first look in that directory and if it fails I look in the factory memories /usr/local/share/bristol/memory/poly

      Regards, nick.

       
      • Andrew C
        Andrew C
        2009-08-03

        Cool, yeah I don't really use the the qwerty keyboard to play Bristol. :)

        But yeah, I deleted all the mappings in usr/local/share/bristol/memory/profiles and my poly mapping in /home/andrew/.bristol/memory/profiles. And that seemed to work!

        Also, FWIW, I know this is a bit related to my hardware, but if I were to assign some of the knobs to different CCs on one 'preset' on my controller, would I technically be able to have about 2 or three more 'virtual knobs'?

        Also, did you get my e-mails?

        Andrew.

         
    • Nick Copeland
      Nick Copeland
      2009-08-03

      If you configured two CC to a single 'preset' on your controller it may end up sending out two CC messages when it moves, it becomes a bit like ganging in the GUI perhaps? Depends on how your controller works, for example, many of them have 'scenes' where your knob will send different CC codes in each scene. That can give you access to other controls quite quickly, just switch scene.

      I do get your email directly and I think I owe you at least one reply.

      kind regards, nick.

       
    • Nick Copeland
      Nick Copeland
      2009-08-03

      And just another word. If you reassign controller from filter to AMP then you are actually connecting it to both of them. You need to break the first connection:

      Middle-Mouse click on the Filter control
      move the knob

      Since this was the knob assigned by default then the GUI should remove the connection. You then do the same on the AMP and it assigns the CC to the AMP. If you don't break the existing connection then it will always assigned a new one which leads to a default 'ganging' behaviour.

      You could raise a change request for 'Exclusive Assignments', ie, disable ganging. I would be not averse to doing that. And I also owe you some code to test memory bank changes.

      Regards, nick.

       
    • Andrew C
      Andrew C
      2009-08-03

      Also, even after I removed the key mappings in those folders, the polysix appears to generate no sound. :/

      I'm running 0.40.5. I've yet to apply the patch you sent. :D

      Andrew.

       
    • Andrew C
      Andrew C
      2009-08-03

      I reinstalled 40.5, and the sound on the polysix works again... Perhaps there was something important relating to sound or something in the keymappings?

      Andrew.

       
    • Nick Copeland
      Nick Copeland
      2009-08-03

      If you delete the KM settings then you will probably lose the QWERTY tables and will not be able to play from your computer. A controller connected with aconnect should still work since it has nothing to do with those mappings,  it speaks to the engine directly. You should either remove the CC entries or perhaps delete the file - if you delete the files then I should still load a default keymap table.

      There is no default CC table, GM to local mapping cannot be generalised unfortunately.

      regards, nick

       
      • Andrew C
        Andrew C
        2009-08-03

        Nick,

        That's what I meant, I deleted the KMs in the folders and the polysix appeared to produce no sound... even when I did connect my controller up to bristol/brighton..

        Andrew.

         
    • Nick Copeland
      Nick Copeland
      2009-08-03

      Ah ok, you deleted all the files in the profiles directory? That is not supposed to result in no sound. Will need to reproduce and fix it, it sounds like a bug.

      Regards, nick

       
    • Andrew C
      Andrew C
      2009-08-03

      Out of interest, what midi messages do the switches (the LFO destination and sub-oscillator switches) on the polysix generate?

      Thanks,

      Andrew.

       
    • Nick Copeland
      Nick Copeland
      2009-08-03

      The switches in the GUI only generate bristol specific messages, they are formatted as "SLab" midi commands and sent over the TCP connection, not as any specific CC message that your O-61 is going to generate. If you want the buttons to respond to the Oxygen controllers you should only need to do the same as with any GUI controller:

      Mouse into the GUI button device
      Click Middle Mouse Button
      Push button on the controller

      After that the GUI button should track the controller. What happens is the Oxygen sends a MIDI message that is seen by the GUI. The GUI then sends the internally formatted message to the engine which affects the sound.

      Now for the gotchas.

      Bristol buttons do not quite adhere to the MIDI spec: 0 is 'off' and anything else is 'on'. MIDI specified at <64 is 'off' and >63 is 'on'. I truly don't want to change that, a button only has two values.

      You have to configure your Oxygen to correctly respect state, bristol cannot do that for you. Most control surface buttons are transient: you press them they go on, you release them they go off. That is a bad thing for a synth - many of them you will want to be active when you press them once and inactive if you press them again. You have to configure the control surface to do that for you, bristol can only recognise the 'on' or 'off' state from the MIDI message. MIDI has no concept of radio buttons, transient buttons or toggle buttons. Man, when mentioning radio buttons and MIDI response you will have to see what your results are. You may find some odd results.....

      Regards, nick.

       
      • Andrew C
        Andrew C
        2009-08-04

        Yeah, I see what you mean, I'll just have to try and work around it or something. :D

        Do MIDI messages not work too well with those radio style switches on the polysix such as the sub osc switch and the LFO destination switch?

        Andrew.

         
    • Nick Copeland
      Nick Copeland
      2009-08-04

      MIDI controls should work well with the polysix switches, but only if the MIDI control works the same way:

      If it is 'momentary' or 'transient' it sends an 'ON' messages when you press it and an 'OFF' message when you release it. Bristol recognises those messages. If the MIDI control is configured for 'PressOn' and 'PressOff' or what you might call 'Latching' functionality they will work better with many of the bristol controls. I suppose I could make the bristol latching switches only respond to 'ON' events and toggle their state with each 'ON' message, but that would break if you configured the MIDI controller to be latching too - you would have to press each button twice.

      What it comes down to is the MIDI controller response has to match the device type in bristol. I am pretty sure the Oxygen supports this, only because I have seen the same issue with my Oxygen M8. If the button LED only lights when you press it then you have an issue. If you configure the Oxygen to have the LED remain lit between presses the results will be better.

      regards, nick.

       
      • Andrew C
        Andrew C
        2009-08-05

        Hmm the polysix switches respond to the following midi messages

        127-121 - VCO
        120-64 VCF
        63-0 VCA