Author Topic: Guitar pedal router  (Read 19270 times)

0 Members and 1 Guest are viewing this topic.

Offline obiwanjacobi

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Guitar pedal router
« Reply #25 on: March 13, 2016, 04:28:31 pm »
Are you going to allow effects in parallel also? If so, how are you going to handle the summing/mixing of outputs?

Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #26 on: March 13, 2016, 04:40:47 pm »
You don't need all that crap, and encoders are a PITA to interface and use for simple menu selection - they only come into their own when you either need to be able to twiddle/tweak a variable parameter, or to control pointer/cursor position for a big GUI.

I'm thinking two line display:   Top line is the possible selections, bottom is the effects in order.   Cursor pad with central click button for navigation.   Click an effect number to 'pick it up' click again to drop it where you want.  Top line shows which effects are active and cant be reordered. Bottom line shows the current chain and can be reordered.  There are a couple of extra clickable legends for 'OK' 'Cancel' and probably 'Menu'.   Then you have to deal with assignment to a preset memory, copying to different presets and assigning preset changes to foot switches.  The slide switch for programming lock makes sense.

@obiwanjacobi: Don't be evil !!!  :-DD
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #27 on: March 13, 2016, 08:01:24 pm »
Two reasons for wanting to use a rotary encoder with a center switch.

Reason one, I've used similar gear with rotarys,  and with an arrow pad. The rotary is way easier to me from a user standpoint. I just hate clicking arrows I guess.

Second reason, is I want the challenge. I presume the encoder just sends it's a address, and some sort of simple code saying what way it turned, right? Then wouldn't it just be a software job to watch for it and respond correctly? Wouldn't it be the same as any other button except rather than a simple pulse, it would send a slightly more complicated code? Or is that last part more trouble than I think?
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #28 on: March 13, 2016, 08:29:02 pm »
A lot more trouble than you think.  A rotary encoder produces a quadrature pulse-train on two outputs that has to be decoded to get the direction and magnitude of each movement.  Unless you use a very high quality optical rotary encoder its likely to require debouncing as well to avoid it jittering between adjacent steps.  If your software misses a transition, there will be a two step uncertainty before you can determine the direction of movement again.  If the MCU has a QEI module, it will handle it in hardware, but otherwise it is a P.I.T.A.

None of this stuff is smart enough to send an address and direction or an address and which buttons are pressed.  If you want that, you are looking at something like a multi-master I2C bus with a MCU for each input or output device and *very* complex software to manage it all.  If your master MCU polls the bus to see which devices have had a status change (rather than the devices pushing their update to the master MCU) you can interface them using off the shef I/O expanders or dedicated interface chips rather than a MCU for each, which means you don't have to write firmware for all the slave devices, but you'll still need fairly complex firmware on the master MCU, far more complex than it would be for directly connected switchs and LED etc.
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #29 on: March 13, 2016, 08:41:16 pm »
Ok, you talked me out of the rotary. While we are on the physical interface topic though:

How does a button talk to the micro in a simple setup. You, or someone else spoke of some sort of EPROM with each button that sent the address and state of the button. I think "one wire eprom" was the term. Care to expand on this?
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #30 on: March 13, 2016, 08:59:37 pm »
That was reply #2 from Rerouter, who was talking about making each individual pedal 'smart' and capable of doing its own routing over a multicore daisy-chain cable linking all the pedals.

A normal switch doesn't have an address.  Its identified by the port pin its connected to or its position in a switch matrix.
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #31 on: March 13, 2016, 09:32:52 pm »
Ok, so let's talk about the physical interface.

Obviously I don't want to burn an i/o pin for every button, so is the matrix the way to go?

As far as i/o pins go, here is what I THINK I need.

If i use MT-8809s in an array of 4, I see six address pins, plus reset, chip select, and strobe pins for each chip, although I'm not clear if I only need one strobe line for all four. Assuming my that's the case, that's 15 pins just for talking to the switching chips.

Another seven for the LCD, and I'm at 22 without even considering the interface!

