KATANA - Snhirsch's Katana MIDI Bridge for RPI / BeagleBone

Started by vtgearhead, December 26, 2016, 08:53:53 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

vtgearhead

I'm pleased to announce release of my Katana MIDI bridge software:

https://github.com/snhirsch/katana-midi-bridge

This code is functional, but may not be appropriate for non-technical users.  I have written up the installation procedure for both RaspberryPi and Beaglebone embedded computers.  This document was adapted from my Fender Mustang midi bridge and has been followed successfully by a handful of brave musicians.  I'll attempt to answer any issues opened on the GitHub project.  In a pinch, drop me PM here - but I'd rather converse in public so others can benefit.

sixeight

Great work, Steve. I don't have a Katana amp, but this bridge is excellent. The ability to store extra presets is a wonderful.

You should do a quick video demonstrating the features of the bridge.

whippinpost91850

Excellent, I have a Katana 100 combo and have been thinking of getting rid of it, but may keep it if I can store a couple more patches

vtgearhead

Yes, I thought that four user presets was a bit limiting.  The Katana bridge will let you store and retrieve up to 117 presets of your own.  The real interesting part will be to see what different users want for CC to sysex mappings.  It's very simple to implement these, but tedious work.  Better to wait for feedback from the community first.

I'll also be curious to see what folks think about my using the internal presets as effects palettes.  To me, it's an elegant solution for providing flexibility without the latency of writing bulk sysex messages.

Elantric

Give me 8 CTL Assignment slots that can function like the 8 CTRLs in GP-10 for FX assignments with 8 MIDI CC# controllers or morph between 2 effects from one expression pedal

And be able to map the three available expression pedals to three MIDI CC# controllers

vtgearhead

Quote from: Elantric on December 26, 2016, 04:52:53 PM
Give me 8 CTL Assignment slots that can function like the 8 CTRLs in GP-10 for FX assignments with 8 MIDI CC# controllers or morph between 2 effects from one expression pedal
I'm having a bit of trouble parsing that.  Can you stretch the explanation out a little bit?
Quote
And be able to map the three available expression pedals to three MIDI CC# controllers
Do you mean the three EFX on/off buttons?  Those are already mapped to CCs.


Elantric

The three expression pedals I'd like MIDI CC# Transmission or use as CTRL Assignment Sources

1 expression pedal jack on rear of the amp

2 more via a the GA-FC

Three EV-5 pedals as sources

And Eight Control Assignments for Katana FX control.
These are separate from the existing three way FX button switches on the amp.

The three FX foot switches on GA-FC can be used as CTRL Sources


Give me 8 CTL Assignment slots that can function like the 8 CTRLs in GP-10 for FX assignments with 8 MIDI CC# controllers or morph between 2 effects from one expression pedal

CodeSmart

Hi Snirsch, I think most people really like a CC# map covering the amp and effect settings, similar to the Fender floor thing that got expanded with your work on the MkII amps (which we put in a word document). On top of this as Elantric wants, some CC# numbers to setup the external physical controls into the aforementioned map of amp settings/effect settings.

Your code will probably do more than I had in mind (and have room fore) in the MIDX.
And note, I don't yet grasp everything until I get home working on my awaiting Katana head.

Nevertheless, your work and the hours spent, this is fantastic  :D
But I got more gear than I need...and I like it!

vtgearhead

Quote from: Elantric on December 26, 2016, 05:51:53 PM
The three expression pedals I'd like MIDI CC# Transmission or use as CTRL Assignment Sources

1 expression pedal jack on rear of the amp

2 more via a the GA-FC

Three EV-5 pedals as sources

And Eight Control Assignments for Katana FX control.
These are separate from the existing three way FX button switches on the amp.

The three FX foot switches on GA-FC can be used as CTRL Sources


Give me 8 CTL Assignment slots that can function like the 8 CTRLs in GP-10 for FX assignments with 8 MIDI CC# controllers or morph between 2 effects from one expression pedal

