Music project

hi, I want to make this project with arduino , I am ignorant in this field and i want to ask what I have to buy.

knobs and faders have them already

16 faders and 64 knobs and other 16 knobs

Sorry for my bad english im italian :P

thanks

[/url]

ciabio: hi, I want to make this project with arduino , I am ignorant in this field and i want to ask what I have to buy.

It should be readily apparent, even to an Italian, that if you want someone to tell you how to build it, you should probably tell them what it is supposed to do first.

And, since you're Italian, you'll probably have better luck communicating with other Italians.

Pete

I want to make a controller for ableton with a usb output

Ableton communicates through MIDI so get an Arduino that will look like a HID USB device, that is like a Micro or Leonardo. Use the https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro And also use a MIDI libiary. Start small and just send one CC command on a push button input, maybe one to launch a sample. Then build it up adding more buttons and functions.

thanks for the answer… and the arduino leonardo is good enought to connect all this knobs and faders ?

thanks

ciabio: and the arduino leonardo is good enought to connect all this knobs and faders ?

Yes. You might have to multiplex the analogue inputs to get the number of analogue inputs but that is simple enough.

Take a look at my MIDI Controller library. It makes creating MIDI controllers really easy. It has support for analog multiplexers as well, so you can use it with many potentiometers.

For such a large project, I would recommend a Teensy 3.2, 3.5 or 3.6. It has plenty of IO, and a fair amount of RAM. It has a USB interface, so it supports MIDI over USB (the Arduino UNO, Mega, etc. don't support this). I think the Arduino Micro/Leonardo (same chip, different format) won't have enough RAM.

If you want to know how the MIDI protocol works, or if you want to know the basics instead of hiding everything behind a library, you can check out my Arduino MIDI guide (still a work in progress).

There are three simple steps for creating a MIDI controller using the library:

  1. Specify the multiplexers you're using and to pins they are connected to:
// Create an instance of 'AnalogMultiplex' with the output pin of the multiplexer connected to
// analog input pin A0 and the address pins connected to pins 2, 3 and 4.
AnalogMultiplex multiplexer(A0, { 2, 3, 4 } );
  1. Specify the potentiometers, faders, buttons, rotary encoders ... you have:
// Create new instances of the class 'Analog', on the pins of the multiplexer,
// that send MIDI messages with controller 7 (channel volume) on MIDI channels 1, 2, 3 ...
Analog potentiometers[] = {
  {multiplexer.pin(0), MIDI_CC::Channel_Volume, 1},
  {multiplexer.pin(1), MIDI_CC::Channel_Volume, 2},
  {multiplexer.pin(2), MIDI_CC::Channel_Volume, 3},
  // etc.
};
// Create new instances of the class 'Digital', called 'buttons', on digital pins 2, 3, 4 ... 
// that sends MIDI messages with notes 60, 61, 62 ... on channel 1
Digital buttons[] = {
  {2, 60, 1},
  {3, 61, 1},
  {4, 62, 1},
  // etc.
};
  1. Refresh all inputs in the loop:
void loop() {
  // Refresh the MIDI controller (check whether the potentiometer's input has changed since last time, 
  // if so, send the new value over MIDI)
  MIDI_Controller.refresh();
}

Pieter

thanks for all the answers im realy happy, so the first step is buy a teensy 3.6 board right ?

thannks

First you have to decide whether you want a Teensy 3.2, 3.5 or 3.6. A 3.2 will probably be enough for what you want to do, but the 3.5 and 3.6 have 2 ADC (analog to digital converters, the hardware that actually reads the voltage from the potentiometers) and more analog inputs (25 vs only 21 on the 3.2). However, since you plan on using multiplexers anyway, that won't make much of a difference, and you'd have to do some rather fancy programming tricks to take advantage of the second ADC. I think your greatest concern will be RAM. But the 64K on the 3.2 will probably be more than enough. (The 2.5K on an Arduino Leonardo will not be sufficient, I'm afraid).

So it all comes down to pricing and availability. What's your budget? So many potentiometers and knobs won't be cheap anyway.

Pieter

I really appreciate your answer ..

my budget is 300 euros ($ 359) if you can explain me what to buy to start this project I would be really grateful ... I read in the forums and on the internet, but I can not understand what I have to buy apart knobs and faders to start

Thank youuuuu :) :) :) :) :)

I bought these potentiometers for my controllers, together with these knobs. About three years ago, I paid €1,62/pc for the pots and €0,62/pc for the knobs. They seem to have gone up in price, though.

Let's say you find these parts for the same price as I did, that's €2,24*96 = €215. You should be able to find a Teensy 3.2 for around €22, so €237.

Then you'll need some multiplexers as well either 12 8-channel multiplexers, or 6 16-channel. You could use a 74HC4067, for example. You'll need 6. The chip itself goes for around €2, so that leaves you with €51 for wires, an enclosure, a custom PCB, etc.

Pieter