The arduino Leonardo that I'm looking at only has 20. Do I really need more, or am I missing something?
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #32 on: March 13, 2016, 09:53:03 pm »
If you have multiple MT-8809 chips, they can share all their control pins except /CS.  The /RESET pin isn't gated by /CS, but I cant think of any situation where you'd want to reset one out of four on its own.  Thy have six AX and AY address lines, DATA and /STROBE, so if you include /RESET, that's nine pins in common + one /CS  per chip. For four chips that would be 13 I/O pins.  Even if you use an I2C interface for the LCD you are up to 15 pins before you add any switches

The best option would be to find a 16x16 analog switch chip with a serial I2C or SPI interface then use the same type of interface for the LCD.   I2C would only use two MCU pins for all the devices on the bus.  SPI uses three pins for the bus + 1 /CS pin per device.
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #33 on: March 13, 2016, 10:26:31 pm »
Are you talking a 16x16  chip for my interface? So in addition to my audio switch array, a switch array for the the buttons that shares a 2 wire bus with the LCD for a grand total of 15 i/o pins?
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #34 on: March 13, 2016, 10:37:58 pm »
No. I'm suggesting ONE 16x16 analog switch chip for the signal switching.  Although it would be possible to use I2C or SPI I/O expanders to interface the buttons or keypad or even footswitches for changing preset setups while playing, putting the analog switch matrix and LCD on the I2C or SPI bus frees up enough MCU pins to connect the switches direct to the MCU, or in a switch matrix direct to the MCU.
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #35 on: March 13, 2016, 11:02:35 pm »
Ok, I gotcha.

So I'm completely unfamiliar with the serial interfaces that you mentioned. Does the switch array chip need to natively speak that particular interface? I've found some 16x16s with serial interfaces, but a mouser search with "cross point" and "12C" got me no where, leading me to think I'm not understanding. Say I want the 12C interface you mentioned (attractive to me for its low pin requirements). Do I need a specific switch array intended for 12C, and some chip to interface with the mcu?

By the way, thank you so much for your help. I know indulging a rank beginner can be tedious!
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #36 on: March 13, 2016, 11:20:35 pm »
In that case, its probably better to go for SPI or a SPI-like interface (Clock, data and latch or store).  You *could* use an I2C I/O expander to drive a parallel interface crosspoint analog switch matrix, but you would end up having to send three words per switch bit, one to setup address lines, and the data line another maintaining those lines and activating the strobe, and yet another to deactivate the strobe.   Even for a single 8x8 matrix that would be a minimum of 192 bytes sent, assuming you had wired up a /reset line so you didn't need another 192 bytes to clear the whole matrix so it didn't short anything while transitioning from the previous configuration to the new one.  A matrix with a serial interface typically has a bulk load mode where you send it bytes, one bit per switch, then the whole new configuration gets loaded simultaneously so you don't have to worry about shorting stuff if the matrix hasn't been reset after the previous switch configuration
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #37 on: March 13, 2016, 11:50:23 pm »
OK, I goofed. I now realize its I2C, not 12C. I amended my search, and had much more fruitful results  :palm's

OK, I only found 8x12's with that interface, and they only went to 5 volts. One of the big draws of the MT 8809 to me is the analog signal headroom.

What about I stick with my quad of MT 8809s for audio, and did I2C parts for the interface switching array and the LCD.

Also, if I'm understanding you correctly, I could even make my MT 8809s talk on the I2C bus with an I2C I/O expander, making my entire I/O pin use just 2? Sounds too good to be tru, since that would allow me to get a cheaper Arduino Uno, instead of the Leonardo I'm considering.
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #38 on: March 14, 2016, 12:02:09 am »
Its possible to do that but I strongly recommend you don't.  It will need a lot more code to update the matrix.  Take a look at this Arduino project that uses 3 AD75019 16x16 analog switch chips: http://dorkbotpdx.org/blog/paul/ad75019_crosspoint_analog_switch
Here's the datasheet: http://www.analog.com/media/en/technical-documentation/data-sheets/AD75019.pdf
It can run from +/-12V rails so has plenty of headroom for audio applications.  Its not cheap, but compared to the cost of 4x MT-8809 + a 16 bit I/O expander to drive them, its quite reasonable.
« Last Edit: March 14, 2016, 02:47:01 am by Ian.M »
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #39 on: March 14, 2016, 12:21:06 am »
Ok, I like the look of that chip. If I read it correctly, this is niether I2C or the other interface you mentioned. Not neccesarilly a bad thing, just curious if my observation is correct.
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #40 on: March 14, 2016, 12:34:01 am »
In an unrelated vein, my goal is to buy the arduino board as a prototyping rig, but put just the mcu chip on my final build. Is that a reasonable goal? My reason is two fold. One, I think its more professional probably to do it that way, not that reason is important beyond my own personal pride. Second, I don't want to have to buy a new arduino development board every time I want to do a new project of this type.? Is this a reasonable goal?

