This project is a part of experiments done while doing an artist in residence at Instructables. You can see the other projects here.

You can use bit-shifting as an alternative way of creating "music". This principle enables you to squeeze as much processing power as possible out of the Arduino while creating novel and interesting effects. The challenge lies in composing through bitshifting.  This is an example of how such composition could look like:

OCR0A = ((-t&4095)*(255&t*(t&t>>13))>>12)+(127&t*(234&t>>8&t>>3)>>(3&t>>14)); // by tejeez

I have made this box to explore the consequences of changing the different parameters in the pieces. This enables me to see how they effect the overall sound qualities and enables me to prototype new compositions. The different parameters are changed through the 4 potentiometers. One potentiometer to choose the current algoritm and the other potentiometers to change the parameters of it. Although the sounds can be considered crude, it is quite engaging to experiment and play with.

This project is based on Duane Banks code. He does a good job on crediting his sources, I want to embed them here for reference: The original tunes were produced by Viznut and by others in response to his original blog post here - The original Arduino port was completed by Arduino Forum user Stimmer. Duane Banks used the synth schematic found in this instructable plus a customized version of the timing functions found in the code. I adopted his code and modified the different algorithms so you can play around with their parameters and get a sense of how it affects the sounds.


Step 1: Components Needed

You will need to following components:
  • Arduino board
  • Prototyping shield.
  • Pin headers.
  • 4 10kOhm potentiometers.
  • 2.2k Resistor.
  • 100n Capacitor.
  • 100u Capacitor.
  • Jack connector.
  • A pair of computer speakers.

If you want to make the enclosure you would need:
  • 3mm black acrylic.
  • A wooden box (I got mine from the container store in SF).
I used a lasercutter to cut the acrylic, you could use a piece of plywood and cut the 4 holes manually.