The 2.5K on an Arduino Leonardo will not be sufficient, I'm afraid).

I would disagree with that assessment, I can’t see anything in the specifications that requires a lot of memory.

Grumpy_Mike:
I would disagree with that assessment, I can’t see anything in the specifications that requires a lot of memory.

You need around 180 B for the MIDIUSB library (not sure how many dynamic memory it uses, so let’s give it the benefit of the doubt), then you have 2380 B left for 12 or 6 multiplexers and 96 potentiometers. That’s around 24 B per pot. For each pot, you have to remember the mux address and analog pin number, the controller number and MIDI channel, the previous value, and a small running average buffer. Add a few pointers if you’re going for an OOP approach, and you’ll run out of RAM rather quickly.

If you want extra features (calibration, better noise prevention, etc.) or if you want to add more controls (maybe some buttons) later, you’re out of memory.
If you’re low on RAM, you’ll run into trouble if (for whatever reason) the Arduino needs dynamic memory.

I think that it’s therefore safer to go with the Teensy instead of the Leonardo. The price is the same, it has more IO, much more RAM, is many times faster, and has (IMO) an easier form factor to work with.

Pieter

Thanks for all the answers

I looked on the internet and found a couple of things..

The teensy 3.2:

|500x92

the multiplexers :

I hope are the right ones ::)

|500x133

The knobs :

I have no idea how much resistance they must have better low or high? :( :(

|500x91

The sliders:

same problem with the resistance :(

|500x129

about the wires:

are there better wires than others for this project?

I really thank everyone for the help and for patience :-* ;) :-*

Keep in mind that the multiplexers have a SOIC24 footprint, so you can’t use them on a breadboard. You’ll need to use an adapter, use a breakout board, or design a custom PCB (I’d recommend the latter for your final design).

The answer to your potentiometer question can be found in the Teensy 3.2 datasheet on page 36-37:

RAS, Analog source resistance: max 5kΩ

This resistance is external to MCU. The analog source resistance should be kept as low as possible in order to achieve the best results. The results in this datasheet were derived from a system which has <8 Ω analog source resistance. The RAS/CAS time constant should be kept to <1ns.

This means that the ideal potentiometer value would be 10kΩ.
However, you want to find the happy medium between a low RAS and a low current draw. (The lower the potentiometer’s resistance, the higher the current draw will be.)

If you have 96 10kΩ potentiometers, that will be a total current draw of 3.3/10*96 mA ≃ 32mA, so that’s not a problem in this case.
10kΩ will work just fine.
Make sure that you get pots with a linear taper.

You don’t need thick wires for this project. I’d recommend power rails for 3.3V and ground to all potentiometers, and maybe some ribbon cables for the wipers, to keep everything organised.

Pieter

PieterP:
Keep in mind that the multiplexers have a SOIC24 footprint, so you can’t use them on a breadboard. You’ll need to use an adapter, use a breakout board, or design a custom PCB (I’d recommend the latter for your final design).

The answer to your potentiometer question can be found in the Teensy 3.2 datasheet on page 36-37:This means that the ideal potentiometer value would be 10kΩ.
However, you want to find the happy medium between a low RAS and a low current draw. (The lower the potentiometer’s resistance, the higher the current draw will be.)

If you have 96 10kΩ potentiometers, that will be a total current draw of 3.3/10*96 mA ≃ 32mA, so that’s not a problem in this case.
10kΩ will work just fine.
Make sure that you get pots with a linear taper.

You don’t need thick wires for this project. I’d recommend power rails for 3.3V and ground to all potentiometers, and maybe some ribbon cables for the wipers, to keep everything organised.

Pieter

thanks :slight_smile:

the only thing that i didn’t understand about the multiplexer is… if I have to find others or they are fine,
but I have to buy something more …

excuse me for my ignorance … when I finish this controller I’ll give it your name: P

ciabio: the only thing that i didn't understand about the multiplexer is.. if I have to find others or they are fine, but I have to buy something more ...

They will work fine, if you manage to connect them to the Teensy. You can try to find an 8-channel analog multiplexer in DIP format, these fit in a breadboard (but you'll need 12 of those). Or you can use the 16-ch SOIC24 chips, but you'll need a breadboard adapter or a PCB to mount them on.

For each pot, you have to remember the mux address and analog pin number, the controller number and MIDI channel, the previous value, and a small running average buffer.

No way, if it does then you are doing it very wrong.

Those sliders are Log pots, these are not suitable for what you want linear sliders with a value of 10K. The series resistance of the multiplexers does not matter.

are there better wires than others for this project?

No, pick the thinnest that are easy for you to handle.

Grumpy_Mike: No way, if it does then you are doing it very wrong.

Those sliders are Log pots, these are not suitable for what you want linear sliders with a value of 10K. The series resistance of the multiplexers does not matter. No, pick the thinnest that are easy for you to handle.

thanks

so im searching for others sliders :P