MIDIFOOT - DIY Midi controller

Started by potul, April 27, 2011, 04:11:28 PM

Previous topic - Next topic

potul

Hi All,

I just want to share with the forum a project I finished last year, but I had it undocumented until now. It is a MIDI controller with an LCD and 2 expression pedal inputs, based on a PIC 16f88.
It is really full-featured controller that can work in a secuencial mode (up-down midi program), or in a "user mode", where the user can assign up to 2 program changes (each with a different midi ch) and 2 CC messages (each with a diff midi ch) to each preset.

It has also some advanced features like the possibility to backup your presets to the PC using sysex messages, and restore them. I also provide a small app to modify or create presets and create sysex messages to send them to the device.
Another advanced feature is a bootloader that allows firmware updates via MIDI.



You can find all documentation including source code in my DIY blog here:

http://potulfx.blogspot.com/2011/04/midifoot.html

Unfortunately, the article in my blog is in spanish... if someone needs any explanation just let me know.

Regards,
Mat

Taylor

Amazing job!

I have a MIDI sound module I built, and if I can send a particular sysex message to it, I can unlock a lot more functionality in this unit. It seems like I could build something based on your project that would allow me to do this, right? I basically just need to save a single Sysex message and have a button to send it out of the output.

potul

My controller would maybe be an overkill for the job, but yes, you could leverage from it. I have a smaller project undocumented without LCD, no MIDI IN and only 2 buttons (UP/DOWN) that would probably fit better. And sending sysex message is simple to implement if you know what message needs to be sent. Let me know if you would be interested and I can hunt for the info in my hard drive and publish it.
Is this a one-time thing, or do you need to send this sysex everytime you use the unit?

Mat

Taylor

#3
That sounds great - if you get a chance I'd love to know more.

I think I need to send this message every time - basically, my box uses an old computer sound card with a midi voice unit. If I play it normally, it works like a standard general midi module, but I can send a sysex to unlock the "XG" sound set, which gives something like 400 more instruments, more effects, etc.

This is what I need to send, "XG System On" message:

F0,43,10,4C,00,00,7E,00,F7

But, you posted a wonderful build and I don't want to steal that thunder. I'm incredibly impressed by your work.

potul

Is it a standalone module or are you using a PC?

Taylor


potul

Interesting project... it would be an nice add-on to my Gutiar-to-MIDI box.

If you feel like you would like to start a project open a new topic and I can help there, I have some experience in MIDI devices using PICs. From what I understand you need a simple box with a button that sends a sysex message when pressed. It doesn't look complicated :). (do you have midi-in/through in your MIDI keyboard?)

Ice-9

That looks amazing. I might have to build one. Just looking at your docs now. :)
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

potul

Hi Folks

I just wanted to step by and comment one bug I recently found in my controller. I know at least 2 people from this forum has built it, so I though it would be useful for them.

I've been using the MidiFoot mainly in "normal mode", but this week when I tried some creative stuff using "user mode", I realized that the expression pedal midi channel is wrongly configured when in user mode. The issue statement is:

-When in "user mode", midi channel for the expression pedal is taken from the preset second CC message, not from the global setting.

So, even if you don't use the second CC message in a preset (set to off), be sure to configure the midi channel of it to the one you want to be used by the expression pedals.

Some might see this as a feature instead of a bug because it allows you to use different channels per preset... but this was not the intention. As soon as I have time and my development environtment works again, I will fix it and post the firmware. It's a simple change, it should not take much effort.

Regards,

Mat

scratch

I too am building the same XG 'Voice' project that Taylor mentioned ... and was looking for a controller project to go along with it. Right now just planning to use it with the G2M project and the Thomas Henry 'Sirius' MIDI metronome project.
Denis,
Nothing witty yet ...

juanmotta

#10
Hi this is my first post, i thinks, thanks for shearing this info!!! i want to know if this midi controller works in ableton live and amplitube 3? if so, what latency have when change the presets?

Thanks a lot

Juan

pd- i´m from Uruguay so i speak spanish too.

potul

It should work with whatever that can be controlled using program changes or CC messages. I'm not familiar with ableton live, but I would say it has to be compatible.
I haven't tried amplitube with it, but Guitar Rig works like a charm.
Latency is unexisting... I mean.... you will have the latency given by the software or hardware you want to control. I use it with a POD XT, and including the expression pedal I don't feel any delay in response.

swinginguitar

POTUL - this is a great project - well done! I've looked at the code off and on for a while now for inspiration on my own projects.

Would you care to share some insight on how your expression pedal calibration min/max thing works?

potul

From the top of my head, this is what min/max is doing.

When in calibration mode, the PIC reads the ADC continuosly and stores the min and max value. The idea is that the user does some full sweeps of the pedal, and we can know what is the voltage at the low and high positions. During calibration, the user can also reverse the pedal. This is storing a flag indicator that will be used afterwards.

These min/max values are stored and used when generating MIDI messages. The idea is to ensure that the the pedal is giving 0 in the lower position and 127 in the higher position. We read the ADC value and then do some math:

MIDI value = (ADC value-min) * 127 /(max-min)

In order to do this calc, there are some division and multiplication routines I took from someone in the net.

As you can see, this gives 0 when ADC value=min and 127 when ADC value = max.

If the reverse flag is enabled, when we do somthing like MIDI value = 127 - MIDI value

Although I'm not sure 100% of the calculations implemented in the code (I haven't reviewed it), I'm pretty sure this is the concept behind.

Let me know if you need more information

Mat

lmkv15

Hi,
Great project. I have it build. I also have boards for the project.
,


Uwe

karter2000

I'm definitely interested in a board.  How much shipped to Canada?  Do you have a build doc or BOM for the project?

Thanks!

potul

#16
Wow, very nice build Uwe. I love the enclosure, and very nice PCB as well.

How did you implement the midi through?

Regards


Mat

lmkv15

Hi Mat,
The picture was not the right pcb, i have it change. The picture was the first version with a bug ;D. The midi true is a standard application with 2 inverters from a HCT/LS/HC 7404 or 14. I wanted to make it as a kit, but that's pretty expensive, if only because the housing.
But i need your OK ;).

regards Uwe

lmkv15

Quote from: karter2000 on May 11, 2014, 04:47:17 PM
I'm definitely interested in a board.  How much shipped to Canada?  Do you have a build doc or BOM for the project?

Thanks!

Hi,
the shipping to canada cost approx 4€ as insured letter. The pcb 10€. I have at the moment not a build manual. But i can it make incl. a BOM. Sorry for my bad english but my school time is 40 years back. ;D

regards Uwe

karter2000

Quote from: lmkv15 on May 12, 2014, 09:00:31 AM
Quote from: karter2000 on May 11, 2014, 04:47:17 PM
I'm definitely interested in a board.  How much shipped to Canada?  Do you have a build doc or BOM for the project?

Thanks!

Hi,
the shipping to canada cost approx 4€ as insured letter. The pcb 10€. I have at the moment not a build manual. But i can it make incl. a BOM. Sorry for my bad english but my school time is 40 years back. ;D

regards Uwe

No problem, I'm still interested. If I have a schematic and BOM, then I should be able to get it working.  Where do I sent payment? I guess I would also need a preprogrammed processor chip as well.