<p>I was wondering if the Prototyping shield is absolutely necessary? I am new to Arduino and know nothing of the shield but it looks like a perf board could be used in place of the shield. Would this be true?</p><p>many thanks</p>
<p>I've tried running this and no matter what I get an error message calling the Guino_libray an invalid library. The only time it acknowledges the library is if I open the full example sketch, but not when I use the Synth sketch. </p>
<p>ET.begin(details(guino_data), &amp;Serial);</p><p>No matching function for call to 'EasyTransfer::begin(byte*, unsigned int, Serial_*)'</p><p>What is going on?</p>
Awesome noise maker and so much fun! Thank you for this great instructable! I built one in just about an hour. One mod I made that might prove useful to some is adding or replacing control over the rate to one of the pots.<br> <br> here is what mine looks/sounds like if you're interested:<br> <a href="http://soundcloud.com/tophaloph/thesunsblackmirror-2" rel="nofollow">https://www.facebook.com/photo.php?fbid=4594314465855&amp;set=a.2018900922126.122044.1532001573&amp;type=1&amp;theater</a>
<p>HI Blast Master, I'm curious, would you share your code, I think the rate change would be cool as a feature :)</p>
Awesome thanks for sharing. If you come up with new compositions I would love to hear them :)
<p>Hi!<br>Would it be possible to make this project with a, lets say, mini or nano?</p>
<p>I'm new to arduino so I can't tell what I'm doing wrong</p><p>I keep getting this message:</p><p>onelineSynthGuino.ino: In function 'void paramChanged(int*, int)':</p><p>onelineSynthGuino:131: error: 'gUpdateValue' was not declared in this scope</p><p>onelineSynthGuino.ino: In function 'void setup()':</p><p>onelineSynthGuino:151: error: 'gBegin' was not declared in this scope</p><p>onelineSynthGuino.ino: In function 'void loop()':</p><p>onelineSynthGuino:160: error: 'guino_update' was not declared in this scope</p><p>onelineSynthGuino:172: error: 'gUpdateValue' was not declared in this scope</p><p>onelineSynthGuino.ino: In function 'void gInit()':</p><p>onelineSynthGuino:183: error: 'gAddLabel' was not declared in this scope</p><p>onelineSynthGuino:184: error: 'gAddSpacer' was not declared in this scope</p><p>onelineSynthGuino:185: error: 'gAddSlider' was not declared in this scope</p><p>onelineSynthGuino:190: error: 'gAddToggle' was not declared in this scope</p><p>onelineSynthGuino:192: error: 'gAddColumn' was not declared in this scope</p><p>onelineSynthGuino:198: error: 'gAddMovingGraph' was not declared in this scope</p><p>Any help is much appreciated.</p>
<p>your librarys aren't properly installed in the arduino master folder.. all this has to do with the serial monitor.</p>
I am trying to upload the code for this into an UNO, but I am getting an error with the EasyTransfer ET create object part of the code. I am new to coding so any help would be much appreciated. Here are the error messages:<p> <br> <br></p><blockquote>Guino_libray:64: error: 'EasyTransfer' does not name a type <br>Guino_libray.ino: In function 'void guino_update()': <br>Guino_libray:93: error: 'ET' was not declared in this scope <br>Guino_libray.ino: In function 'void gBegin(int)': <br>Guino_libray:172: error: 'ET' was not declared in this scope <br>Guino_libray:172: error: 'details' was not declared in this scope <br>Guino_libray.ino: In function 'void gSendCommand(byte, byte, int)': <br>Guino_libray:390: error: 'ET' was not declared in this scope</blockquote> <br> <br> <br>
I figured it out. I shouldn't have glossed over the transferring libraries to the libraries folder tutorials :D
<p>i had this problem too. i read the tutorial, but i'm not sure what im doing wrong. what did you do?</p>
Ever wonder how to made one on this noise machines but made them independent from a computer and guino ? and have more flexibility overall. Try this code http://forum.arduino.cc/index.php/topic,77884.0.html <br> <br>like all the same without the above mentioned stuff, override the leds and stuff. keep it minimal :)
Can you buy the prototyping shield online. I am in Australia and can't find that specific model in store
u can make easily the shield on very basic Phenolic prototyping board. i made mine in one morning, and it works great...
Hi, I build one and is great. It just run when GUINO in on, or it is a way to override Guino to make it independent from a computer? I can&acute;t find it how.
Or it is possible make another scheme for people who know how to solder, but have just basic knowledge about wires connections ? Thanks a lot !
Hi, I really like this project but I am total &quot;noob&quot; with Prototyping shield and i dont know, how to design scheme for jack with this model of ProtoType Shield :( can you help me <br> <br>please ? http://arduino.cc/en/Main/ArduinoProtoShield <br> <br>it is different model then you have.
I got the thing working and it is quite awesome. :) <br> <br> <br>how does one go about altering the code to change the composition? is there a repository for variations that can be plugged in?
Me again. Anyway just a warning to anyone using this schematic. A connection is shown between pin GND and pin 6 on the right hand side of the arduino. If you do this your circuit will not function properly. The schematic should have no connection where the two nets cross one another in that area. <br><p>Anyway once you get this thing working it sounds freaking amazing! Thanks for this!</p>
hmm you migh be right. This is the right diagram for the synth: <br> <br>https://www.instructables.com/file/FFG1P35H1PISZD9
I have a 2x16 serial backlit LCD-how would I add to this so that it could display and perhaps with 2 buttons (#up, #down) change the values of the &quot;line&quot;? <br>Im asking cause I know jack about coding, but have built about 20 analog synths so am imagining I can handle the physical elements of this...just FYI
I'm getting the parts to make this here in the next day or two, I have my own idea for how to do the enclosure but I'll let you know how it goes via photos when it's done. <br> <br>Thanks for the write-up, only question is how are you powering the arduino? Battery? Plug? Or what. (I might of missed it)
I am using the usb port. Hence drilling a hole to it - but I will be using a lipo battery and a charging circuit from sparkfun.
I wouldnt say crude sound at all, even if its a bit &quot;tron&quot;
nice <br> <br>one way to make a square hole in wood is to drill a hole, then put a coping saw blade through that and just saw out the square

About This Instructable




Bio: IMPORTANT: Please do not message me personally with technical questions. Use the comments in the respective instructables. I really love sharing and helping people makes ... More »
More by madshobye:Guino: Dashboard for your Arduino Making noise machines Making sound (noise) machines 
Add instructable to: