Você está na página 1de 22

(/pt/)

(/pt/)
Explorar (/pt/explore/)

vamos fazer:

Criar (/pt/editInstructable/)

Concursos (/pt/contest/)

Sobre (/pt/about/)

Voc

compartilhe o que voc faz > (/pt/)

Arduino Chiptunes

0
0

Portugus

por blinkyblinky (/pt/member/blinkyblinky/)

(/id/Arduino-Chiptunes/?lang=pt)

8 Etapas

(/id/Arduino-Chiptunes/0/?lang=pt)

Favorito

Sobre este Instructable

8 28.878
Y 98

Postado em:
Dez 11, 2011

visualizaes

Licena:

favoritos

blinkyblinky
(/pt/member/blinkyblinky/)
()
Seguir
(/pt/member/blinkyblinky/)
Bio: If you want me to build
something...I'm open to ideas. I like to
hack with electronics, mix with chemicals
and play with ideas ... Mais
(/pt/member/blinkyblinky/)
(/file/FGGGG3RGVZOHZF6/)

Mais por blinkyblinky:

I am not a big fan of programming. I may like it but, I try to keep it down to a 555
timer like in this ible (http://www.instructables.com/id/The-Versatile-555-Timer/).
However, when it comes to synths, well, I just NEED programming. One day,
while exploring Synthesizers, I came across something known as chiptunes.
I decided to listen and found the music just totally awesome. And so I tried to
make it with Arduino. Unfortunately, it didn't fit the Arduino code. Fortunately,
Stimmer in the Arduino Forums had ported Linus kesson's Hardware Chiptune
Project and made it to fit the Arduino.
UPDATE: THERE HAS BEEN AN UPDATE TO THE CODE. REPROGRAM
THE ARDUINO WITH THE NEW CODE AND PUT AN LED ON PIN 12 AND
PIN 10 (WITH RESISTORS) AND THEY WILL PLAY ALONG WITH THE
"DRUMS"

(/id/How-to-Tie-

Your-Shoes-Cool-So-they-Dont-

Undo/?lang=pt)

(/id/Valentines-Pulse-Sensor/?lang=pt)

And now, here is that project.

(/id/10-Minute-

Sunglass-Neutral-Density-Filter/?
lang=pt)
Tags:
Chiptunes (/pt/explore/?keywords=Chiptunes)
Arduino (/pt/explore/?keywords=Arduino)

Arduino (/pt/explore/?keywords=Arduino)

Relacionado
Dual POKEY Synth (/id/DualPOKEY-Synth/?lang=pt)
por brianpeters
(/pt/member/brianpeters/)
(/id/Dual-

(/id/Arduino-

Passo 1: Gains and Losses.


You will gain:
A machine capable of playing a tune every time you push a button to
activate it.
You will lose: (Materials)
An Arduino
A speaker+possibly an amp
2 jumper wires (If your speaker doesn't already have them)

(/id/TIA-

(/id/Quad-

(/id/Teensy-

Passo 2: What Type of Speakers Should I Use???


(/id/SID-

(/file/FCQHN6QGVZPGZOH/)

(/file/FLVSBXFGVZP1MTV/)(/file/FDXTDI6GVZP1MTW/)

There are many speakers available on the market these days.


Some have built in amps with 3.5mm jacks.
Some have tne cone, the magnet, the coil and then the wire.
Even headphones woud work!

Arduino Chiptunes-Yet
Again...Install an Arduino
Library (/id/ArduinoChiptunes-Yet-AgainInstallan-Arduino-L/?lang=pt)
TIA Synth (/id/TIA-Synth/?
lang=pt)
por brianpeters
(/pt/member/brianpeters/)
Quad SN76489 Synth
(/id/Quad-SN76489-Synth/?
lang=pt)
por brianpeters
(/pt/member/brianpeters/)
Teensy Synth (/id/TeensySynth/?lang=pt)
por brianpeters
(/pt/member/brianpeters/)
SID Synth (/id/SID-Synth/?
lang=pt)
por brianpeters
(/pt/member/brianpeters/)

if(!trackpos)
{
Even
headphones
woud work!

if(playsong) {
if(songpos >= SONGLEN) {
Now I'm sure you want to use the one with a built in amplifier and so, I am
playsong = 0;
developing
} else { a way so that you won't have to cut the cable on your expensive
amp. for(ch = 0; ch < 4; ch++) {
u8 gottransp;
u8 transp;

Passo
3: Programming.
gottransp
= readchunk(&songup, 1);
channel[ch].tnum = readchunk(&songup, 6);
if(gottransp) {
transp = readchunk(&songup, 4);
if(transp & 0x8) transp |= 0xf0;
} else {
transp = 0;
}
channel[ch].transp = (s8) transp;
if(channel[ch].tnum) {
initup(&channel[ch].trackup, resources[16 + channel[ch].tnum - 1]);
}
}
songpos++;
}
}
}
if(playsong) {
for(ch = 0; ch < 4; ch++) {
if(channel[ch].tnum) {
u8 note, instr, cmd, param;
(/file/F9STWW0GU1UZ8K3/)
u8 fields;
fields = readchunk(&channel[ch].trackup, 3);
note = 0;
instr = 0;
cmd = 0;
param = 0;
(/file/F3EZLJZGW0HROR7/)
(/file/F51PW4DGU4MC72T/)
if(fields & 1) note = readchunk(&channel[ch].trackup, 7);
if(fields & 2) instr = readchunk(&channel[ch].trackup, 4);
if(fields & 4) {
Start by
cmd
downloading
= readchunk(&channel[ch].trackup,
the code from below.4);
param = readchunk(&channel[ch].trackup, 8);
Then,} copy and paste the code into the Arduino editor and compile, then hit
if(note) {
upload.
channel[ch].tnote = note + channel[ch].transp;
if(!instr) instr = channel[ch].lastinstr;
You're done with the software!
}
if(instr) {
Here isif(instr
the code
case=the
== 2) in
light[1]
5; download is unsuccessful:
if(instr == 1) {
light[0] = 5;
if(channel[ch].tnum == 4) {
light[0] = light[1] = 3;
}
}
if(instr == 7) {
light[0] = light[1] = 30;
}
channel[ch].lastinstr = instr;
channel[ch].inum = instr;
channel[ch].iptr = 0;
channel[ch].iwait = 0;
channel[ch].bend = 0;
channel[ch].bendd = 0;
channel[ch].volumed = 0;
channel[ch].dutyd = 0;
channel[ch].vdepth = 0;
}

Passo 4: Assembly.

(/file/FCQHN6QGVZPGZOH/)

You may be done with the software but the hardware is not finished.
Now, take one of your speaker wires, and then plug it into pin 3 which is a PWM
pin. Then, plug it into ground or power (5 volts or you bust you Arduino. )
You should hear music playing.
Now, hit the reset button to here it from the beginning.
Everytime you hit the reset button, it will play.

Passo 5: Done.

(/file/FGGGG3RGVZOHZF6/)

Now listen to it play the tune.

Passo 6: Adding a Jack.

(/file/FOZFSWFGVZP1MTT/)

(/file/FDXTDI6GVZP1MTW/)

Keep you eyes peeled for updates...

Passo 7: Modulate It!


Connect an LED from pin 3 to ground.
Then, listen to it with the Light Listener (http://www.instructables.com/id/TheLight-Listener/).
Have fun!
I will make on ible on how to modulate EVERYTHING very soon.

Passo 8: Make it Beatbox.


Here's the beatbox code:
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#define TRACKLEN 32
#define MAXTRACK 0x92
#define SONGLEN 0x37
#include <avr/pgmspace.h>
extern "C" {
typedef unsigned char u8;
typedef unsigned short u16;
typedef char s8;
typedef short s16;
typedef unsigned long u32;
byte songdata[] PROGMEM = {
0x87, 0x30, 0x2a, 0x24, 0x45, 0xbb, 0x50, 0x58, 0x20, 0xc3, 0x6c, 0x80,
0x0e, 0xd1, 0x41, 0x3e, 0x4c, 0x58, 0x1a, 0xb1, 0x54, 0xa4, 0x94, 0x19,
0x50, 0x03, 0x97, 0x52, 0x40, 0x60, 0x0a, 0x53, 0x11, 0x2c, 0x9e, 0x45,
0xbe, 0xe8, 0x18, 0x2b, 0xe3, 0x68, 0x9c, 0x8d, 0xc2, 0xd1, 0x39, 0x60,
0xc7, 0xf5, 0xe0, 0x1f, 0x1c, 0x64, 0x88, 0x84, 0x11, 0x3c, 0xb2, 0x48,
0x4e, 0x49, 0x2d, 0x89, 0x26, 0xe8, 0x84, 0x9f, 0x38, 0x94, 0x8e, 0x92,
0x53, 0x9e, 0x4a, 0x57, 0xb1, 0x2b, 0x8d, 0x45, 0xb5, 0x14, 0x67, 0xe9,
0x32, 0x5e, 0xe8, 0x0b, 0x83, 0x29, 0x31, 0x60, 0xc6, 0xcc, 0x68, 0x9a,
0x41, 0x63, 0x6c, 0xaa, 0xcd, 0xb8, 0xe1, 0x37, 0x20, 0x97, 0xe5, 0x24,
0x1d, 0xb9, 0x73, 0x7a, 0x82, 0x4f, 0xf2, 0xc9, 0x3e, 0x03, 0x08, 0x00,
0x00, 0x1b, 0x00, 0x00, 0xa8, 0xb5, 0x00, 0x80, 0x9b, 0x2b, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x20, 0x60, 0x58, 0x40, 0x02, 0x09, 0x00, 0x20,
0x90, 0x00, 0x4c, 0x02, 0x49, 0x00, 0x25, 0x30, 0x00, 0x54, 0x0e, 0x09,
0xc0, 0x24, 0x90, 0x00, 0x4c, 0x02, 0x09, 0x00, 0x25, 0x60, 0x00, 0x54,
0x02, 0x09, 0xc2, 0x24, 0x90, 0x50, 0x4c, 0x02, 0x89, 0x05, 0x25, 0x90,
0x60, 0x54, 0x02, 0x89, 0xc6, 0x24, 0x90, 0x70, 0x4c, 0x02, 0x89, 0x07,
0x25, 0x90, 0x90, 0x5c, 0x0e, 0x89, 0xc6, 0x44, 0x60, 0xc2, 0x7c, 0x04,
0xa7, 0x0c, 0x48, 0x80, 0xd2, 0x84, 0x04, 0xa9, 0x8d, 0x48, 0x88, 0x3e,
0xce, 0x48, 0xa0, 0xea, 0x90, 0x04, 0x2c, 0x4f, 0xe9, 0xb0, 0x1a, 0x10,
0x02, 0x89, 0xd7, 0x24, 0x90, 0x80, 0x51, 0x02, 0x89, 0x58, 0x25, 0x90,
0x90, 0x4d, 0x02, 0x89, 0xd9, 0x24, 0x90, 0xa0, 0x51, 0x02, 0x89, 0xd8,

0x90, 0x4d, 0x02, 0x89, 0xd9, 0x24, 0x90, 0xa0, 0x51, 0x02, 0x89, 0xd8,
0xe5, 0x90, 0x90, 0x4d, 0x82, 0xef, 0x74, 0xe6, 0x34, 0x82, 0xf0, 0x7c,
0x26, 0x35, 0x84, 0xf1, 0x64, 0x66, 0x35, 0x82, 0xf2, 0x6c, 0xe6, 0x34,
0x82, 0xc9, 0x84, 0xe6, 0x34, 0x82, 0xc9, 0x84, 0x26, 0x35, 0x84, 0xc9,
0x8c, 0x66, 0x35, 0x8e, 0xc9, 0x8c, 0xe6, 0x34, 0x8c, 0xf8, 0xcc, 0xe7,
0x34, 0x8c, 0xf8, 0xcc, 0x27, 0x35, 0x8c, 0xf8, 0xcc, 0x67, 0x35, 0x8c,
0xf8, 0xcc, 0xe7, 0x34, 0x8c, 0xf8, 0xcc, 0xe7, 0x34, 0x8c, 0xf8, 0xcc,
0x27, 0x35, 0x88, 0xed, 0xcc, 0xe7, 0x35, 0x90, 0xee, 0x28, 0x5a, 0x03,
0x09, 0x03, 0x08, 0xff, 0x07, 0x01, 0x09, 0x02, 0x01, 0x90, 0x0b, 0x31,
0x05, 0xa0, 0x02, 0xf0, 0x00, 0x08, 0xff, 0x09, 0x03, 0x07, 0x02, 0x09,
0x02, 0x0b, 0x31, 0x01, 0x70, 0x05, 0xd0, 0x07, 0x02, 0x02, 0xf8, 0x04,
0x01, 0x00, 0x09, 0x02, 0x06, 0x05, 0x0b, 0x31, 0x08, 0xff, 0x02, 0xf0,
0x07, 0x06, 0x02, 0x00, 0x07, 0x16, 0x0a, 0x25, 0x00, 0x09, 0x03, 0x08,
0xff, 0x07, 0x01, 0x09, 0x00, 0x06, 0x05, 0x0b, 0x3d, 0x02, 0xf0, 0x07,
0x06, 0x02, 0x00, 0x07, 0x20, 0x02, 0xf0, 0x00, 0x09, 0x03, 0x08, 0xff,
0x07, 0x01, 0x09, 0x02, 0x01, 0x50, 0x06, 0x01, 0x0b, 0x31, 0x07, 0x05,
0x02, 0xfe, 0x00, 0x09, 0x02, 0x01, 0x80, 0x0b, 0x3d, 0x08, 0xc0, 0x02,
0x08, 0x07, 0x02, 0x02, 0xf0, 0x07, 0x02, 0x02, 0x00, 0x07, 0x16, 0x0a,
0x34, 0x00, 0x09, 0x03, 0x08, 0xff, 0x02, 0xfc, 0x00, 0x03, 0x00, 0x09,
0x03, 0x08, 0xff, 0x07, 0x01, 0x09, 0x02, 0x06, 0x05, 0x02, 0xff, 0x0b,
0x3d, 0x07, 0x03, 0x0b, 0x38, 0x07, 0x03, 0x0b, 0x34, 0x07, 0x03, 0x0b,
0x31, 0x07, 0x03, 0x04, 0x07, 0x00, 0x03, 0x00, 0x09, 0x03, 0x08, 0xff,
0x07, 0x01, 0x09, 0x02, 0x06, 0x05, 0x02, 0xff, 0x0b, 0x3d, 0x07, 0x03,
0x0b, 0x38, 0x07, 0x03, 0x0b, 0x35, 0x07, 0x03, 0x0b, 0x31, 0x07, 0x03,
0x04, 0x07, 0x00, 0x03, 0x00, 0x09, 0x03, 0x08, 0xff, 0x07, 0x01, 0x09,
0x02, 0x06, 0x05, 0x02, 0xff, 0x0b, 0x3d, 0x07, 0x03, 0x0b, 0x38, 0x07,
0x03, 0x0b, 0x36, 0x07, 0x03, 0x0b, 0x31, 0x07, 0x03, 0x04, 0x07, 0x00,
0x09, 0x03, 0x08, 0xff, 0x07, 0x01, 0x09, 0x00, 0x06, 0x05, 0x0b, 0x3d,
0x02, 0xf0, 0x07, 0x06, 0x02, 0x00, 0x07, 0x06, 0x0a, 0x25, 0x00, 0x09,
0x03, 0x08, 0xff, 0x02, 0xf0, 0x00, 0x08, 0xc4, 0x09, 0x00, 0x06, 0x05,
0x0b, 0x3d, 0x02, 0xf0, 0x07, 0x06, 0x02, 0x00, 0x07, 0x06, 0x0a, 0x25,
0x00, 0x00, 0x00, 0x6b, 0x04, 0x00, 0x20, 0x0d, 0x2c, 0x23, 0x58, 0x23,
0x00, 0xb4, 0x81, 0x80, 0x44, 0xc0, 0x34, 0x90, 0x06, 0xd2, 0xc0, 0x32,
0x02, 0x60, 0x8d, 0x40, 0x1a, 0x00, 0x11, 0x00, 0x6b, 0x04, 0xd2, 0x00,
0x00, 0x2c, 0x23, 0x00, 0x80, 0x35, 0x02, 0x00, 0x90, 0x06, 0x80, 0x65,
0x04, 0x00, 0x00, 0x00, 0x94, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x8b, 0x45, 0x62,
0x89, 0x25, 0x96, 0x18, 0x12, 0x03, 0x90, 0x18, 0xc2, 0x42, 0x58, 0x00,
0xc2, 0x42, 0x4a, 0x48, 0x09, 0x01, 0x21, 0x20, 0x00, 0x2b, 0x1d, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb,
0x08, 0x11, 0x6a, 0x8d, 0x48, 0x23, 0x0d, 0xa4, 0x81, 0x65, 0x84, 0x08,
0xd0, 0x0c, 0x42, 0x11, 0x01, 0xd6, 0x08, 0xa4, 0x81, 0x65, 0x84, 0x08,
0xb5, 0x46, 0x20, 0x0d, 0xa4, 0x81, 0x65, 0x84, 0x08, 0xb5, 0x46, 0x20,
0x8d, 0x34, 0xd2, 0x48, 0x03, 0x6b, 0x04, 0x00, 0x20, 0x0d, 0x2c, 0x23,
0x44, 0x80, 0x35, 0x02, 0x40, 0x1b, 0x08, 0x98, 0xc6, 0x32, 0x42, 0x04,
0x58, 0x23, 0x90, 0x06, 0xd2, 0xc0, 0x32, 0x82, 0x35, 0x02, 0xcb, 0x08,
0x11, 0x20, 0x19, 0x22, 0x00, 0x6b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xd1, 0x00, 0x20, 0x25,
0x84, 0x86, 0xcc, 0x90, 0x12, 0x12, 0x43, 0x6c, 0xc8, 0x0c, 0xa1, 0x21,
0x25, 0x84, 0x86, 0xcc, 0x90, 0x12, 0x12, 0x43, 0x66, 0xc8, 0x0b, 0xc7,
0xcd, 0x00, 0x00, 0x44, 0x60, 0x00, 0x48, 0x0c, 0x20, 0x02, 0x03, 0x40,
0x70, 0x44, 0x20, 0x22, 0x00, 0x82, 0x23, 0x02, 0x24, 0x07, 0x10, 0x01,
0x62, 0x23, 0x02, 0xa4, 0x87, 0xdc, 0x00, 0xc3, 0x0d, 0x40, 0x04, 0x06,
0x80, 0xc4, 0x00, 0x22, 0x30, 0x00, 0x04, 0x87, 0xd8, 0x10, 0x1a, 0x11,
0x20, 0x31, 0x80, 0x08, 0x10, 0x1a, 0x11, 0x20, 0xb8, 0xe4, 0xb2, 0x4b,
0x0f, 0x03, 0x0e, 0x80, 0x00, 0x91, 0x1e, 0x80, 0xe4, 0x10, 0x21, 0x02,
0x44, 0x7e, 0x08, 0x10, 0x11, 0x22, 0x3b, 0x00, 0xc1, 0x21, 0x33, 0xc4,
0x06, 0x03, 0x0e, 0xf2, 0x03, 0x11, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x00,
0x00, 0x28, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x0d, 0x11, 0x20,
0x33, 0x22, 0x30, 0x10, 0x1a, 0x88, 0x00, 0x48, 0x8c, 0x08, 0x1c, 0x1b,
0x11, 0x20, 0x31, 0x22, 0x40, 0x70, 0xb1, 0x85, 0x86, 0xe0, 0x88, 0x00,
0xb1, 0x21, 0x34, 0x22, 0x40, 0x66, 0x44, 0x80, 0xc4, 0x00, 0x00, 0x63,
0x0d, 0xe7, 0x3f, 0x25, 0x24, 0x86, 0x94, 0x10, 0x16, 0x52, 0x42, 0x62,

0x0d, 0xe7, 0x3f, 0x25, 0x24, 0x86, 0x94, 0x10, 0x16, 0x52, 0x42, 0x62,
0x1c, 0x80, 0x94, 0x10, 0x5a, 0x66, 0x89, 0x85, 0x15, 0x55, 0x50, 0x29,
0x05, 0x14, 0x4e, 0x3c, 0xf9, 0x04, 0x94, 0x52, 0x5a, 0x89, 0x05, 0x07,
0x2b, 0x0d, 0xe7, 0x3f, 0x19, 0x24, 0x83, 0xa0, 0x60, 0x0c, 0x52, 0x42,
0x58, 0xc8, 0x08, 0x29, 0x21, 0x19, 0x24, 0x83, 0xa0, 0x90, 0x17, 0xc2,
0xe2, 0x00, 0xa4, 0x94, 0x53, 0x50, 0x61, 0x01, 0x63, 0x0d, 0xe7, 0x3f,
0x31, 0x24, 0x83, 0xb0, 0x90, 0x12, 0x92, 0x41, 0x58, 0x44, 0x80, 0xc6,
0x06, 0x80, 0x08, 0x90, 0x0c, 0xe7, 0x3f, 0x2c, 0xa4, 0x84, 0x64, 0x90,
0x12, 0x92, 0xe1, 0x00, 0x84, 0x45, 0x04, 0xc8, 0x8b, 0x08, 0x00, 0xa3,
0x0d, 0x11, 0x20, 0x36, 0x00, 0xc1, 0x11, 0x01, 0x81, 0xd0, 0x90, 0x5d,
0x72, 0xc1, 0x21, 0x3b, 0xa4, 0x87, 0xfc, 0x88, 0x00, 0x11, 0x02, 0x08,
0x0e, 0x99, 0x21, 0x36, 0x00, 0x6b, 0x14, 0x12, 0x00, 0x00, 0x80, 0x08,
0x00, 0xc4, 0x10, 0x44, 0x16, 0x48, 0x03, 0x09, 0x20, 0x01, 0x00, 0x20,
0x02, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x46, 0x01, 0x44, 0x40, 0x20, 0x0d,
0x10, 0x01, 0x90, 0x06, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
0x14, 0x00, 0x20, 0x15, 0x10, 0x01, 0x10, 0x08, 0x92, 0x40, 0x0c, 0xc8,
0x02, 0x59, 0x00, 0x44, 0x80, 0x20, 0x88, 0xc0, 0x40, 0x06, 0x44, 0x60,
0x20, 0x08, 0x00, 0x0b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x14, 0x00, 0x20, 0x15, 0x10, 0x01,
0x10, 0x08, 0x92, 0x40, 0x0c, 0x08, 0x02, 0x41, 0x00, 0x44, 0x80, 0x20,
0x88, 0xc0, 0x40, 0x06, 0x44, 0x60, 0x20, 0x08, 0x00, 0x43, 0x19, 0x00,
0x00, 0x00, 0x80, 0x8c, 0x40, 0x04, 0x40, 0x56, 0x00, 0x40, 0x04, 0x88,
0x0a, 0x00, 0x88, 0x00, 0x41, 0x01, 0x44, 0x00, 0x3b, 0x19, 0x00, 0x10,
0x01, 0x82, 0x22, 0x02, 0x44, 0x05, 0x00, 0x00, 0x00, 0x4a, 0x3f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x23, 0x19, 0x00, 0x00, 0x00, 0x80, 0x98, 0x00,
0x04, 0x05, 0x00, 0x00, 0x42, 0x02, 0x58, 0xf8, 0x00, 0x00, 0x1b, 0x19,
0x00, 0x00, 0xa0, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3b, 0x19, 0x80, 0x9c, 0x10, 0x14, 0x80, 0xa0, 0x10, 0x15, 0x00,
0x0a, 0x3e, 0x80, 0xb4, 0x00, 0xa4, 0x85, 0xa8, 0x88, 0x00, 0x21, 0x11,
0x01, 0x32, 0x22, 0x02, 0x00, 0x43, 0x19, 0x00, 0x0a, 0x3f, 0x80, 0xac,
0x00, 0x50, 0xf8, 0x01, 0x44, 0x05, 0x80, 0xc2, 0x0f, 0x20, 0x26, 0xb0,
0x06, 0x00, 0x00, 0x43, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x14, 0x80, 0x10, 0x10, 0x08, 0x80,
0x2c, 0x10, 0x07, 0xf2, 0x40, 0x08, 0x00, 0x42, 0x40, 0x20, 0x00, 0xb2,
0x40, 0x20, 0x81, 0x64, 0x11, 0x02, 0x5b, 0x14, 0x80, 0x2c, 0x90, 0x0b,
0x80, 0x18, 0x90, 0x04, 0xa2, 0x40, 0x16, 0x00, 0xd2, 0x00, 0x10, 0x07,
0x80, 0x3c, 0x58, 0xe0, 0x00, 0x63, 0x14, 0xc2, 0x00, 0x11, 0x00, 0x39,
0x20, 0x0a, 0x84, 0x01, 0x22, 0x00, 0xa2, 0x40, 0x18, 0x08, 0x03, 0x44,
0x00, 0xe4, 0x80, 0x3c, 0x10, 0x07, 0xc2, 0x40, 0x0a, 0x00, 0x3b, 0x14,
0x72, 0x00, 0x90, 0x09, 0x80, 0x40, 0x10, 0x07, 0xb2, 0x40, 0x12, 0x39,
0xe4, 0x92, 0x4a, 0x26, 0x81, 0xc4, 0x91, 0x44, 0x0e, 0x00, 0x92, 0x00,
0x00, 0x5b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x63, 0x14, 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 0xc4,
0x01, 0x00, 0x00, 0x00, 0x20, 0x0e, 0x00, 0x83, 0x14, 0x00, 0x20, 0x10,
0x10, 0x01, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2b, 0x1d, 0x00, 0x00, 0x00, 0x86, 0x42, 0x00, 0x41, 0x11, 0x01, 0x82,
0x02, 0x00, 0x84, 0x46, 0x04, 0x04, 0x42, 0x23, 0x02, 0x04, 0x05, 0x00,
0x1b, 0x25, 0x00, 0x10, 0x01, 0xf2, 0x22, 0x02, 0x02, 0x19, 0x01, 0xc8,
0x88, 0x08, 0x90, 0x17, 0x80, 0x8c, 0x00, 0x64, 0x84, 0xbc, 0x90, 0x11,
0x00, 0x23, 0x25, 0x00, 0x10, 0x01, 0x02, 0x23, 0x02, 0x02, 0x21, 0x01,
0x08, 0x89, 0x08, 0x10, 0x12, 0x00, 0x20, 0x30, 0x22, 0x20, 0x10, 0x18,
0x11, 0x20, 0x24, 0x00, 0x5b, 0x25, 0x11, 0x20, 0x1f, 0x80, 0x08, 0x90,
0x15, 0x11, 0x20, 0x2b, 0x22, 0x40, 0x3e, 0x00, 0x11, 0x20, 0x2b, 0x22,
0x40, 0x56, 0x44, 0x80, 0x7c, 0x00, 0x22, 0x40, 0x3e, 0x00, 0xb2, 0x22,
0x02, 0x02, 0xf9, 0x10, 0x01, 0x00, 0x23, 0x25, 0x80, 0x90, 0x88, 0x00,
0x81, 0x81, 0x08, 0x80, 0xc0, 0x88, 0x00, 0x21, 0x01, 0x88, 0x09, 0x44,
0x00, 0xc4, 0x44, 0x04, 0x88, 0x0c, 0x20, 0x02, 0x44, 0x46, 0x04, 0x88,
0x89, 0x08, 0x10, 0x19, 0x11, 0x00, 0xa3, 0x25, 0x42, 0x0b, 0x2d, 0x34,
0x22, 0x40, 0x50, 0x20, 0x02, 0x20, 0x28, 0x22, 0x40, 0x50, 0x08, 0x0d,
0x41, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x29, 0x42, 0x0b, 0x2a,
0x34, 0x22, 0x40, 0x50, 0x20, 0x02, 0x20, 0x28, 0x22, 0x40, 0x50, 0x00,
0x42, 0x43, 0x68, 0xa1, 0x85, 0x46, 0x04, 0x08, 0x0a, 0x44, 0x00, 0x04,

0x45, 0x04, 0x08, 0x0a, 0xa1, 0x01, 0x0b, 0x25, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x21, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b,
0x1d, 0x00, 0x00, 0x18, 0x6b, 0x91, 0x12, 0x80, 0xb0, 0x90, 0x18, 0xc2,
0x42, 0x4a, 0x08, 0x8d, 0x02, 0x90, 0x19, 0xc2, 0x42, 0x4a, 0x88, 0x0d,
0xc3, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0c,
0xa1, 0xc5, 0x96, 0x5b, 0x70, 0xd9, 0xa5, 0x07, 0x03, 0x2e, 0x00, 0x00,
0x48, 0x0f, 0x40, 0x80, 0x00, 0xf2, 0x23, 0x02, 0x64, 0x07, 0x22, 0x00,
0x82, 0x03, 0x10, 0x1c, 0x11, 0x20, 0x3f, 0x64, 0x07, 0x03, 0x6e, 0x7e,
0xe9, 0x05, 0x17, 0x5a, 0x66, 0xb1, 0x65, 0x16, 0x5a, 0x66, 0x89, 0x85,
0x95, 0x57, 0x54, 0x99, 0xe5, 0x95, 0x18, 0x11, 0x20, 0x31, 0x22, 0x40,
0x62, 0x44, 0x80, 0xc4, 0x00, 0x22, 0x40, 0x62, 0x44, 0x80, 0xf4, 0x88,
0x00, 0x89, 0x11, 0x01, 0x00, 0x03, 0x2e, 0x12, 0x43, 0x62, 0x48, 0x0f,
0x89, 0x21, 0x3d, 0x44, 0x18, 0x60, 0x7e, 0x08, 0x10, 0x89, 0x21, 0x31,
0xa4, 0x87, 0xc4, 0x90, 0x1e, 0x22, 0x0c, 0x30, 0x3f, 0x00, 0xfb, 0x2d,
0x02, 0x24, 0x02, 0x84, 0x48, 0x04, 0x48, 0x6f, 0xc4, 0x9e, 0x70, 0xd7,
0xeb, 0xc5, 0x76, 0xc2, 0x1e, 0x70, 0x17, 0xeb, 0xe1, 0x76, 0xc0, 0xde,
0x6f, 0xd7, 0xeb, 0xc5, 0x76, 0xbf, 0xde, 0x6e, 0x17, 0xeb, 0xe1, 0x76,
0xbb, 0x1e, 0x6e, 0x87, 0xeb, 0xc5, 0x76, 0xc4, 0xde, 0x6e, 0x17, 0xeb,
0xf5, 0x36, 0x3f, 0xa3, 0x0d, 0x00, 0x00, 0x48, 0x0c, 0x40, 0x68, 0x00,
0x32, 0x03, 0x00, 0x00, 0x89, 0x01, 0xc8, 0x0b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbd, 0x26, 0xb1, 0xcc,
0x00, 0x7f, 0x4d, 0x41, 0x00, 0x48, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x21, 0x11, 0x20, 0x25, 0x80, 0x08,
0x90, 0x58, 0x62, 0x29, 0x11, 0x01, 0x52, 0x22, 0x02, 0x00, 0x29, 0x11,
0x01, 0x56, 0x52, 0x22, 0x00, 0x90, 0x12, 0x11, 0x60, 0x25, 0x24, 0x02,
0x00, 0x29, 0x11, 0x01, 0x52, 0x22, 0x02, 0xa4, 0x44, 0x04, 0x00, 0xcf,
0xcc, 0xc0, 0x11, 0x01, 0x52, 0x22, 0x02, 0xa4, 0x44, 0x04, 0x48, 0x86,
0x08, 0x90, 0x12, 0x11, 0x20, 0x19, 0x22, 0x40, 0x4a, 0x44, 0x80, 0x94,
0x88, 0x00, 0xc9, 0x10, 0x01, 0x52, 0x22, 0x02, 0xa4, 0x44, 0x04, 0x48,
0x86, 0x08, 0x90, 0x12, 0x11, 0xa0, 0x99, 0x01, 0x68, 0x46, 0x80, 0x53,
0x22, 0x02, 0xa4, 0x44, 0x04
};
volatile u8 callbackwait;
volatile u8 lastsample;
volatile u8 timetoplay;
volatile u8 test;
volatile u8 testwait;
u8 trackwait;
u8 trackpos;
u8 playsong;
u8 songpos;
u32 noiseseed = 1;
u8 light[2];
/*const u16 freqtable[] = {
0x010b, 0x011b, 0x012c, 0x013e, 0x0151, 0x0165, 0x017a, 0x0191, 0x01a9,
0x01c2, 0x01dd, 0x01f9, 0x0217, 0x0237, 0x0259, 0x027d, 0x02a3, 0x02cb,
0x02f5, 0x0322, 0x0352, 0x0385, 0x03ba, 0x03f3, 0x042f, 0x046f, 0x04b2,
0x04fa, 0x0546, 0x0596, 0x05eb, 0x0645, 0x06a5, 0x070a, 0x0775, 0x07e6,
0x085f, 0x08de, 0x0965, 0x09f4, 0x0a8c, 0x0b2c, 0x0bd6, 0x0c8b, 0x0d4a,
0x0e14, 0x0eea, 0x0fcd, 0x10be, 0x11bd, 0x12cb, 0x13e9, 0x1518, 0x1659,
0x17ad, 0x1916, 0x1a94, 0x1c28, 0x1dd5, 0x1f9b, 0x217c, 0x237a, 0x2596,
0x27d3, 0x2a31, 0x2cb3, 0x2f5b, 0x322c, 0x3528, 0x3851, 0x3bab, 0x3f37,
0x42f9, 0x46f5, 0x4b2d, 0x4fa6, 0x5462, 0x5967, 0x5eb7, 0x6459, 0x6a51,
0x70a3, 0x7756, 0x7e6f

0x70a3, 0x7756, 0x7e6f


};*/
const u16 freqtable[] = {
0x0085, 0x008d, 0x0096, 0x009f, 0x00a8, 0x00b2, 0x00bd, 0x00c8, 0x00d4,
0x00e1, 0x00ee, 0x00fc, 0x010b, 0x011b, 0x012c, 0x013e, 0x0151, 0x0165,
0x017a, 0x0191, 0x01a9, 0x01c2, 0x01dd, 0x01f9, 0x0217, 0x0237, 0x0259,
0x027d, 0x02a3, 0x02cb, 0x02f5, 0x0322, 0x0352, 0x0385, 0x03ba, 0x03f3,
0x042f, 0x046f, 0x04b2, 0x04fa, 0x0546, 0x0596, 0x05eb, 0x0645, 0x06a5,
0x070a, 0x0775, 0x07e6, 0x085f, 0x08de, 0x0965, 0x09f4, 0x0a8c, 0x0b2c,
0x0bd6, 0x0c8b, 0x0d4a, 0x0e14, 0x0eea, 0x0fcd, 0x10be, 0x11bd, 0x12cb,
0x13e9, 0x1518, 0x1659, 0x17ad, 0x1916, 0x1a94, 0x1c28, 0x1dd5, 0x1f9b,
0x217c, 0x237a, 0x2596, 0x27d3, 0x2a31, 0x2cb3, 0x2f5b, 0x322c, 0x3528,
0x3851, 0x3bab, 0x3f37
};
const s8 sinetable[] = {
0, 12, 25, 37, 49, 60, 71, 81, 90, 98, 106, 112, 117, 122, 125, 126,
127, 126, 125, 122, 117, 112, 106, 98, 90, 81, 71, 60, 49, 37, 25, 12,
0, -12, -25, -37, -49, -60, -71, -81, -90, -98, -106, -112, -117, -122,
-125, -126, -127, -126, -125, -122, -117, -112, -106, -98, -90, -81,
-71, -60, -49, -37, -25, -12
};
const u8 validcmds[] = "0dfijlmtvw~+=";
enum {
WF_TRI,
WF_SAW,
WF_PUL,
WF_NOI
};
volatile struct oscillator {
u16 freq;
u16 phase;
u16 duty;
u8 waveform;
u8 volume; // 0-255
} osc[4];
struct trackline {
u8 note;
u8 instr;
u8 cmd[2];
u8 param[2];
};
struct track {
struct trackline line[TRACKLEN];
};
struct unpacker {
u16 nextbyte;
u8 buffer;
u8 bits;
};
struct channel {
struct unpacker trackup;
u8 tnum;
s8 transp;
u8 tnote;

u8 tnote;
u8 lastinstr;
u8 inum;
u16 iptr;
u8 iwait;
u8 inote;
s8 bendd;
s16 bend;
s8 volumed;
s16 dutyd;
u8 vdepth;
u8 vrate;
u8 vpos;
s16 inertia;
u16 slur;
} channel[4];
u16 resources[16 + MAXTRACK];
struct unpacker songup;
byte readsongbyte(u16 offset)
{
return pgm_read_byte_near(&songdata[0] + offset);
}
void watchdogoff()
{
}
void initup(struct unpacker *up, u16 offset) {
up->nextbyte = offset;
up->bits = 0;
}
u8 readbit(struct unpacker *up) {
u8 val;
if(!up->bits) {
up->buffer = readsongbyte(up->nextbyte++);
up->bits = 8;
}
up->bits--;
val = up->buffer & 1;
up->buffer >>= 1;
return val;
}
u16 readchunk(struct unpacker *up, u8 n) {
u16 val = 0;
u8 i;
for(i = 0; i < n; i++) {
if(readbit(up)) {
val |= (1 << i);
}
}

return val;
}
void readinstr(byte num, byte pos, byte *dest) {
dest[0] = readsongbyte(resources[num] + 2 * pos + 0);
dest[1] = readsongbyte(resources[num] + 2 * pos + 1);
}
void runcmd(u8 ch, u8 cmd, u8 param) {
switch(validcmds[cmd]) {
case '0':
channel[ch].inum = 0;
break;
case 'd':
osc[ch].duty = param << 8;
break;
case 'f':
channel[ch].volumed = param;
break;
case 'i':
channel[ch].inertia = param << 1;
break;
case 'j':
channel[ch].iptr = param;
break;
case 'l':
channel[ch].bendd = param;
break;
case 'm':
channel[ch].dutyd = param << 6;
break;
case 't':
channel[ch].iwait = param;
break;
case 'v':
osc[ch].volume = param;
break;
case 'w':
osc[ch].waveform = param;
break;
case '+':
channel[ch].inote = param + channel[ch].tnote - 12 * 4;
break;
case '=':
channel[ch].inote = param;
break;
case '~':
if(channel[ch].vdepth != (param >> 4)) {
channel[ch].vpos = 0;
}
channel[ch].vdepth = param >> 4;
channel[ch].vrate = param & 15;
break;
}
}
void playroutine() { // called at 50 Hz
u8 ch;
u8 lights;
if(playsong) {
if(trackwait) {

if(trackwait) {
trackwait--;
} else {
trackwait = 4;
if(!trackpos) {
if(playsong) {
if(songpos >= SONGLEN) {
playsong = 0;
} else {
for(ch = 0; ch < 4; ch++) {
u8 gottransp;
u8 transp;
gottransp = readchunk(&songup, 1);
channel[ch].tnum = readchunk(&songup, 6);
if(gottransp) {
transp = readchunk(&songup, 4);
if(transp & 0x8) transp |= 0xf0;
} else {
transp = 0;
}
channel[ch].transp = (s8) transp;
if(channel[ch].tnum) {
initup(&channel[ch].trackup, resources[16 + channel[ch].tnum - 1]);
}
}
songpos++;
}
}
}
if(playsong) {
for(ch = 0; ch < 4; ch++) {
if(channel[ch].tnum) {
u8 note, instr, cmd, param;
u8 fields;
fields = readchunk(&channel[ch].trackup, 3);
note = 0;
instr = 0;
cmd = 0;
param = 0;
if(fields & 1) note = readchunk(&channel[ch].trackup, 7);
if(fields & 2) instr = readchunk(&channel[ch].trackup, 4);
if(fields & 4) {
cmd = readchunk(&channel[ch].trackup, 4);
param = readchunk(&channel[ch].trackup, 8);
}
if(note) {
channel[ch].tnote = note + channel[ch].transp;
if(!instr) instr = channel[ch].lastinstr;
}
if(instr) {
if(instr == 2) light[1] = 5;
if(instr == 1) {
light[0] = 5;
if(channel[ch].tnum == 4) {
light[0] = light[1] = 3;
}
}
if(instr == 7) {
light[0] = light[1] = 30;

light[0] = light[1] = 30;


}
channel[ch].lastinstr = instr;
channel[ch].inum = instr;
channel[ch].iptr = 0;
channel[ch].iwait = 0;
channel[ch].bend = 0;
channel[ch].bendd = 0;
channel[ch].volumed = 0;
channel[ch].dutyd = 0;
channel[ch].vdepth = 0;
}
if(cmd) runcmd(ch, cmd, param);
}
}
trackpos++;
trackpos &= 31;
}
}
}
for(ch = 0; ch < 4; ch++) {
s16 vol;
u16 duty;
u16 slur;
while(channel[ch].inum && !channel[ch].iwait) {
u8 il[2];
readinstr(channel[ch].inum, channel[ch].iptr, il);
channel[ch].iptr++;
runcmd(ch, il[0], il[1]);
}
if(channel[ch].iwait) channel[ch].iwait--;
if(channel[ch].inertia) {
s16 diff;
slur = channel[ch].slur;
diff = freqtable[channel[ch].inote] - slur;
//diff >>= channel[ch].inertia;
if(diff > 0) {
if(diff > channel[ch].inertia) diff = channel[ch].inertia;
} else if(diff < 0) {
if(diff < -channel[ch].inertia) diff = -channel[ch].inertia;
}
slur += diff;
channel[ch].slur = slur;
} else {
slur = freqtable[channel[ch].inote];
}
osc[ch].freq =
slur +
channel[ch].bend +
((channel[ch].vdepth * sinetable[channel[ch].vpos & 63]) >> 2);
channel[ch].bend += channel[ch].bendd;
vol = osc[ch].volume + channel[ch].volumed;
if(vol < 0) vol = 0;
if(vol > 255) vol = 255;
osc[ch].volume = vol;

duty = osc[ch].duty + channel[ch].dutyd;


if(duty > 0xe000) duty = 0x2000;
if(duty < 0x2000) duty = 0xe000;
osc[ch].duty = duty;
channel[ch].vpos += channel[ch].vrate;
}
lights = 0;
if(light[0]) {
light[0]--;
lights |= 0x02;
}
if(light[1]) {
light[1]--;
lights |= 0x10;
}
PORTC = lights;
}
void initresources() {
u8 i;
struct unpacker up;
initup(&up, 0);
for(i = 0; i < 16 + MAXTRACK; i++) {
resources[i] = readchunk(&up, 13);
}
initup(&songup, resources[0]);
}
int main() {
asm("cli");
watchdogoff();
CLKPR = 0x80;
CLKPR = 0x80;
DDRC = 0x12;
DDRD = 0xff;
PORTC = 0;
timetoplay = 0;
trackwait = 0;
trackpos = 0;
playsong = 1;
songpos = 0;
osc[0].volume = 0;
channel[0].inum = 0;
osc[1].volume = 0;
channel[1].inum = 0;
osc[2].volume = 0;
channel[2].inum = 0;
osc[3].volume = 0;
channel[3].inum = 0;
initresources();
TCCR0A = 0x02;

TCCR0A = 0x02;
TCCR0B = 0x02; // clkIO/8, so 1/8 MHz
OCR0A = 125;//125; // 8 KHz
TCCR2A=0b10100011;
TCCR2B=0b00000001;
TIMSK0 = 0x02;
asm("sei");
for(;;) {
while(!timetoplay);
timetoplay--;
playroutine();
}
}

ISR(TIMER0_COMPA_vect) // called at 8 KHz


{
u8 i;
s16 acc;
u8 newbit;
OCR2B = lastsample;
newbit = 0;
if(noiseseed & 0x80000000L) newbit ^= 1;
if(noiseseed & 0x01000000L) newbit ^= 1;
if(noiseseed & 0x00000040L) newbit ^= 1;
if(noiseseed & 0x00000200L) newbit ^= 1;
noiseseed = (noiseseed << 1) | newbit;
if(callbackwait) {
callbackwait--;
} else {
timetoplay++;
callbackwait = 180 - 1;
}
acc = 0;
for(i = 0; i < 4; i++) {
s8 value; // [-32,31]
switch(osc[i].waveform) {
case WF_TRI:
if(osc[i].phase < 0x8000) {
value = -32 + (osc[i].phase >> 9);
} else {
value = 31 - ((osc[i].phase - 0x8000) >> 9);
}
break;
case WF_SAW:
value = -32 + (osc[i].phase >> 10);
break;
case WF_PUL:
value = (osc[i].phase > osc[i].duty)? -32 : 31;
break;
case WF_NOI:
value = (noiseseed & 63) - 32;
break;
default:

default:
value = 0;
break;
}
osc[i].phase += osc[i].freq;
acc += value * osc[i].volume; // rhs = [-8160,7905]
}
// acc [-32640,31620]
lastsample = 128 + (acc >> 8); // [1,251]
}
}

Now, in the longest data table, you can change the numbers...to get random
blips and bleeps. Have FUN!!!

Ns temos uma poltica de comentrios em que todos devem ser gentis.


Por favor, seja positivo e construtivo.

editar imagem

Jean_Rolszt (/pt/member/Jean_Rolszt/) diz:

Postar Comentrio

Jun 2, 2014. 3:27 PM

(/pt/member/Jean_Rolszt/)
Very cool :D

(http://cdn.instructables.com/F1A/Z2WQ/HVXE0SAD/F1AZ2WQHVXE0SAD.LARGE.jpg)
Flag

X
8

Responder

joesinstructables (/pt/member/joesinstructables/) diz: Mai 15, 2014. 10:38 AM

Thanks for posting this. Is there a library somewhere of other tunes?


(/pt/member/joesinstructables/)

(http://cdn.instructables.com/FRH/QZ2M/HV80IK2W/FRHQZ2MHV80IK2W.LARGE.jpg)

(http://cdn.instructables.com/FIY/R5UM/HV850FFL/FIYR5UMHV850FFL.LARGE.jpg)

Flag

teknohawk (/pt/member/teknohawk/) diz:

Responder

Mai 20, 2013. 7:43 PM

I want the entire song to start over. Thanks.


(/pt/member/teknohawk/)
Flag

teknohawk (/pt/member/teknohawk/) diz:

Responder

Mai 13, 2013. 3:40 PM

I am absolutely astounded! I cannot believe this amazing Instructable. One


(/pt/member/teknohawk/)
question though, is there a way to add a "void loop() {" Function? If so, can
you please tell me how?
Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Mai 13, 2013. 4:31 PM


|
8 Do you want the song to loop itself or do you just want a void loop?
(/pt/member/blinkyblinky/)
Flag

aaronXtreme (/pt/member/aaronXtreme/) diz:

Responder

Abr 9, 2013. 12:43 PM

the code did not work.it plays for out 3 seconds the makes a fuzzy sound
(/pt/member/aaronXtreme/)
that doesnt end.
is he code mesed up or what. help.
Flag

freakbyte (/pt/member/freakbyte/) diz:

Responder

Out 29, 2012. 5:23 PM

Hi, I just wanted to thank you for this, and say that the leds are on pin 12
(/pt/member/freakbyte/)
and 10 if you didn't know already. Just found out while looking trough the
code :)
Flag

powerman666 (/pt/member/powerman666/) diz:

Responder

Ago 29, 2012. 9:15 PM

How do you generate the data for the songs? I have a great Idea for storing
(/pt/member/powerman666/)
them on an SD card for playback.
Flag

X
8

origamic12 (/pt/member/origamic12/) diz:

Responder

Abr 4, 2012. 3:39 PM

Nice. I got it to work.


(/pt/member/origamic12/)
Flag

X blinkyblinky (/pt/member/blinkyblinky/) diz:


|
8 You're welcome.
(/pt/member/blinkyblinky/)

Abr 4, 2012. 4:57 PM

Flag

tim127 (/pt/member/tim127/) diz:

Responder

Responder

Jan 22, 2012. 3:47 PM

Couldn't you just plug in a 1/4in guitar cable with the wire exposed on one
(/pt/member/tim127/)
end for an amp?
Flag

blinkyblinky (/pt/member/blinkyblinky/) diz:

Responder

Mar 30, 2013. 4:19 PM

X blinkyblinky (/pt/member/blinkyblinky/) diz: Mar 30, 2013. 4:19 PM


|
8 Further later on, I did just that except with the 3.5mm cable.
(/pt/member/blinkyblinky/)
Flag

X
|
8

Higgs+Boson (/pt/member/Higgs+Boson/) diz:

Responder

Jan 14, 2012. 4:18 PM

this was very cool. I cannot imagine having to write out all of the code.
(/pt/member/Higgs+Boson/)
Thank god for copy paste.
Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Jan 14, 2012. 4:31 PM


|
8 I know right? I am not the writer, though. The Arduino code is by
(/pt/member/blinkyblinky/)
Stimmer in the Arduino Forums.
Flag

Axlzero451 (/pt/member/Axlzero451/) diz:

Responder

Dez 18, 2011. 6:10 PM

I instantly recognized the song the second it started in the video. I've been
(/pt/member/Axlzero451/)
wanting to build one of those for years now. For all those who haven't heard
of this before: http://www.youtube.com/watch?v=_uU4BzSQQmY
Flag

X blinkyblinky (/pt/member/blinkyblinky/) diz:


|
8 Well...enjoy!
(/pt/member/blinkyblinky/)

Responder

Dez 18, 2011. 6:23 PM

I couldn't get the LEDs though...

Flag

|
8

Bongmaster (/pt/member/Bongmaster/) diz:

Responder

Dez 11, 2011. 7:10 PM

neat
(/pt/member/Bongmaster/)
where did u get the code?
Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Dez 11, 2011. 7:41 PM


|
8 In a mystical book in my basement that writes code for me.
(/pt/member/blinkyblinky/)
Just kidding.
I got it in the Arduino forums.

I got it in the Arduino forums.


Flag

|
8

Bongmaster (/pt/member/Bongmaster/) diz:

Responder

Dez 12, 2011. 12:19 AM

kool.
(/pt/member/Bongmaster/)
linky?
Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Dez 12, 2011. 10:36 AM


|
8 The code is right here in my ible. Why do you need the link?
(/pt/member/blinkyblinky/)
Flag

|
8

Bongmaster (/pt/member/Bongmaster/) diz:

Responder

Dez 12, 2011. 12:54 PM

to the forum topic, wanted to know more about the thing.


(/pt/member/Bongmaster/)
doesnt matter, did some looking about and found the origonal project
:)
Flag

X blinkyblinky (/pt/member/blinkyblinky/) diz:


|
8 Good for you. :-)
(/pt/member/blinkyblinky/)

Dez 12, 2011. 1:24 PM

Flag

therobomaker (/pt/member/therobomaker/) diz:

Responder

Responder

Dez 11, 2011. 3:56 PM

Cool.
(/pt/member/therobomaker/)
Flag

X blinkyblinky (/pt/member/blinkyblinky/) diz:


|
8 Thank you.
(/pt/member/blinkyblinky/)

Responder

Dez 11, 2011. 3:57 PM

Flag

X
|
8

randofo (/pt/member/randofo/) diz:

Responder

Dez 11, 2011. 10:01 AM

Very awesome.
(/pt/member/randofo/)

You need to add a VCF next or at least a simple low pass filter. Check out
the right side of this schematic
(http://www.musicfromouterspace.com/analogsynth_new/THE_CAVE/Your%20First%20Synth/Your%20First%20Synth_files/your_first_synth.g
You can simply make buy an 1/8" plug from Radioshack and solder two
wires onto it. Then, get a small test amp from Radioshack (about $15) and
plug the jack into that.
Also, check out the book Handmade Electronic Music
(http://books.google.com/books/about/Handmade_electronic_music.html?
id=P1yEOTci8DMC) if you have not done so already.

Flag

Responder

X randofo (/pt/member/randofo/) diz:


Dez 11, 2011. 10:04 AM
|
8 Also, where is the song data from? How was it generated?
(/pt/member/randofo/)
Flag

Responder

Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Dez 11, 2011. 3:01 PM


|
8 I think it from the data in the code that is sort of like a table. I tried
(/pt/member/blinkyblinky/)
altering half the data and it gave me some pretty weird sounds.
Flag

Ora (/pt/member/Ora/) diz:

Responder

Dez 12, 2011. 10:17 PM

This is the original project that this is a ported version of:


(/pt/member/Ora/)
http://www.linusakesson.net/hardware/chiptune.php
(http://www.linusakesson.net/hardware/chiptune.php)
Here's the thread with the port: http://www.arduino.cc/cgibin/yabb2/YaBB.pl?num=1265488118 (http://www.arduino.cc/cgibin/yabb2/YaBB.pl?num=1265488118)
I tried downloading the tracker from the original project page, but I
have no idea how to actually get the tracker to run...
Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Ago 21, 2012. 8:07 AM


|
8 You need a Linux OS like Ubuntu or similar. I am running OpenSuse
(/pt/member/blinkyblinky/)
11.3 but it should be very similar. You will need to install libSDL next.
Then Open a terminal and use the 'change directory' command (cd)
to get to where you hid the file on your computer. Next go to the
same place using the GUI of your OS and read the readme file.
I don't have the file with me but I can say you execute it with
something like this (again check the readme file for a more accurate
command): ./tracker test2.song It should open up as a tracker.
I don't know much aside from the fact you can make it play, idle or
editable. Then use the app here
(http://bearborne.blogspot.com/2011/12/hi-everyone-today-im-backagain-with.html). You will need gcc and java for it to run.
Here (http://bearborne.blogspot.com/2012/02/lft-tracker-howto.html)
is how you use the tracker.

Flag

Responder

X blinkyblinky (/pt/member/blinkyblinky/) diz: Dez 11, 2011. 2:32 PM


|
8 Yeah, I have an amp...I also have the jack...just didn't know how to
(/pt/member/blinkyblinky/)
explain on my ible.
Flag

Vamos fazer:

Responder

Portugus

Mapa do site (/pt/sitemap/) | Termos de servio (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=22003120) |


Poltica de privacidade (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=21342230) | contate-nos (/pt/contact/)
(http://usa.autodesk.com/adsk/servlet/pc/index?id=20781545&siteID=123112)
Copyright 2014 Autodesk Inc. Todos os direitos reservados.

Você também pode gostar