As the author of TV-B-Gone, the ArduTouch

 
3r3-31.

Arduino-compatible musical instrument that teaches digital signal processing

3r3114.  
As the author of TV-B-Gone, the ArduTouch 3r3114.  
3r3114.  
3r3394. The article by Mitch Altman, the inventor who invented the universal remote control for turning off the TV-B-Gone TVs, and the organizer of hacker conferences 3r395. 3r3114.  
3r3114.  
As a child, I was drawn to the music, and I was amazed at the sounds of the synthesizer 3r317. Moog 3r3117. from the 1968 album Switched-On Bach . I needed to learn how to extract such sounds! Thus began the training and production of synthesizers with a lifelong parallel to my 333-3117 entry into the technology industry. where I ended up doing
TV-B-Gone
, a gadget that allows you to turn off almost all remote controlled TVs. Since gaining popularity in TV-B-Gone, I have made many kits for making fun, open-source devices, which I represent around the world on DIY conferences . On them, beginners learn to solder, make their way into the world of electronics and microcontrollers. Recalling my youth, I wanted to provide them with a set, Easy to assemble 3r3117. and use, but at the same time being a full-fledged musical synthesizer. 3r3114.  
3r3117. 3r3114.  
So
appeared. ArduTouch
worth $ 30. This project includes a single board, a touch keyboard, an ATMega328P (the same processor used in the Arduino Uno) and an audio amplifier with a speaker. It also has a software library that can serve as an entry point into the world of digital signal processing. 3r3114.  
3r3114.  
The greatest difficulty in developing the board was the limited number of input /output contacts on the ATMega328P. I used 12 pins for the keyboard to implement the entire chromatic 3r3117. musical scale entirely. The keyboard is similar to
Stylophone
- one of my favorite analog synths of the late 1960s - and uses a capacitive sensor for recognition. Two more pins are used to output stereo sound, and the other two are for serial data transmission (ArduTouch can be programmed using 3r3453. Standard development tools 3r3117 for Arduino, although an FTDI cable is required to connect to a computer). The remaining contacts were just enough for two buttons and two potentiometers controlling the synthesizer. 3r3114.  
3r3114.  
So that a person can immediately get audible results after soldering, I put an LM386 amplifier chip and a speaker on the board (the amplifier costs when you connect an audio jack). DAC chips are expensive, so I used 3r3351. pulse width modulation
to encode stereo audio channels leaving ATMega328P. Low-pass filters for each channel, consisting of a resistor and a capacitor, convert the PWM to audio. 3r3114.  
3r3114.  
Experienced electronics engineers will understand that the ArduTouch scheme is simple. The project is based on a sophisticated audio synthesis software library used for programming the ATMega328P. 3r3114.  
3r3114.  
It's pretty easy to get the microcontroller to give simple notes. Simply connect the speaker to the contacts, and alternate on and off by sending a square wave at different frequencies (this technology was used by Alan Turing himself in the computer 3r3633. Manchester Mark II
). But the result is a sharp sound, far from the rich palette of the Moog synthesizer. 3r3114.  
3r3114.  
To improve the sound, I needed to turn to digital synthesizers. They are engaged in the creation of binary representations of audio waves, their distortion and the transformation of these numbers into analog signals. This can be done in many different ways, and I’m happy to note that ArduTouch supports quite a lot of different techniques, including the use of wave tables (using samples stored in memory) and the generation of sounds (audio counting on the fly). 3r3114.  
3r3114.  
After creating the basic binary representations of sound, we turn to the critical stage of its “distortion”. If you do not play with the sound, it is usually thin and sterile. Cool sounds are obtained after dynamic manipulation. ArduTouch is capable of applying many digital dynamic functions and effects, including tremolo, vibrato, portamento, as well as low and high pass filters. 3r3114.  
3r3114.  
3r3114.  
3r3114.  
3r3114.  
3r3394. ArduTouch uses relatively few components of [/i] 3r3114.  
3r3114.  
3r3391. 3r3114.  
3r3394. It can even be collected by beginners [/i] 3r3114.  
3r3114.  
And although conceptually all of the above is not difficult to learn and understand, programming itself is quite complex. The ArduTouch library, which I created with my friend Bill Alessi, does all the low-level calculations — and it took us two years to create it. 3r3114.  
3r3114.  
The library is designed to be flexible and allow even inexperienced users to create new synthesizers that produce different sounds. The Thick synthesizer, which combines four sawtooth waves, comes in sets, and the other synthesizers can be downloaded separately . Experienced users can learn how to create synthesizers from scratch, causing high level functions. I hope that people who like the project will create new synthesizers and share their code with me so that I can share it with others. 3r3114.  
3r3114.  
But even when using the default synthesizer, the sound is unexpectedly good for such a low-power microcontroller (which supports a sampling frequency of only 15 kHz) and inexpensive equipment. In my YouTube channel You can listen to many demonstrations of his work. 3r3114.  
3r3114.  
For the development of the project in the future, I will continue to improve the ArduTouch library for Arduino and upload additional ready-made synthesizers. I am also working on creating a more powerful version of ArduTouch, suitable for speeches. This will not be a set, but it will still be compatible with Arduino. It will have a 32-bit microcontroller with a lot of I /O pins, a DAC, a bunch of memory (which allows you to use 3r3116. MIDI 3r3117.), A small LCD screen, a few buttons and potentiometers, and LED indicators - and, of course, improved sound. 3r3125.
3r3122. ! function (e) {function t (t, n) {if (! (n in e)) {for (var r, a = e.document, i = a.scripts, o = i.length; o-- ;) if (-1! == i[o].src.indexOf (t)) {r = i[o]; break} if (! r) {r = a.createElement ("script"), r.type = "text /jаvascript", r.async =! ? r.defer =! ? r.src = t, r.charset = "UTF-8"; var d = function () {var e = a.getElementsByTagName ("script")[0]; e. ): d ()}}} t ("//mediator.mail.ru/script/2820404/"""_mediator") () ();
3r3125.
+ 0 -

Add comment