Guitarist interested in Linux solutions

Why not tell us a little bit about yourself? Welcome to the community!

Moderators: MattKingUSA, khz

Post Reply
snailboat
Established Member
Posts: 3
Joined: Wed Jul 17, 2019 5:38 am

Guitarist interested in Linux solutions

Post by snailboat »

Hi everyone,

I'm running an Arch distro for maybe 3 years, 6 or so years of Linux experience. I just got my first Roland GK-3/GR-55 guitar synth kit.

I'm looking for software and hardware advice on recording MIDI with this system. Do I need a dedicated sound card or audio interface on top of high-end equipment like the GR55?

What would you suggest for MIDI recording? LMMS? Audacity? Qtractor?
tavasti
Established Member
Posts: 2047
Joined: Tue Feb 16, 2016 6:56 am
Location: Kangasala, Finland
Has thanked: 369 times
Been thanked: 208 times
Contact:

Re: Guitarist interested in Linux solutions

Post by tavasti »

snailboat wrote:Hi everyone,

I'm running an Arch distro for maybe 3 years, 6 or so years of Linux experience. I just got my first Roland GK-3/GR-55 guitar synth kit.

I'm looking for software and hardware advice on recording MIDI with this system. Do I need a dedicated sound card or audio interface on top of high-end equipment like the GR55?

What would you suggest for MIDI recording? LMMS? Audacity? Qtractor?
I have GR-33. For recording midi data, you need some midi interface. Many usb audio interfaces have midi also. So if you are getting one for recording audio also, consider getting one which has also midi. I have Alesis io2 and io4, both having midi. If you don't have needs for audio recording (I bet you have), you can get also some simple usb-midi interface, like https://www.ebay.com/itm/USB-IN-OUT-MID ... 3720415986

For software, LMMS or Ardour work for recording midi data. And most likely most of the DAWs.

Linux veteran & Novice musician

Latest track: https://www.youtube.com/watch?v=ycVrgGtrBmM

merlyn
Established Member
Posts: 1392
Joined: Thu Oct 11, 2018 4:13 pm
Has thanked: 168 times
Been thanked: 247 times

Re: Guitarist interested in Linux solutions

Post by merlyn »

I've got a GR-55. It has USB to connect to the computer. On Linux the GR-55 is recognised as a MIDI input, audio is not recognised.

So you can use the built in USB for MIDI. For audio you will need to use the GR-55's analogue outs.

You may be interested in GR-55 FloorBoard :

https://sourceforge.net/projects/grfloorboard/

It does work with Linux, but some users have reported it works better using the Windows version and WINE. I've found the Linux version perfectly usable and bug free.
Drumfix
Established Member
Posts: 299
Joined: Mon Jan 26, 2009 5:15 pm
Been thanked: 11 times

Re: Guitarist interested in Linux solutions

Post by Drumfix »

Getting the audio part of a Roland/Boss USB device working is usually a matter of adding a quirk and recompiling the snd-usb-audio driver.

What is the output of "sudo lsusb -v" for this device ?
merlyn
Established Member
Posts: 1392
Joined: Thu Oct 11, 2018 4:13 pm
Has thanked: 168 times
Been thanked: 247 times

Re: Guitarist interested in Linux solutions

Post by merlyn »

Thanks for having a look Drumfix. Here it is :

Code: Select all

Bus 001 Device 006: ID 0582:0127 Roland Corp. GR-55
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol       255 
  bMaxPacketSize0        64
  idVendor           0x0582 Roland Corp.
  idProduct          0x0127 GR-55
  bcdDevice            0.01
  iManufacturer           1 Roland
  iProduct                2 GR-55
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00a7
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  06 24 f1 01 00 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 44 ac 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      1 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      1 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 07 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 44 ac 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3 
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  06 24 f1 02 02 02
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            8 Mass Storage
  bDeviceSubClass         6 SCSI
  bDeviceProtocol        80 Bulk-Only
  bMaxPacketSize0        64
  bNumConfigurations      0
Device Status:     0x0001
  Self Powered
snailboat
Established Member
Posts: 3
Joined: Wed Jul 17, 2019 5:38 am

Re: Guitarist interested in Linux solutions

Post by snailboat »

I am very interested in also getting audio input from the GR55 recognized as well. Would you mind helping merlyn with her output? I imagine I'll run in to the same issue and it would be helpful to work on it in this thread
Drumfix
Established Member
Posts: 299
Joined: Mon Jan 26, 2009 5:15 pm
Been thanked: 11 times

Re: Guitarist interested in Linux solutions

Post by Drumfix »

For a start, add this to the quirks-table.h:

Code: Select all

{
	/* Roland GR-55 */
	USB_DEVICE(0x0582, 0x0127),
	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
		.vendor_name = "Roland",
		.product_name = "GR-55",
		.ifnum = QUIRK_ANY_INTERFACE,
		.type = QUIRK_COMPOSITE,
		.data = (const struct snd_usb_audio_quirk[]) {
			{
				.ifnum = 0,
				.type = QUIRK_AUDIO_STANDARD_INTERFACE
			},
			{
				.ifnum = 1,
				.type = QUIRK_AUDIO_STANDARD_INTERFACE
			},
			{
				.ifnum = 2,
				.type = QUIRK_MIDI_FIXED_ENDPOINT,
				.data = & (const struct snd_usb_midi_endpoint_info) {
					.out_cables = 0x0001,
					.in_cables  = 0x0001
				}
			},
			{
				.ifnum = -1
			}
		}
	}
},
merlyn
Established Member
Posts: 1392
Joined: Thu Oct 11, 2018 4:13 pm
Has thanked: 168 times
Been thanked: 247 times

Re: Guitarist interested in Linux solutions

Post by merlyn »

OK, I did that and recompiled snd-usb-audio. I'm getting the same output from lsusb -v.
Drumfix
Established Member
Posts: 299
Joined: Mon Jan 26, 2009 5:15 pm
Been thanked: 11 times

Re: Guitarist interested in Linux solutions

Post by Drumfix »

Of course the output of lsusb -v doesn't change.

With the recompiled driver loaded you should see the GR-55 as audio device.

.. and this thread should be continued in the "Computer Related Hardware" section.
merlyn
Established Member
Posts: 1392
Joined: Thu Oct 11, 2018 4:13 pm
Has thanked: 168 times
Been thanked: 247 times

Re: Guitarist interested in Linux solutions

Post by merlyn »

@snailboat : Drumfix's quirk works.

So far I haven't managed to use the GR-55 as an input and my soundcard as an output. It works using the GR-55 as an input and an output -- in effect it becomes the soundcard.

A GR-55 is not a very well featured soundcard -- no mic preamps, no line inputs :)

If you only want to record guitar and synth (you can record straight guitar through the synth via 'normal pickup') then it's worth compiling the kernel module. There's a guide on how to do that here :

https://wiki.archlinux.org/index.php/Co ... nel_module
snailboat
Established Member
Posts: 3
Joined: Wed Jul 17, 2019 5:38 am

Re: Guitarist interested in Linux solutions

Post by snailboat »

Just as an aside, my GR-55 that i got in July 2019 was essentially recognized. I had to play with Jack2(qjackctl) and alsa to get the MIDI fed to Musescore. One of the tricks was playing with the GR-55 pedal settings to output poly to the midi out, (all strings sent on separate MIDI channels afaict) and again playing with qjackctl.


System-> Midi/usb

GTR-MIDI :

Switch: ON
Mode: POLY
Chromatic OFF
String CH: 1
Data thing: OFF
CTL PDL CC: 1
EXP: PDL CC: 11
Post Reply