12/01/2014 at 17:56 •
I just ordered a few parts that will compose the project for the sake of the deadline I preferred to reduce at a minimum implementation of non-project-related stuff, so I moved on ready-made parts. There will still be 16 buttons in a 4x4 matrix, with green LEDs, then I moved onto a mini OLED display and a 4-way+button mini joystick for feature selection/navigation. For the audio output, I'm currently evaluating the idea of using PWM to create real time synthesis and 1-bit audio using the Roman Black's BTc algorithm; this will reduce samples size drastically while keeping good quality (for an 8-bit lo fi project); I'd fix with 16 kHz sampling/interrupt frequency so to have more time for processing and more space for audio (at 16 kHz, I could fit 8 seconds of audio in almost 16 KB, that leaves 12 KB of program space). I'm still considering the idea of using an external ROM, to save multiple songs, also.
Anyway, I finally cut out some time to test stuff and in the last hour or so (I'm using my sleep hours right now) I got the BTc audio decoding up and running on an Arduino Leonardo (the first one that I had lying around). The audio output is very low on volume, but you can kind of hear it in the demo video that you can find here:
As usual, you can find the code on my Google Drive pages:
Stay tuned for more updates!
11/27/2014 at 16:11 •
If you are reading this then you are awesome!
Therefore I'd like to share with you a bit of ideas that my mind is spitting out for this project, which for your information has been lingering in my head for a few years now.
There will be for sure an ATMega328P with the Trinket Pro firmware, and I'm also considering the idea to add a secondary CPU, probably an ATTiny of some sorts, so to divide interface handling and audio generation; I was actually pointing towards dedicated sound generation ICs much like a SID but I'm having a difficult time finding modern, easily available chips like that, so I may rely on DDS using PWM; everything will be of course battery powered and rechargeable via USB; finally there'll be a little audio amp that will provide at least an headphones output, more likely a dual line/headphone out (so to record it through any equipment that has a line-in). A pair of 0.5 W on-board speakers would be a great add-on, with a switch to turn them on or off, or maybe with an automatic on-off switch attached to the headphones jack.
Ever used a Roland TR-808, TR-909 or a TB-303 ? No? Me neither, not in real hardware at least, but I've used a few software clones that kinda replicate their functionality (see Rebirth). I'm aiming to a mix of both worlds, that is to say there will be a drum track as well as instrument tracks; the drum track will have a few playable samples that will be configurable like on the 808, so you select a sample, then you select on what 16ths it will trigger; the instrument tracks will work in a similar way, that is you select what note will play on which 16th, with an option to select legato between notes, so that if you wish to hold a note for a 4th you put the same note on four consecutives 16ths and select legato on the last three. I hope to put at least 4 separate tracks to have drums, bass, chords, lead tracks to create the most basic but functional music, but I'm pointing towards 16 concurrent sounds, with dedicated PCM samples channels (to play said drums). There will be the possibility to create multi-track patterns and to arrange those patterns to create complete songs, and also there will be the possibility to save the song on a PC via USB or to upload a song to the BitMasher via USB, along with samples.
Buttons, buttons, and... more buttons. There will be a 4x4 button matrix used, which represents the 16 16ths that compose a single bar, just like the 16 buttons on a 808, but in a matrix. There will be LEDs to give a visual representation of what's happening in the currently selected pattern; there will also be some more buttons to select different features, such as legato, to select between Song edit, Pattern edit, Track edit; all of the features will rely on the 4x4 matrix to do what they have to do; for example, in Song edit mode if you click button 4 it will let you select a pattern that will be the 4th bar of the song; or in Pattern edit mode, if you push a button it will let you select a pattern to edit; and in Track edit mode if you push a button it will let you edit the corresponding track notes; there has to be some sort of transport, at least a play/stop button. There will also be a few pots, one to control the output volume, and probably one to select multiple parameters, such as BPM and stuff. Of course, a power-on switch and LED are mandatory.
I will try to keep everything in a nice square layout, and I'd like to cram everything on a 10x10 cm board; EAGLE CAD max size is 8x10 so to keep the project files more user-compatible I'd have to fit everything in a 8x8cm square (but it does not have to be exactly square in the end, a rectangle should be fine also); if I could not keep these self-imposed size constraints, I'd switch to KiCad, still open source but less newb-friendly.
See you on next update.