News of the MidyAX2 - Pilot the AXE-FX with MIDI controllers (X-Touch, BCR2000, Guitar Wing, ...)

Thanks Muzza_Boogie .... but "mind boggling" I would not go that far. :D

Right now I have up the 32 "Control page" for 32 Effect Type. And each page can control up to 40 parameters (32 with many values, 8 with only 2 values). So up to 1280 parameters can be controlled. AXE-FX has around 1100.

Over the last two weeks, I have been working on the "Customization" feature. Up to now the parameter on each pages were "static", thought I could change them with specific program. The new features aim at allowing to change the parameters mapped to a specific encoder (potentiometer) buy just turning it. The actual mapped parameter will be displayed on the screen. Hopefully it will work by the end of the WE. The think is, I am struggling with the code that I initially produced for a "proof of concept" prototype. The best "error" that I did was misspelling "toggle" into "toogle" in the BCR2000 configuration language. Anyway I am happy to have got back into the project and I am able to fixe things in a less tense context than when I was trying to prove that the damn project could be viable.

By the way, at the beginning of the project I thought using one on these MIDI controller :
mackie-control-c4-483471.jpg


or

MCUproC4-xlarge.jpg


but they were expensive and Mackie has stopped making them.

The next feature I likely to work on is to add 4 Control Pages on which any parameter from any Effect can be put at any place. So one can place on a few Control page (or just one) the most useful param from different effects.
 
Customization feature implemented

Good news, I have managed to get the customization feature to work. So now I can reorganize the parameters on the Control page of an Effect Type. That way I can assign the 32 encoders of the BCR2000 to the most important param of say the AMP block and organize them in my own way. I still have to implement that feature for the 8 buttons on the top 8 encoders of the BCR2000. The only problem I have run into is that I seen to have stretched the limit of the uVGA display adapter. The program is to big and it makes the uVGA crash after 4 or 5 uses of the customization feature. I should be able to fix that by sliming down the code.

Next thing I'll be working on, is to have 4 "special" Control Pages (32 encoder + 8 switches) where parameters from different Effect Type can be controlled, and maybe a special page with all the Volume/Level parameters of a preset.
 
Sharing the code of the MidyAX

Since it is my 500 post on this forum and that I am becoming a "senior member" :D ( génial ), I have decided to celebrate that by making the code of the MidyAX available.

I am making the software of the MidyAX available on an Open Source basis. The source can be accessed here https://github.com/PALYGAP/MidyAX. The main code for the ARDUINO MEGA is here https://github.com/PALYGAP/MidyAX/tree/master/THE MidyAX for ARDUINO MEGA

The current version (v0.520) is still under construction but worked pretty well for all the features it currently provides. Some parts of the code are not perfects but I am working on improving it and making it more readable. I am also working on adding new features.

Quite a bit of it was written between 3am and 8am since I was (and am) working on it before going to work. Keep in mind that the code was conceived and written while building a "proof-of-concept" prototype while I was learning about the ARDUINO environment and getting back into programming. So yes sometime not perfect.

I hope that the code can be useful to other people. Hopefully some people can actually use it in a device similar to the MidyAX. I secretly wish that somebody could get interested by the project and join in the code building, but that does not look to likely since the whole project is quite hardware dependent (ARDUINO MEGA + uVGA + Flash Memory). Still, contributions are welcomed. The ARDUINO code could hopefully be used as a basis for other project.
 
Fixed the crash I had in the Customization feature. This got me to make one function out of two similar functions. The actual problem was that I had copied some code without properly adapting it. That code was trying to de-allocate memory that had already been de-allocated and the uVGA did not like it.

I am now moving on to set-up 4 Control Pages with 32 encoders + 8 switches that can be mapped to control any of the Effect Type parameter. In that way on can just stay on one Control Page and have control over its most important parameters. Should be useful in live set-up were one uses a preset adjusted in the home studio and needs to adapt it a bit to the live context.

I am thinking of making some videos about each functionality of the MidyAX so that it is cleared how it works and see what you guys think about it.
 
Wish I could help but this is way beyond me . I found a bcr2000 some time ago and Im looking forward to this . Thanks for all your hard work
 
Very nice, open source is always a good thing. Tried to read thru your code but alas, I'm not a C programmer and don't know the first thing about Arduino programming so most of it didn't make much sense to me. That said, as far as code goes it seems to have tons of "mega functions" that do a lot of stuff. It would be good to refactor that down to smaller chunks that do only one thing for much easier reading and maintaining.
 
Congratulation laxu you must be the first one to read the MidyAX code (not many visitors on GitHub stats).

OK there are big functions. Two are quite crucial since they handle SysEx received (ManageSystemExclusiveMessage) from the AXE-FX and CCs MIDI message received from the BCR2000 (BCR2000_ManageCC). They both have a "switch" statement and then "case"s that are like individual functions.

I am working hard to make the code simpler ... but still some way to go.:)
 
I am almost there with having "4 Control Pages with 32 encoders + 8 switches that can be mapped to control any of the Effect Type parameter". Actually I've made only 2 for these type of Control Pages that I have now called QuickAccess Pages.:D There's a few glitches to be fixed.

For this, I did a big clean-up of the communications from the ARDUINO to the uVGA (which was a bit of a mess). I also did quite a lot of variables, tables, constants renaming to make the code clearer ... but there still quite a bit to be done.

I got delayed last WE when my iMAC when down.:nightmare: It's now at the repair shop.

