DIY Midi-Footcontroller .. With Tuner AND Looper

  • To the OP, thanks so much for the code. I've been wondering how to access the looper, and it's nice to see you can through midi. Will definitely try to put this together when I get the time.

  • Hi,
    i will answer that, when im back home next week.
    i m just relaxing on the beach in italy right now :)
    A guitar player here in a beach bar playes a kemper - its everywhere!! :)


    martin


  • What gear are you using to send the commands? Are you programming an existing device or writing your own code in an arduino?


  • What gear are you using to send the commands? Are you programming an existing device or writing your own code in an arduino?


    Hi


    I building arduino controller.


    Edited 3 times, last by MirekGR10 ().

  • From a brief look at the code, this section:



    ...appears to send the Undo command 0x62, 0x5D, then send the Rec/Play command 0x62, 0x58 1mS later. Since the value of the last message is 0x01, the Kemper will think both the Undo and Rec/Play are pressed and held down at the same time. I did not see where the Release values for the Undo was sent later in the code, so maybe the Kemper is getting a bit confused, thinking the Undo button is still held down while the Rec/Play is being toggled.


    Here is an example of what I did in my code. It is simple and assumes that only one button is pressed at a time, and a pressed button will be released before another is pressed. It has worked well so far.



    Hope all this helps!

    Edited 4 times, last by MKB ().

  • Thank you for reply.


    But ,Now I made short sketch


    If I change preset on KPA before start rec , horrible feedback is still there.


    Send 1 on press and 0 release is even worse.

    BUT if I change preset before start recording,only!!!

    Edited 5 times, last by MirekGR10 ().

  • Very cool DIY foot controller.


    I'm also trying to build one, and you code help me a lot, thank you for sharing. I didn't know anything about KPAstream, it simplifies my code a lot.


    I have one question though. How did you initialize stomp states on controller at first start?


    Thanks

  • Thanks,


    I don´t :) .. all my stomp-leds are off at first start... and every button sends the "on" command for the stomp-box at the very first time pressing it. if a stomp on the kpa is allready on, it doesn´t change, when switching it on on my controller. Untill now I had it once, that i thought the booster-stomp was off, but it was on. But you notice such things immediately .. thinking: too much gain, whats wrong? - and it´s always when switching on your whole gear - never when using it live.


    but right now i´m thinking of getting my controller to ask every stomp-state when starting and accepting the returning message from the kpa to get the state and leds right. nice idea!
    maby i´m wrong, but i think the kpa sends a bunch of stomp-messages (state and type) when starting. So it wouldn´t matter which one starts first, the controller or the kpa.


    mayby i should add, that I have locked all my stomps - so I don´t change the stomp-type of any stomp-slot at all. In other words: for example my foot-switch 1 switches stomp for stomp D, where a booster is. I labeled this switch "booster" on my controller, not "stomp D" cause for me it will ALLWAYS switch the booster.


    Martin

  • Great work.


    i have a similar project, where i use my Line6 FBV as controller.


    I used your looper commands in my code and it works fine.


    but i have a few questions:
    as i am not a good c++ programmer, it is iifficult for me to read your code, because you build araays of arays of arrays....


    Q1: why is it necessary to send the KPAStream every 5 seconds?


    // Fuer KPA zu sendender Stream (alle 5s)
    const byte KPAstream[] = {SysExBegin, 0, 32, 51, 2, 127, 126, 0, 64, 1, 54, 4, SysExEnd};



    Q2:
    how often do you request information from the kpa? do you pause between the requests, or is there no performance problem?


    Q3:
    do you have a documentation for the values you request?
    For example the tuner values?
    This would be more easy for me, than interpreting the code.




    Joachim

  • Hi,


    thank you.


    1.
    I send this midi message every 5s because the Behringer FCB1010 with the uno4kemper does it. It tells the kpa to be in the bidirectional mode, what means, the kpa keeps sending the tuner info. If you don´t send it, the kemper tells in about 8 seconds: midi-Controller disconnected and stops sending tuner-messages etc.


    2.
    I´m just requesting the rig-tempo for displaying it on my controller... just request it, when pressing the tap-footswitch. So every time i change tempo by tapping, my controller updates this bpm-number on one of its displays. I don´t have any performance-problems. The Kemper keeps sending tuner-info, which are quite much messages - but no performance problems here.
    One special thing with my controller: Live, I use an app called "onsong" on my ipad. its for displaying leadsheets, can send midi-messages and midi-clock and is connected to a second midi-in in my controller. For every lead sheet you can set the tempo of the song. Now, when I change a lead sheet on my ipad, its sending a midi-command (sysex of my own syntax) to my controller to switch the rig and effects on and off (what i want for this song): And it tells my controller to pass the midi-clock from the ipad to the kpa for about 2 seconds. After the 2 seconds the controller requests the tempo to display it - and stops passing the midi-clock messages to the kpa.


    3.
    No, no documentation ... just experimenting with a midi-sniffer on my macbook (shows the midi-commands) and this thread with the midi-editor.. don´t have the link right now. there you can get all the values for different needs..


    martin

  • Hi Martin,


    thanx a lot,


    after sending this Stream periodically, tuner information is transmitted.


    at the moment i have a problem:
    when i send the command with Serial.write, it works.
    if i use the midi libryry, the Kemper dumps after a while.
    but coding the few midi functions needed is no problem, and i dont want to waste time with the midi library.


    Joachim

  • So here is the wiring for the arduino mega:
    https://code.google.com/p/tlc5…/ArduinoMegaHardwareSetup


    martin


    Sorry to dig up this old thread, but I'm just about to start my MIDI Board build.


    I just want to have 14 presets laid out on 1 board with a Tap Tempo (15 total switches)
    Because of this, I believe I'm going to need the Mega board (To allow space for all the inputs)


    Images of how the board was wired have all now gone missing on the internet. Could you please send me them over or re-upload them so I have something to work on?


    Thanks.

    Jack of all trades, master of none.


    PRS Custom 24
    Kemper Rack
    Marshall 1960b

  • I switched to the KPA Remote nearly 2 years ago i think.
    But i will look what files and images I have from my DIY-Project. I´ll pm you.


    Where are you from?


    Do you want to buy my self-made Controller? ;)


    Basically its a foot-controller with 18 Switches (6x3) with 18 RGB-LEDs, wired to an Arduino mega. With 2 7seg-Displays (each 4 digits). One extra LED for tempo (also rgb) and 3 LEDs (red green red) for tuner-info.
    it has inputs for 2 expression-pedals an 2 buttons (i used one for tap tempo).
    it has 2 Midi-Ins, one for KPA (bi-directional Midi) and i used the second for my iPad.. i switched presets with my iPad when i changed to the next lead-sheet.


    I could sell it without ANY support at cost (material).
    You could use my Arduino sketch, but i really don't think it will work for you, because it is fitted so specially for my needs...


    mortl

  • if you just wire the switches as a matrix you are down to 4+4 gpio pins.
    Those can still be muxed down to 3 pins with a simple TTL muxer, shift register, et al.
    That's why an arduino micro is perfectly up to the job.
    If I speak in riddles or you need a hand, give me an hola ;)