Next, I presume this kinds thing is virtually impossible for a home etched pcb. I've done homebrew single sided boards, and I'm pretty sure I could do a double sided board in a dire pinch, but In suspect I'm way beyond home brewed pcbs now, right?
 

Online Ian.M

  • Super Contributor
  • ***
  • Posts: 12860
Re: Guitar pedal router
« Reply #41 on: March 14, 2016, 12:58:36 am »
The AD75019 is near enough to SPI that you can put it on a SPI bus with some simple glue logic to gate its SCLK signal with a /CS signal, and generate a PCLK pulse when /CS goes high. edit: corrected PCLK

If you don't use a whole Arduino, then you have the problem of flashing the ATMega chip.  That means you need a programming header on your board and a Atmel programmer (or compatible).   

You are well beyond home etched board territory here.  You could do a proof of concept by patching together the Arduino and breakout boards and Manhattan island construction or using DIL converter boards on a base of a matrix-board with a ground-plane but the final product will need to be farmed out to a PCB house to get a professional quality double sided PTH board with solder-mask and preferably silk-screen as well.  How good are you at hand SMD soldering?
« Last Edit: March 14, 2016, 01:43:10 am by Ian.M »
 

Offline Dan MoosTopic starter

  • Frequent Contributor
  • **
  • Posts: 357
  • Country: us
Re: Guitar pedal router
« Reply #42 on: March 14, 2016, 01:07:44 am »
Ha! its been all through hole for me so far. And actually, since the vast bulk of my experience is the design and building of vaccum tube guitar amps, my native tongue is soldering big 'ole 2 watt resisters and 400 volt rated caps!

That said, I'm planning on practicing my smd stuff on junk boards before i try anything important. Also, I'm considering socket converters for any chip more complex than an opamp so it becomes a thru hole thing. I am resigned to professional etching, but hope to populate it myself. When I was still on the MT 88009, I did find an adapter that seemed to allow me to put a 28 pin plcc in it without soldering, and the carrier had thru hole pins for lsoldering to the board. Anywhere that I could do this, I likely would. I would also do my best to keep all my passives and opamps thru hole. My entire build paradigm might be a pipe dream, so I'm open for correction!

I just realized my Art of Electonics 3 has alot to say about serial interfaces, including SPI and I2C, so I have a bit of reading to do. 
 

Offline ozwolf

  • Regular Contributor
  • *
  • Posts: 166
  • Country: au
Re: Guitar pedal router
« Reply #43 on: March 14, 2016, 01:11:31 am »
In an unrelated vein, my goal is to buy the arduino board as a prototyping rig, but put just the mcu chip on my final build. Is that a reasonable goal? My reason is two fold. One, I think its more professional probably to do it that way, not that reason is important beyond my own personal pride. Second, I don't want to have to buy a new arduino development board every time I want to do a new project of this type.? Is this a reasonable goal?

Next, I presume this kinds thing is virtually impossible for a home etched pcb. I've done homebrew single sided boards, and I'm pretty sure I could do a double sided board in a dire pinch, but In suspect I'm way beyond home brewed pcbs now, right?

Can you build a board for less than $10? Probably not.

Use this for prototyping http://www.banggood.com/Multi-Function-Funduino-Nano-Shield-Nano-Sensor-Expansion-Board-p-91852.html with this for integration into your box http://www.banggood.com/ATmega328P-Nano-V3-Controller-Board-Compatible-Arduino-p-940937.html.

There will be all sorts of naysayers as to quality of manufacture, but I've had very little trouble with these for various projects.  I tend to use these and other modules (Real Time Clocks and such) and mount everything on a motherboard. 

