If I wanted to program an Arduino to send out Control Voltage for a modular synth, what would the resolution be? Would it be better than MIDI? Enough for microtones? Could it make quick modulations?
The DAC716 is really good for this. It has 16-bit resolution so microtones can be quite finely tuned (10V/65536levels = 153microVolt per level). So you also need a clean power supply and careful circuit layout to avoid contaminating the control voltage with clock signals and switching noise from the rest of the circuit. It would use three or four pins of the arduino: clock, serial data, load dac, and maybe chip select if you have more than one.
Martin
On 11/10/2006, at 20.49, martin.peach@sympatico.ca
martin.peach@sympatico.ca wrote:
If I wanted to program an Arduino to send out Control Voltage for a modular synth, what would the resolution be? Would it be better than MIDI? Enough for microtones? Could it make quick modulations?
The DAC716 is really good for this. It has 16-bit resolution so
microtones can be quite finely tuned (10V/65536levels =
153microVolt per level). So you also need a clean power supply and
careful circuit layout to avoid contaminating the control voltage
with clock signals and switching noise from the rest of the circuit. It would use three or four pins of the arduino: clock, serial data,
load dac, and maybe chip select if you have more than one.
Not to be rude, just noob, what's then the use of the Arduino? I
mean, why use a Arduino with that chip, if the chip in itself does
the trick; and what does the Arduino lack in order to do the wanted?
Thanks for bringing back the topic.
Best, Steffen
hi steffen,
Am Mittwoch, 11. Oktober 2006 22:11 schrieb Steffen: [...snip...]
Not to be rude, just noob, what's then the use of the Arduino? I mean, why use a Arduino with that chip, if the chip in itself does the trick; and what does the Arduino lack in order to do the wanted?
thats easy to answer: the microcontroller on the arduino does not have a real dac output, but only a pwm output. that means you get 0v/+5v signals, just switched in a way that the average signal gives a discrete voltage level. due to that technique, you have to lowpass-filter the output. this filter in turn limits the minimum time between two different levels. also, it adds some kind of glide to it.
oh, and you either have to use the few and resolution-limited channels that the controller provides, or you have to write a tight interrupt routine to produce the pwm, taking away processing power from other tasks on the controller. oh, the linearity is much better as well.
finally you can set a direct relation between the bit-value and the output voltage by using a reference voltage. for example, if you use a 4.096 volts reference with a 12 bit da, you get exactly 1mV/digit. (altough this can be done by a op-amp stage as well).
last but not least, such dac's are exactly for that: to be used in conjunction with a microcontroller....
Thanks for bringing back the topic.
Best, Steffen
greets,
chris
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
oh, and another thing:
altough you could use the dac chip directly with the computer, on a prallel port for example, you put the load of the protocol handling and stuff on the pc.
instead, you can use dedicated adc/dac chips, connect them to a microcontroller, and let the micro do all the nasty stuff for you. you can preprocess values (in case of reading in stuff), and even put some of the dataflow on the micro. that way you can directly use the i/o within your application/patch, and always get/send the "natural" values that are there, and dont bother about the rest.
for example, you could use a float of 0..+1 to set the dac from zero to full range, and you dont have to care 1)how the dac is controlled, and 2) what resolution it has. all that is done on the arduino then, which you basically just send a few bytes telling him what channel to set to what value...
this can be a big advantage especially on not so powerfull machines that run pd.
greets,
chris
Thanks for the very detailed answer, Chris! Much appreciated.
I will defo look into useing a microcontroler in combo with a dac(/
adc). Not sure yet, if it's gonna be a Arduino or a costum build one.
I guess the advantages of using the Arduino is the flexibility, but
free samples of chips might rule that need out. Any comments on that?
Best, Steffen
Hi Martin, Chris,
and thanks for the enthusiastic replies!
martin.peach@sympatico.ca wrote:
If I wanted to program an Arduino to send out Control Voltage for a modular synth, what would the resolution be? Would it be better than MIDI? Enough for microtones? Could it make quick modulations?
The DAC716 is really good for this. It has 16-bit resolution so microtones can be quite finely tuned (10V/65536levels = 153microVolt per level). So you also need a clean power supply and careful circuit layout to avoid contaminating the control voltage with clock signals and switching noise from the rest of the circuit. It would use three or four pins of the arduino: clock, serial data, load dac, and maybe chip select if you have more than one.
So with one Arduino, how many chips could I control? In other words, how many different CV channels could I get out of it?
derek holzer ::: http://www.umatic.nl ---Oblique Strategy # 149: "Take a break"
Am Donnerstag, 12. Oktober 2006 01:43 schrieb derek holzer:
Hi Martin, Chris,
and thanks for the enthusiastic replies!
[...snip...]
So with one Arduino, how many chips could I control? In other words, how many different CV channels could I get out of it?
it depends on the chips you use. lets assume you have 8 chips with 4 channels, you can have 32 channels. it is possible to set all chips at once: all chips share the same clock, load and chip-select lines, while they have a dedicated line for the data input. that makes 8 + 3 = 11 lines, surely arduino has that much available. other dac's allow for daisy chaining. that is, they have a data input as well as a data output line. if the data to be sent is 16 bits, for example, it delays the incomming bits by that and outputs it then. so you can write to four dac's with 64 bits (clocks). all as an example, of course, since it depends on the used dac.
d.
greets,
chris
derek holzer wrote:
Hi Martin, Chris,
and thanks for the enthusiastic replies!
martin.peach@sympatico.ca wrote:
If I wanted to program an Arduino to send out Control Voltage for a modular synth, what would the resolution be? Would it be better than MIDI? Enough for microtones? Could it make quick modulations?
The DAC716 is really good for this. It has 16-bit resolution so microtones can be quite finely tuned (10V/65536levels = 153microVolt per level). So you also need a clean power supply and careful circuit layout to avoid contaminating the control voltage with clock signals and switching noise from the rest of the circuit. It would use three or four pins of the arduino: clock, serial data, load dac, and maybe chip select if you have more than one.
So with one Arduino, how many chips could I control? In other words, how many different CV channels could I get out of it?
d.
If the Arduino has 12 usable digital outs, then you could use the same clock and data lines for all the dacs, as well as the same load dac line. Then you use the other 9 lines to select the individual dacs, so using no external address decoders you could have 9 dacs. Using a tree of decoders such as the 74HC138 on the 9 address lines could give you 512 dacs.
Martin