News:

Forum may be experiencing issues.

Main Menu

Eoo3: Programmable Looper/Switcher/Midi Controller

Started by Marshall Arts, November 01, 2018, 08:54:30 PM

Previous topic - Next topic

brejna

#45
That looks great. If I understand it correctly you would have 1 pc and cc per preset?
Also is this sent only through one midi channel?

Marshall Arts

#46
Quote from: brejna on December 05, 2018, 06:38:49 AM
That looks great. If I understand it correctly you would have 1 pc and cc per preset?
Also is this sent only through one midi channel?

Actually, you can send a total of 7 PC and/or CC messages with one preset button press plus 7 codes from each of the loops (I call this feature "midi inherit", more on that later)

Marshall Arts

Here is the current version: Three boards, a lot of box headers and ribbon cable, two spillover loops, muted switching, send/return breakout for four-cable-setups (can be jumpered to be anywhere between loop 1 and loop 7), midi in and out, 6 Banks with 7 presets each, 4 amp switching functions,... . Rebuilding the code and the boards from scratch is going to take months, but I am getting there. Sorted out a lot of obstacles on the programming side (like shared GPIO Pins, EEPROM storage issues, MIDI issues). Waiting for some parts to test how MIDI IN works with arduino.








Most important question for the builders in the US is how to get an enclosure. Guys, somebody needs to check availability of suitable aluminum cable channels in the US. It cannnot be that difficult, you need 60x8x4 cm (Length, width, depth) ... Please post any suggestions here (if I use google, I only get European results...).

brejna

That is awesome! I guess you won't add display?

Poslano sa mog Redmi Note 6 Pro koristeći Tapatalk


Marshall Arts

No, there will be no display. I would need more pins for that, and square holes might be a challenge for some of us. I will have three LEDs representing the 6 banks (came up with a fancy idea: green (g) -yellow (y) -red (r), arranged in a circle, so the banks will be g, g+y, y, y+r, r, r+g). There will be a standard midi configuration (what it spits out for each of the buttons), but it will be easily customizable with changes in the arduino code. Also, I will have a special bank for midi-macros (e.g. lfo-midi-cc-messages) which I plan to show in the creative use of diy-equipment contest ;-)

gordo

Gordy Power
How loud is too loud?  What?

cooder

That is really far out clever and amazing! Hours and hours and hours of work in there for sure. Good on ya!
BigNoise Amplification

Marshall Arts

#52
Quote from: brejna on November 19, 2018, 06:08:56 AM
Is it possible to add midi pc and cc messages? Also if you could design it to choose midi channel of each message, that would be awesome..

Sorted out how this works, could not be more easy... Each midi message contains three bytes, so a complete CC would be something like this:

Serial.write(176);     //176 = CC on channel 1
Serial.write(4);       // Control #
Serial.write(127);     // Value to transmit: 0 = off, 127 = on


To change the channel e.g. to channel 2, I need to transmit "177" instead of "176" for the first byte. Here is the list for CC and PC messages for each of the 16 midi channels.


1st byte (hex)1st byte (dec)Function2nd byte3rd byte
0xB0176Chan 1 Control mode changeControl #Value (0-127)
0xB1177Chan 2 Control mode changeControl #Value (0-127)
0xB2178Chan 3 Control mode changeControl #Value (0-127)
0xB3179Chan 4 Control mode changeControl #Value (0-127)
0xB4180Chan 5 Control mode changeControl #Value (0-127)
0xB5181Chan 6 Control mode changeControl #Value (0-127)
0xB6182Chan 7 Control mode changeControl #Value (0-127)
0xB7183Chan 8 Control mode changeControl #Value (0-127)
0xB8184Chan 9 Control mode changeControl #Value (0-127)
0xB9185Chan 10 Control mode changeControl #Value (0-127)
0xBA186Chan 11 Control mode changeControl #Value (0-127)
0xBB187Chan 12 Control mode changeControl #Value (0-127)
0xBC188Chan 13 Control mode changeControl #Value (0-127)
0xBD189Chan 14 Control mode changeControl #Value (0-127)
0xBE190Chan 15 Control mode changeControl #Value (0-127)
0xBF191Chan 16 Control mode changeControl #Value (0-127)
0xC0192Chan 1 Program changeProgram # (0-127)-
0xC1193Chan 2 Program changeProgram # (0-127)-
0xC2194Chan 3 Program changeProgram # (0-127)-
0xC3195Chan 4 Program changeProgram # (0-127)-
0xC4196Chan 5 Program changeProgram # (0-127)-
0xC5197Chan 6 Program changeProgram # (0-127)-
0xC6198Chan 7 Program changeProgram # (0-127)-
0xC7199Chan 8 Program changeProgram # (0-127)-
0xC8200Chan 9 Program changeProgram # (0-127)-
0xC9201Chan 10 Program changeProgram # (0-127)-
0xCA202Chan 11 Program changeProgram # (0-127)-
0xCB203Chan 12 Program changeProgram # (0-127)-
0xCC204Chan 13 Program changeProgram # (0-127)-
0xCD205Chan 14 Program changeProgram # (0-127)-
0xCE206Chan 15 Program changeProgram # (0-127)-
0xCF207Chan 16 Program changeProgram # (0-127)-

Here is what I think will work for most of us:

This looper has two rows:

  • The upper row controls a total of 8 individual "blocks". A block can be a real amp channel, a real loop or something you can switch on or off in a digital device. With this being said, the top row

    • switches relays (for amp channel switching or real loop switching) and
    • sends out CC messages (for activation of "virtual" stompboxes via Midi).
    • The top row does not send out PC messages (would not make sense for me).



  • The lower row has 7 preset buttons (plus bank up and down). Each of them stores one combination of the status of the eight blocks.

    • Besides setting the status of the 8 top row blocks,
    • each of the 7 buttons sends out one PC message...
    • and one CC message.