Still a bit puzzled on the footswitch part.  Can the GA-FC buttons currently be assigned as control sources?  I cannot find any information on how the GA-FC interacts with the amplifier.  If they cannot, the situation you are after will require external hardware or a dedicated MIDI controller.  I haven't seen any way to read/intercept/change the function of footswitch input.

The controller mapping scheme is certainly possible and would be a lot simpler than a mass mapping of CC --> sysex.  I don't have time to write a GUI tool for the purpose, but it should be possible to implement this through a text file where the user specifies mappings with descriptive terms.  For example (just throwing this out):

CC50 = Reverb:Level 0..100
CC50 = Echo:Level 100..0

This would enable a continuous variation of CC50 to fade from echo  (at 0) to reverb (at 100) 

vtgearhead

Quote from: CodeSmart on December 26, 2016, 10:00:52 PM
Hi Snirsch, I think most people really like a CC# map covering the amp and effect settings, similar to the Fender floor thing that got expanded with your work on the MkII amps (which we put in a word document). On top of this as Elantric wants, some CC# numbers to setup the external physical controls into the aforementioned map of amp settings/effect settings.

Your code will probably do more than I had in mind (and have room fore) in the MIDX.
And note, I don't yet grasp everything until I get home working on my awaiting Katana head.

Nevertheless, your work and the hours spent, this is fantastic  :D
Thanks, it was fun to do.

I certainly can do a bulk mapping of all internal parms to CCs, but my sense is that about 90% of this will never get used. 

Re-purposing of the physical controllers would be useful, but I don't think it's possible.  Still looking for documentation on how the GA-FC interacts with Katana amps. 

mchad


I have 2 Katana 100 1x12's. After some time fooling with both guitar pups and GK3 signals I think a dedicated FRFR combo for the GP10 will sound mighty. So a wet/dry/wet scenario where 'dry' is the GK3/GP10/FRFR combination. The Katanas will take the guitar pups signal after the pedal board. No effects from the Katanas...or maybe a touch of reverb.

So for example. Katana left/Roland KC amp (or some such) in the middle/Katana right. A blend pedal on the pedalboard to feed in the desired GP10 level.

I'm sure there's more scenarios out there but it's great fun just mulling through some options.

tmoll

This looks really interesting, but I'm not sure I am fully understanding how this bridge is intended to be used.
Can you explain in a way that a 5th grader can understand?
Am I correct that this software has no UI, but is intended to be used as a black box between the amp and some other (unspecified) device, where the device sends some MIDI command to the bridge, which the bridge interprets as a patch select / download command and sends that patch to the amp?
Is that the gist of it?
If so, how are the mappings implemented?
If I'm off base, please explain. As someone else suggested, a short video would be great.
Implementing an optional UI with one of the little touch screen displays on the Pi to operate as a stand alone controller for the amp might be useful.
Thanks, Tom

Scatabrain

Elantrics bridge is working great on a beaglebone. I use it with my FCB1010. It has been a couple of weeks and have had no problems at all. Super awesome. I can't see ever using the Kat100c without it.

Elantric

QuoteElantrics bridge is working great on a beaglebone.

Actually thats Steve Hirsch's Katana MIDI Bridge 
https://github.com/snhirsch/katana-midi-bridge
https://github.com/snhirsch/katana-midi-bridge/commits/master

QuoteI I use it with my FCB1010. It has been a couple of weeks and have had no problems at all. Super awesome. I can't see ever using the Kat100c without it.

Maybe you could post a description of all  steps and hardware involved in getting your setup  to work?

it will help others big time. 


We do have this Install Guide here
https://github.com/snhirsch/katana-midi-bridge/wiki/Install

vtgearhead

Quote from: Scatabrain on February 08, 2017, 07:26:44 PM
Elantrics bridge is working great on a beaglebone. I use it with my FCB1010. It has been a couple of weeks and have had no problems at all. Super awesome. I can't see ever using the Kat100c without it.

That's really great news - thanks for the nice words!  Most of the coding was done over a long December break and I've had almost no time to work on it since rejoining the real world in January.  I still intend to expose most (maybe all if Robert shames me into it) deep settings over CC# but this will require a bunch of refactoring and gruntwork that I simply haven't had time for. 