Ozwolf
I reject your reality and substitute my own.
 

Offline Rerouter

  • Super Contributor
  • ***
  • Posts: 4694
  • Country: au
  • Question Everything... Except This Statement
Re: Guitar pedal router
« Reply #44 on: March 14, 2016, 02:00:24 am »
Hmm think i'll better explain myself, What i was proposing was that each pedal is dumb, but Identifiable, Each containing an input and output switch, not necessarly the most efficient, but the most idiot proof,

Each pedal would have an input switch, 8-1 mux, an output switch 1-8 demux, and something to identify it, In reality it doesnt have to be an eeprom, it was just what made the most sense to me,

The thought there being an open collector shift register drivers the address lines of the input and output, leaving you 2 pins free on a normal 8 way shift register, you then use one of those pins for the eeproms ground or enable line, and you get one that you can do whatever you please with, maybe turn on a connected LED,

So when your device starts up, it pulses in a 1 to the corresonding shift register pin to turn on the first eeprom, you then read it, and know what the first device in the series is, pulse in 8 more, and know the next device, until it doesnt read anymore devices and considers it mapped,

You then set the sequence, this should be pretty quick however you want to do your interface, Then pulse out the relevant settings to wire it up how you want, It would even support looping and parallel modules as all your defining is which wire is the input and which is the output, though at a worst case of 16 analog switches, its your call,
 

Offline Richard Crowley

  • Super Contributor
  • ***
  • Posts: 4317
  • Country: us
  • KJ7YLK
Re: Guitar pedal router
« Reply #45 on: March 14, 2016, 02:26:21 am »
Here in the 21st century that is trivial to do with a few lines of code and a $5 microcontroller.
Has anybody used an EPROM of any flavor in the last decade?

There are even color graphics touch-screens for microcontrollers that cost a fraction of a panel full of clunky old mechanical switches.
Unless you are trying to design some costume-period piece of steam-punk here.
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: Guitar pedal router
« Reply #46 on: March 14, 2016, 02:42:19 am »
If I was doing this - I'd go with something like the attached JPG
A simple matrix with extra 'tie-lines' to perform mixed mode routing and source/destination combinations.

Depending on whether the matrix chip is bi-directional or one-way, would affect how I use the tie-lines to combine sources and destinations, but it works either way..

The only gotcha - regardless of what method you choose, is the possible need for programmable gain amplifiers on the in or outs - to compensate for different levels passing through the various pieces of gear.
This amp could be controlled by the same micro - as it becomes aware of each piece of gear being switched in and out of the signal path, or to compensate for losses in 'paralleling' multiple paths.
Don't ask a question if you aren't willing to listen to the answer.
 

Offline Richard Crowley

  • Super Contributor
  • ***
  • Posts: 4317
  • Country: us
  • KJ7YLK
Re: Guitar pedal router
« Reply #47 on: March 14, 2016, 03:55:30 am »
A proper non-blocking matrix won't require any "tie-lines".
If you program the input sensitivity and output levels of each of the effects gadgets, it would be easy enough to put an adjustable gain/attenuator at each input and have the microcontroller automatically compensate for any differences in levels.  This is all easy to do in microcontroller firmware. And it would handle impedance wieredness as well.
 

Offline Rerouter

  • Super Contributor
  • ***
  • Posts: 4694
  • Country: au
  • Question Everything... Except This Statement
Re: Guitar pedal router
« Reply #48 on: March 14, 2016, 06:14:07 am »
To Richard, why i suggested a 1 wire eeprom was you get a unique 64bit ID, The eeprom space is just a freebe
 

Offline obiwanjacobi

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Guitar pedal router
« Reply #49 on: March 14, 2016, 01:21:08 pm »
Rotary encoders are not that hard especially when you add hardware debouncing (couple of Rs and a C per line).


And for almost anything in Arduino land there is a library for it - maybe not the most optimal or eloquent but usually good enough to get things working.
http://playground.arduino.cc/Main/RotaryEncoders

I don't get some the things said here. Looks more like we're trying to confuse a beginner instead of helping him.
My tip: get a 4$ arduino on ebay and a 1$ encoder and start tinkering. Take it from there...
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf