can't get midi working

Help
2009-02-10
2013-05-23
  • Clinton Morse
    Clinton Morse
    2009-02-10

    I just installed the new version 0.30.5 and it compiled just fine.  ALSA/JACK/JACKMIDI all true

    started a b3 emulation with the -jack option

    Emulation plays ok from the gui (and sounds much better than older version) but can't control it from an external controller.  i've connected with aconnect and via qjackctrl.  keyboard plays other synths (hydrogen etc) fine.  But nothing to the bristol engine.  however I can start up a virtual keyboard and connect it in the same fashion and it works fine.  I've tried changing midi channels and a few other things but still no connection between hardware keyboard and the bristol synths.  also tried to set the -mididev option and still nothing.

    Any ideas?

    PS - No error messages so I haven't included any output.

    Its probably something really basic, but I didn't see anything in the other forum postings.

    Thanks.. Clint...

     
    • Nick Copeland
      Nick Copeland
      2009-02-10

      Hi Clint,

      Are you certain you are using Jack Midi? You say that Hydrogen works but I thought the Jack MIDI driver for Hydrogen was still in development. No big deal.

      Anyway, you should be able to type the following to start Bristol with Jack audio and ALSA midi:

      startBristol -b3 -jack

      If you use the 'aconnect -o' command it will list the following:

      client 14: 'Midi Through' [type=kernel]
          0 'Midi Through Port-0'
      client 128: 'bristol' [type=user]
          0 'bristol input   '
      client 129: 'brighton' [type=user]
          0 'brighton input  '

      This shows both the engine (bristol) and the GUI (brighton) as being midi sinks, by that I mean you can use aconnect to link them up to vkbd, or anything else that appears in 'aconnect -i'. The engine adds itself so that it can pick up midi run time information (key events, pitch wheel, etc), The GUI adds itself here so that you can drive it from a MIDI control surface.

      Now if you really want to use Jack MIDI you would have to give the following commands:

      startBristol -b3 -jack -midi jack

      That seems odd but Jack midi does not default along with jack audio. I do this on purpose, the ALSA midi interface is still generally widely used and my Jack MIDI code has not been thoroughly tested yet.

      If you are trying to get jack midi to work there should be 2 lines of text in the output window to this effect:

      Jack init waiting for audio thread OK status
      requested jack midi link up: 3
      could not set jmidi thread priority

      The last two lines indicate bristol is opening its jack midi thread, they will not be output if you are only using the ALSA midi thread.

      Let me know how you get on with Jack MIDI. I have only done rudimentary testing so you might needs some fixes in there. Its a reasonably straightforward interface, though, much like the Jack audio interface is also nice and clean.

      Hope that helps,
      Kind regards nick.

       
    • Clinton Morse
      Clinton Morse
      2009-02-10

      Sorry for any confusion, I'm using Jack for audio, ALSA for midi.  I generally use the qjackctrl connections window gui for connecting the ALSA midi. Once I get everything working I will probably create a startup script to do it from command line, but for now the gui is more convenient.

      I started with startBristol -jack -b3

      my midi port (Yamaha UX16) is 20:0 and bristol gets assigned to 130:0 & brighton to 131:0 respectively. timidity shows up on 128:0, nothing on 129:0 but bristol skips over that and goes to 130 by default.  I don't use timidity, it just shows up by default whenever I start qjackctrl.  Could this be an issue?  Doesn't seem like it should.

      Seems like it should be pretty straightforward (and probably is), I think I'm just missing something obvious.  But I get the same result whether I use the qjackcrtl window or aconnect.  Hopefully I'll have time to mess around with it a little later.

       
    • Nick Copeland
      Nick Copeland
      2009-02-10

      Hi Clint,

      What you are attempting to do should work off the bat. I have an Oxygen8 and it also appears as 20:0 and the Client ID of 130 and 131 are assigned to me by the driver on your system, I don't get to request them so using 'aconnect 20 130' should already be enough to get you working.

      Now I don't want to rule out some weirdness with these ID but I don't have qjackctrl installed to test with. Will see if I can emulate the issue by starting two independent bristol and see what happens then, this is be possible with:

      startBristol -b3 -jack -count 1024
      startBristol -mini -jack -count 1024 -port 5030

      Your parameter for -count will be different, that just has to match your jack configuration. The two above commands now give me the following 'aconnect -o' output:

      client 14: 'Midi Through' [type=kernel]
          0 'Midi Through Port-0'
      client 128: 'bristol' [type=user]
          0 'bristol input   '
      client 129: 'brighton' [type=user]
          0 'brighton input  '
      client 130: 'bristol' [type=user]
          0 'bristol input   '
      client 131: 'brighton' [type=user]
          0 'brighton input  '

      I can't test this with my Oxygen right now as I am at work but will have go later. The above configuration is pretty cool, no? You have two GUI and two engines running at the same time, both registered with a single jack using the -port number to differentiate them (this is my TCP control port ID). So, if you have multiple cores in your system you should be able to distribute the process load across them. The alternative of connecting two GUI to the same bristol engine would also work but then the rather heavy duty audio emulation is a single thread of execution running two synths, more efficient for single core systems than having multiple processes context switching all the time.

      Naturally, this is only 'cool' if it works, will try it later and since both of these methods (single multitimbral engine, multiengine or mixes of them) are explicitly a part of the architecture of bristol I am confident that any eventual coding issues can be resolved.

      As an aside you said that this release sounds better than the earlier ones - which other versions did you use? There were recently big changes to the filter code but the only hammond changes were quite old - that code was changed to be a better emulation of the gearbox.

      Regards,
      Nick.

       
    • Clinton Morse
      Clinton Morse
      2009-02-10

      solved it - went looking for the count parameter you mentioned in the qjackctrl setup menu (would that be the same as frames/period?) and noticed an option at the bottom to select the ALSA MIDI backend driver to use.  It was set to 'none' which worked for other software, but also had a 'raw' and 'seq' option.  raw didn't work, but tried seq and everything is fine now.  Hopefully the other software works with seq, but not the end of the world if it doesn't.  Bristol should keep me busy for a while...

      Time to play around.

      I initially tried the version that came with Ubuntu Studio 8.04, then compiled a newer version - probably last september?  Wasn't impressed with the sounds, levels were quite variable - had to jack a bunch of them up to get them to listening level.  So I set it aside.  Then I recently noted you had finally put some sound samples on the website, gave a listen and decided they sounded pretty good, so I must be doing something wrong and the quality of the default sounds is much better in the current emulations - could just be a matter of better output balancing and some decent default patches.

      I'm psyched to start playing with it and do some sound programming now.  Its been like 20 years since I was able to mess around with synths, so this is a great way to do it without requiring a room full of hardware and all of its attendant problems.

      Thanks...

       
    • Nick Copeland
      Nick Copeland
      2009-02-11

      Yes, the -count option to bristol is frames per period, perhaps I could add -frames as an alias to this option.

      Not sure about the MIDI backend driver type and whilst bristol does implement its own versions of each of these (seq with ALSA, raw with OSS /dev/midi0 type interfaces) I think you probably want to stay with seq since that is how I interpret the ALSA MIDI interface messages.

      The 8.04 version of bristol was very old and since September I have had one major rework of the signal gain levels. Prior to then the filter input signal was far too weak, this did not really affect the filtering too much but it did mean the general output signals were weak or variable and the EQ at resonance was dismal. I may still have to tweak some of the emulations but my target was to overdrive the filter input from each synth mixer section and also at the output stage so that both of these could be played to get the desired overall mix.

      The quality of the default sounds is admittedly still weak, and most the sounds from the website were patched together in minutes rather than heavily tailored (excepting the Mini and Polysix sound patch #22 but those were donated to me).

      Good luck. You may still find some oddities here and there but let me know and I will work on fixes. Release 0.30.5 was all about fixes from putting the website sounds together. I really should use bristol more than just develop it.....

      Nick.