I do it this way, because my HX stomp uses PC Messages to change to another preset and CC messages to activate a specific snapshot.



As the unit wont have a display, you will be able to freely change your midi setup through the code. Everything will be in the top section of the code, so the lower row for bank 1 would look something like this:


  { //Bank 0
    {{192, 1, 99}, {176, 69, 0}},      //Preset 0
    {{192, 1, 99}, {176, 69, 0}},      //Preset 1
    {{192, 1, 99}, {176, 69, 0}},      //Preset 2
    {{192, 1, 99}, {176, 69, 1}},      //Preset 3
    {{192, 1, 99}, {176, 69, 1}},      //Preset 4
    {{192, 1, 99}, {176, 69, 2}},      //Preset 5
    {{192, 1, 99}, {176, 69, 2}},      //Preset 6
  },


...in plain text: All seven buttons use the same preset (99), the PC message is sent via channel 1 (192, channel 2 would be 193,..). Buttons 1-3 are snapshot 1 (third byte "0"), 4-5 are snapshot 2 (third byte "1"), 6-7 are snapshot 3 (third byte "2"). In this case, the CC messages are sent via channel 1 as well (hence the "176") over control "69" (which is hardcoded in the HX stomp).

Does this make sense to you guys?

brejna

#53
Great work! You said you don't need i upper row pc and cc messages... I think that it would be nice to have pc and cc in upper row, for example I have strymons and I want to control effect change and on/off directly through midi.
How many midi changes can we do per preset?
If I understand it right, 1 pc and 1cc per preset?

Marshall Arts

Quote from: brejna on December 19, 2018, 07:57:56 PM
Great work! You said you don't need i upper row pc and cc messages... I think that it would be nice to have pc and cc in upper row, for example I have strymons and I want to control effect change and on/off directly through midi.
How many midi changes can we do per preset?
If I understand it right, 1 pc and 1cc per preset?
1 PC and 1 cc per preset (lower row). Top row only cc, but the source is free... :-)


brejna

Quote from: Marshall Arts on December 19, 2018, 08:29:25 PM
Quote from: brejna on December 19, 2018, 07:57:56 PM
Great work! You said you don't need i upper row pc and cc messages... I think that it would be nice to have pc and cc in upper row, for example I have strymons and I want to control effect change and on/off directly through midi.
How many midi changes can we do per preset?
If I understand it right, 1 pc and 1cc per preset?
1 PC and 1 cc per preset (lower row). Top row only cc, but the source is free... :-)
Anyway I wanted to learn little bit about code and programming.. :)

Poslano sa mog Redmi Note 6 Pro koristeći Tapatalk


Marshall Arts

Quote from: brejna on December 19, 2018, 08:38:19 PM
Quote from: Marshall Arts on December 19, 2018, 08:29:25 PM
Quote from: brejna on December 19, 2018, 07:57:56 PM
Great work! You said you don't need i upper row pc and cc messages... I think that it would be nice to have pc and cc in upper row, for example I have strymons and I want to control effect change and on/off directly through midi.
How many midi changes can we do per preset?
If I understand it right, 1 pc and 1cc per preset?
1 PC and 1 cc per preset (lower row). Top row only cc, but the source is free... :-)
Anyway I wanted to learn little bit about code and programming.. :)

Poslano sa mog Redmi Note 6 Pro koristeći Tapatalk
Just for you, I'll make it 1pc and 1cc on the top row as well. Cannot hurt.

brejna

Quote from: Marshall Arts on December 20, 2018, 06:41:33 AM
Quote from: brejna on December 19, 2018, 08:38:19 PM
Quote from: Marshall Arts on December 19, 2018, 08:29:25 PM
Quote from: brejna on December 19, 2018, 07:57:56 PM
Great work! You said you don't need i upper row pc and cc messages... I think that it would be nice to have pc and cc in upper row, for example I have strymons and I want to control effect change and on/off directly through midi.
How many midi changes can we do per preset?
If I understand it right, 1 pc and 1cc per preset?
1 PC and 1 cc per preset (lower row). Top row only cc, but the source is free... :-)
Anyway I wanted to learn little bit about code and programming.. :)

Poslano sa mog Redmi Note 6 Pro koristeći Tapatalk
Just for you, I'll make it 1pc and 1cc on the top row as well. Cannot hurt.
Thanks a lot! Appreciate it.

Poslano sa mog Redmi Note 6 Pro koristeći Tapatalk


Marshall Arts

Took the time over the holidays to read a bit about midi switchers and how they work. The biggest challenge is actually to make them programmable on the fly (i.e. without connecting a computer and uploading a sketch to the arduino). I don't know, if I will be able to program this, but if, I will need an external eeprom for this (as the nano's internal is too small). So, I ordered a 24LC256 today, which will be connected via the I2C bus (Pins A4 and A5 on the nano). And as I am using the port I also ordered a 4 digit 7 segment I2C enabled display:



Currently aiming at a system with up to 7 (!) midi commands per button (PC, CC or Note) with configurable toggle values. Software-wise, I will try to publish this in a later release, but I want to make sure, that the hardware can be used for this. Programming will be done with the buttons (still a painful procedure for more complex setups, but a lot of midi controllers take that approach, e.g. the Behringer FCB1010 or my Oxygen O2 keyboard...).