The ability to customize the QuickAccess page is still on the way but should be finished by the end of the WE. I will update the code of the MidyAX on GitHub in the same timing.

The WE after I should be able to make new demo videos, so that I can share the improvements that I've programmed.:D
 
Good news, the new QuickAccess pages are working fine and their customization is also working. Still a few things to polish off but it does the job.

Let's face it, I am quite happy to have got up to this point since I thought of implementing these features ages ago (a year at least).:frog:

So what's the use of 2 QuickAccess pages and being able to customize them? Well, I had a quick try at setting up a QA page to control the main parameters of the 2 AMP blocks. That way I was able to adjust the tones of the 2 amps in this dual amp set-up so that complement one another quite well (IMHO). I also set-up a page to control the DRIVE 1 and the AMP1 distortion and tone parameter. So it allow easy tweaking using real pots(encoders) en knobs.

I still have a few features that I'ld like to implement like :
- a Control Page with all the Level/Balance parameters of all the Effect Blocks
- a LOOPER page
- ...
if I have the time.

The other good news is that as I am clearing up the code as implement new features, it is getting easier to program useful/visible things.:D

Next I'll work on making some demo videos and post them on the forum. Hopefully next WE.

The code of the MidyAX on Github has been updated.
 
Last edited:
Just a quick update on what is going on with the project.

Like I mentioned in this posted http://forum.fractalaudio.com/axe-f...x-bcr2000-vga-screen-display.html#post1042921, i am now exploring new hardware solutions for the MidyAX. That means I am aiming to get it to work on Raspberry Pi or BeagleBone Black hardware.

I have chosen to use the Qt and RTMidi cross-platforms tools (LINUX/MAC/PC) to do the development and I have now set-up a Raspberry Pi, with the right LINUX environment, that can receive and send MIDI/SYSEX to the AXE-FX via USB (it can also talked to the BCR2000). I have also set-up a Linux virtual box on my iMAC, for faster development, which can also talk to the AXE-FX via MIDI/SysEX. I managed to get a basic program running that capture and display the MIDI/SYSEX message sent by the AXE-FX. So the basic infrastructure is there and I am now ready to go on porting/rewriting the MidyAX Software to the new environment.

Things have not been as fast as I wished cause I spend a few WE settling in my new place (an putting up furnitures). I should have more time in the coming weeks.
 
Last edited:
Well actually, I have read a few stuff on the WEB that seems to say that Qt programming environnement will be able to target ANDROID/iOS environment. I need to investigate that. May be the Qt program could work in these environnement but then the MIDI part would have to be rewritten since RTMIDI, AFAIK, does not work for Android or iOS.

Right now, there is a LEMUR (iOS/iPAD) template for the AXE-FX and there is also the AXE-PAD if you want to use a touchscreen to pilot the AXE-FX.

One thing I should also investigate at one point is the ability to use a WI-FI usb dongle on the RPi so that Android/iOS devices could talk to the RPi with say TouchOSC program of LEMUR. The idea would be that Wireless touch device are use to control virtual controller that talk standard OSC or MIDI and use the RPi WiFi-enabled to receive the Wi-Fi and translate/send the parameter controls to the AXE-FX. That would require yo build some sort of MIDI or OSC "API".
 
Last edited:
We need to finish adding midi support to Chrome and then apps can be written using Javascript, truly cross platform and updates happen auto magically ;-)
 
Yeah it's moving along but perhaps not at the speed I'd personally like :) (reaching consensus on a web API is hard) I'm not sure how much I can say but I think it is safe to assume that midi sequencer type functionality would have higher priority than what would be required for AxeFx. Maybe towards the end of the year things will be more fleshed out?
 
There are a couple of midi modules for Node.js (last time i checked there were many wrappers for rtmidi). Node.js running on RPI is something i would look into.
 
Node.js sounds like an interesting possibility. I'll have to look into it.

From node.js : "Node.js is a platform built on Chrome's JavaScript runtime". Looks like It won't do more than what Chrome API will do.

I found this node.js module :
node-midiA node.js wrapper for the RtMidi C++ library that provides realtime MIDI I/O. RtMidi supports Linux (ALSA & Jack), Macintosh OS X (CoreMidi), and Windows (Multimedia).
But then that is back to what RTMidi supports.

For Javascript , I am not sure how easy it is to program GUY and wether it supports OOP. Qt is fairly simple in term of GUY design and is OOP.
 
Yeah I don't think it's realistic right now but doing ui in html+javascript should be easy and then advanced bit twiddling and more resource intensive operations could be done in nacl (c++).
 
OK nacl looks like a salty tech. Didn't know about it. Seems there's a lot going on liked to the CHROME OS (and browser ?).

WHen I read : "Google Native Client (NaCl) is a sandboxing technology for running a subset of Intel x86, ARM or MIPS native code in a sandbox" from Google Native Client - Wikipedia, the free encyclopedia, It did not sound to good to me .

But then I read "To date, Quake,[SUP][9][/SUP] XaoS, Battle for Wesnoth,[SUP][10][/SUP] Doom,[SUP][11][/SUP] Lara Croft and the Guardian of Light[SUP][12][/SUP] and MAME, as well as the sound processing system Csound, have been ported to Native Client."

One good thing is that the developpers did not forget to add PEPPER Google Native Client - Wikipedia, the free encyclopedia.
 
Back
Top Bottom