AVR TinyTune
category: general [glöplog]
Hello.
I found very very nice project on Google Code.
It is sounds very similar to Nintendo NES's soundchip.
And what is very cool? There is tool which can convert RENOISE (XRNS) tracker module to C and replay it on very small ATMEL attyny MCU.
DOCUMENTATION:
https://github.com/blakelivingston/avr_tinytune
SOURCE:
http://code.google.com/p/avr-lib-tinytune/
YOUTUBE:
http://youtube.com/watch?v=PtxxCKs822M
I found very very nice project on Google Code.
It is sounds very similar to Nintendo NES's soundchip.
And what is very cool? There is tool which can convert RENOISE (XRNS) tracker module to C and replay it on very small ATMEL attyny MCU.
DOCUMENTATION:
https://github.com/blakelivingston/avr_tinytune
SOURCE:
http://code.google.com/p/avr-lib-tinytune/
YOUTUBE:
http://youtube.com/watch?v=PtxxCKs822M
Cute :)
Not too shabby. I'm working on something similar, but with more channels :)
@Tjoppen>Will you have webpage or github, sourceforge for your project?
@Tjoppen: what specific hardware are you using?
I've got a few of those chips on my office. I'll try to play with it if I find time.
* Burp *
Matko, trä_wm: Oh, ATmega328 (arduino nano). I'll see if I can get the code up later. Else poke me on IRC
Ah, so no high-speed PWM but more capable instruction set (yay! fixed-point MULs!) compared to the ATtiny85. Would like to hear some of your results!
I've also made a mod-player on avr xmega but unfortunately there isnt enough RAM to play a mod correctly @ >= 22050Hz :(. The process of each line is too long and I can't extend the circular buffer. Here is some details about that player:
XMEGA 128a1 @ 32Mhz
RAM 8Kbyte
1 8-bit DAC Mono (no crappy-PWM :D)
Samplerate 11025Hz
Circular buffer 5Kbytes
Fixed point Q16.16
Btw the avr fixed point MUL instruction (FMUL) is a Q1.7 x Q1.7 => Q1.15. This is not helpful for a mod-player :(
There is an other mod player on PIC32 µC code video
XMEGA 128a1 @ 32Mhz
RAM 8Kbyte
1 8-bit DAC Mono (no crappy-PWM :D)
Samplerate 11025Hz
Circular buffer 5Kbytes
Fixed point Q16.16
Btw the avr fixed point MUL instruction (FMUL) is a Q1.7 x Q1.7 => Q1.15. This is not helpful for a mod-player :(
There is an other mod player on PIC32 µC code video
Surely FMUL/MUL instructions can be paired to create larger than Q1.7 arithmetic.
ah yeah right. Anyway, this is still a good µc if you want to write your own player with your own format.
Two weeks later, but here's what I was working on: an 8-channel MIDI synthesizer/tone generator. Not terribly complicated, but a fun experiment :) Proves 8 channels of square waves can be synthesized at 44.1 kHz without problem.
Code: https://github.com/Tjoppen/midi_synth
Picture:
Code: https://github.com/Tjoppen/midi_synth
Picture:
That's nice!
Like the TODO list: ADSR :)
/N.
Like the TODO list: ADSR :)
/N.
Nice to see some bread-boarding. But 8 channels of square waves isn't exactly a challenge, is it? Wouldn't it be quite computationally light?
Well, it's hard to press more than eight keys at a time on a keyboard :)
But it could probably be optimized quite a bit more. For instance the overflow stuff can likely be handled via the LUT. Another idea would be table driven synthesis for other waveforms. 16 MHz / 44.1 kHz = 362, so around 350 instructions per sample after interrupt overhead. But I won't poke much further - this was good enough for learning a bit of MIDI. Plus I have a proper MIDI tone generator now (Yahama TG100)
But it could probably be optimized quite a bit more. For instance the overflow stuff can likely be handled via the LUT. Another idea would be table driven synthesis for other waveforms. 16 MHz / 44.1 kHz = 362, so around 350 instructions per sample after interrupt overhead. But I won't poke much further - this was good enough for learning a bit of MIDI. Plus I have a proper MIDI tone generator now (Yahama TG100)
Nice Tjoppen!
Freezedream are you that Freeze from SEGA scene?
Freezedream are you that Freeze from SEGA scene?