carlb

So, correct me where I'm wrong:

Steve Hirsch's Katana Hodōkyō (Katana "Footbridge") takes cc messages from a foot controller (or other source) and translates them into Katana commands, via an 'expanded-patch' logic framework.

A small Linux-based hardware platform (Beaglebone or Raspberry PI), when loaded with Steve's embedded application (written in Python, the coolest-ever programming language), allows the foot controller to select patch banks, and then individual patches on those banks. When a patch is selected, the application sends the requisite commands to the Katana to change to whatever effects and amp models have been stored, and change the various settings of those effects and amp models.

Assuming I'm correct so far, my question: how  does a guitarist setup the patches desired? Setup the patch on the Katana controls, then send a "SAVE" type command via the foot controller?

Another question: Am I correct that it's MIDI input to the Linux-box? Is there a MIDI hardware interface module for the Beaglebone or the RPI toward that? (It would have to be USB-MIDI to the Katana ...)

And yet another question: why 117 patches? Although more than enough, that number seem odd (and not just mathematically). It is factorable by "3" ... (If I were a numerologist I'd ask, "What does this *mean?!*)
ES Les Paul, internal Roland GK
Boss SY-1000, Valeton Coral Amp pedal
Morningstar MC8 & MC6
QSC CP8 powered speaker

vtgearhead

Quote from: carlb on February 16, 2017, 11:13:59 AM
Steve Hirsch's Katana Hodōkyō (Katana "Footbridge") takes cc messages from a foot controller (or other source) and translates them into Katana commands, via an 'expanded-patch' logic framework.

It forwards any and all PC and CC messages that the Katana recognizes (there are a small number of these).  All others are subject to remapping once I fully implement the CC --> sysex mapping.  Codesmart has written a strawman proposal that I largely agree with.  Since there has been so little interest in my bridge code I have implemented only what I need, which is a mapping of CC#70 to volume.  As time permits I'll fill in the rest of Robert's spec (not rocket science, just need time).

Quote
A small Linux-based hardware platform (Beaglebone or Raspberry PI), when loaded with Steve's embedded application (written in Python, the coolest-ever programming language), allows the foot controller to select patch banks, and then individual patches on those banks. When a patch is selected, the application sends the requisite commands to the Katana to change to whatever effects and amp models have been stored, and change the various settings of those effects and amp models.

No banks in my scheme.  It's a flat range of PC #s.

Quote
Assuming I'm correct so far, my question: how  does a guitarist setup the patches desired? Setup the patch on the Katana controls, then send a "SAVE" type command via the foot controller?

Essentially.  I have it coded such that 3 CC#3 commands in < 2 seconds with value = 127 "arms" the save.  It stores the current state in the slot you specify by following up with a PC#.  Any other message disarms it.  After the settings are stored, it cycles the LEDs around the amp model knob as acknowledgement. 

Quote
Another question: Am I correct that it's MIDI input to the Linux-box? Is there a MIDI hardware interface module for the Beaglebone or the RPI toward that? (It would have to be USB-MIDI to the Katana ...)

You can use just about any quality USB <--> 5-pin MIDI converter between controller and computer.  I've had great success with the MidiSport 1x1, which is quite inexpensive.

Quote
And yet another question: why 117 patches? Although more than enough, that number seem odd (and not just mathematically). It is factorable by "3" ... (If I were a numerologist I'd ask, "What does this *mean?!*)

Heh. No magic.  It's the full MIDI data range of 127, less the first 10.  PC 0-4 are sent to the Katana, since it handles those directly.  I set aside 5-9 for future Katanas that may have more internal presets. 10-127 are for user virtual presets.

I need to stress again that this code is by no means complete.  Codesmart (who never needs sleep) will undoubtedly have the MIDX-20 firmware done before I complete the CC --> sysex implementation.  However, the MIDX does not have enough memory to do virtual presets.  I'm going to enhance the current logic to save and restore DSP effects in addition to front panel.  I had originally thought that would be too slow, but I now believe it will be workable.


sixeight

QuoteAnother question: Am I correct that it's MIDI input to the Linux-box? Is there a MIDI hardware interface module for the Beaglebone or the RPI toward that? (It would have to be USB-MIDI to the Katana ...)

This is a project I may do in the future. Build a board that can sit on top of an RPi with two midi ports and a 9v power input. Then have an enclosure designed that can be printed on a 3D printer. It would be an accesory to the VController, but could serve many other purposes as well, like running the Katana or Mustang bridge code...

But right now I am tied up with buidling  the Vcontroller....

vtgearhead

The Midisport 1x1 sells for $40 in the US.  Can you really produce an add-on that will be less expensive?

Elantric

QuoteIs there a MIDI hardware interface module for the Beaglebone or the RPI toward that?

Thats the nice thing about "USB Class Compliance" for specific make/models of USB <> MIDI adapter cables  - they work 100% on most current operating systems: (Windows, Macs, Linux, Android, IOS) and work with Beaglbone Green Wireless, and Raspberry Pi SBC's (Single Board Computers) (both have four USB 2.0 Host ports)



we list them here:

USB Class Compliant MIDI Cables for Mobile devices
https://www.vguitarforums.com/smf/index.php?topic=8393.msg60023#msg60023

carlb

" I have it coded such that 3 CC#3 commands in < 2 seconds with value = 127 "arms" the save.  It stores the current state in the slot you specify by following up with a PC#."

So, how does an existing foot controller (such as the FCB1010) work with the above ... ?

If I was going to jump into helping out (or more likely just end up mucking about), what would be the Beaglebone and design environment to get started? (I've done a bit of RPI before, program python for Cygwin, speak pretty fluent POSIX, etc.)
ES Les Paul, internal Roland GK
Boss SY-1000, Valeton Coral Amp pedal
Morningstar MC8 & MC6
QSC CP8 powered speaker

vtgearhead

Quote from: carlb on February 16, 2017, 02:07:52 PM
" I have it coded such that 3 CC#3 commands in < 2 seconds with value = 127 "arms" the save.  It stores the current state in the slot you specify by following up with a PC#."

So, how does an existing foot controller (such as the FCB1010) work with the above ... ?

Program one of the pedals as a momentary switch that sends CC#3, 127 when pressed.  After you have dialed in a sound you like:  Tap the switch 3x quickly.  Select the FCB1010 bank and preset where you want to store it.  If you've done this correctly, you'll see the moving lights.

I use the Uno chip and don't want to lose a stomp, so I've allocated the last preset on the FCB for this function.  It's a little less convenient but works out ok.

Quote
If I was going to jump into helping out (or more likely just end up mucking about), what would be the Beaglebone and design environment to get started? (I've done a bit of RPI before, program python for Cygwin, speak pretty fluent POSIX, etc.)

I'm partial to the Beaglebone Green wireless for convenience, but if you don't mind using an active USB hub the plain BBG is fine (it has only one USB port and is almost $20 cheaper).  The development environment is Debian Linux, so just 'apt get install' whatever you like. The bridge documentation explains setup, build and installation in detail:

https://github.com/snhirsch/katana-midi-bridge

CodeSmart

I've started to put code into the MIDX now.
Nothing is running yet but major bulk is compiled in my PC test thingy.
When the Katana initialization and real-time sniffer for manual changes of green/red/yellow button states etc. is in place things will go fast to copy over from the PC.

Steve there's a new version of my document with some minor changes. I'll send it to you later.
I don't want to show you any of my C code and tables until things looks like working good :P

But I got more gear than I need...and I like it!

sixeight

Quote from: snhirsch on February 16, 2017, 01:38:23 PM
The Midisport 1x1 sells for $40 in the US.  Can you really produce an add-on that will be less expensive?

Not cheaper but it will make it an easy to use package. It will have fewer wires and be more reliable...

carlb

Agree, a nice little plug-on board would be excellent. Definitely cool for projects. Midi, mosfet-relays , I/O-breakout ...
ES Les Paul, internal Roland GK
Boss SY-1000, Valeton Coral Amp pedal
Morningstar MC8 & MC6
QSC CP8 powered speaker