jaffe- / nesizer2 Goto Github PK
View Code? Open in Web Editor NEWA synthesizer based on the 2A03 (NES APU)
A synthesizer based on the 2A03 (NES APU)
I want to invest the time and resources needed to build one or a few of these. I don't have a background in electronic/electrical engineering, but I am willing to learn. Are the current specs and schematics complete enough that I should be able to build a NESizer if I followed them?
Hi,
I just wanted to ask, how to upload samples? I assume the samples have to be converted for sysex and then send while in sample select mode?
Thanks in advance!
Keen
I have the synth all built and as mentioned in another issue I used the MXD1210CPA+ instead of the DS1210. I am able to flash the Atmega using an Arduino and set the fuses to E:FF, H:DF, L:E0, or E:FF, H:D9, L:E0.
The issue is when I power it up all the LEDs light up and it doesn't produce any sounds. I have also tried the init within the settings using buttons 8,9,11, and 14, but nothing appears to happen after pressing 11 and 14. Pressing 8 then 9 does cause the LEDs to brighten and a sequence starts on the screen for about a second.
I can however test the chip type correctly with a returned value of 12.
Once after powering on it did start making sounds, but I haven't been able to reproduce that.
Any troubleshooting ideas?
First, this project is amazing, and thank you for sharing it.
I'm prepping to build one right now, and I just sent the 2 PCB's to be manufactured (with a red upper and blue lower board like Super Mario's clothes, see attached pic!).
My question is this: in the BOM, IC13 component DS1210 has no quantity, is it no longer required?
I noticed that in the last hardware.md commit (8 years ago, wow) you removed references to DS1210.
I compared the before and after, and see that a transistor switch circuit keeps the SRAM powered now instead, but DS1210 is still on the BOM. Is this just for reference / historical purposes?
I also see there is still an IC13 footprint by the battery.
It is discontinued from Mouser but there is an equivalent replacement. If I don't need it, I'll save 10 bucks.
There was a recent update in sample.c that is causing a compile error:
sample/sample.o: in function `.L22':
sample.c:(.text.allocate_block+0x176): relocation truncated to fit: R_AVR_7_PCREL against `.L9'
collect2: error: ld returned 1 exit status
Hey Jaffe, sorry to bother you, ive got the boards all put together, hardware and all, minus the coin cell battery(need to run to store). But i am a relative noob when it comes to compiling code. I have atmel studio installed. I see that on github there are many file/folders for all the various functions. Can you explain to me how to build code and load onto chip. I have an ftdi usb to serial will that work also i have an arduino uno if i can use that to program. Please any help would be greatly appreciated, i am so close to finishing this beautiful build. Ive dreamed of putting together an nes synth for so long! you can email me josh_kuebler@yahoodotcom
I already have this implemented on a branch and need to run a few more tests on it before I make a PR. Just creating an issue so that it can be tracked for any bugs.
Hello Jaffe.
Sorry to bother you.
I would like to build my own NESizer, but I am unable to compile the firmware properly.
Here are the exact steps I tried to compile.
I first installed avr-gcc and git for Windows and cloned the repository.
Then I run 'make' from the cloned repository using the git bash shell.
However, I get the following error message.
In file included from main.c:29:
apu/apu.h:29:10: fatal error: sample/sample.h: No such file or directory
29 | #include "sample/sample.h"
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:41: main.o] Error 1
Could you please help me with some advice? Thank you very much!
Also, if it's convenient for you, could you please send me the compiled firmware hex code via email? My email address is sonic@mukoi dot com
Best regards
Sonic
HI,
with with compiler do you compile the project.
There is no Project description in the src folder.
I try code from microsoft but it did not compile without errors.
Chris
Hi,
I build the NESizer2 and everything works great so far, as long as I don't insert the battery for patch saving.
When I power on the NESizer with the battery inserted the machine goes crazy. All soundwaves are activated and it starts to play a random melody while showing random numbers on the display. Without battery everthing works fine again.
Any suggestions for troubleshooting?
I'm new to interacting on GitHub, so I apologize if it's poor etiquette to create new issues on your project for basic questions like these.
My intention is to stick the Atmega328 on a breadboard with the bare-minimum required components as shown in the Breadboard Arduino reference here:
https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoToBreadboard
and then power and program it via my Raspberry Pi's GPIO / SPI pins using avrdude before installing.
Is that what you'd recommend or is there a better way?
Hi! First of all, I wanted to say thank you for the tremendous work you've done and the effort you've put into documenting the project. I've been working on reverse-engineering the project to make a cut-down version (mostly no RAM or front panel) and your documentation and comments have made this task much easier than it would have been otherwise.
That said, the sample code in software.md
does not currently compile. I believe it alludes to an older version of the code that had separate functions for each channel. From my understanding, I believe that this is the minimum amount of code required to produce a noise:
main() {
bus_setup();
io_setup();
apu_setup();
sq_setup(0, &sq1);
sq1.period = 400;
sq1.duty = 2;
sq1.volume = 15;
sq_update(&sq1);
apu_refresh_channel(CHN_SQ1);
while(1){}
}
I somehow killed the 2A03 that I was working with (oops), so I can't confirm that this does produce a sound. In my mind, bus_setup()
is required because it sets up the bus pins that allow writing to the register that feeds the 2A03. Similarly, I believe apu_setup()
is required because it enables the outputs of the channels.
Also, I had to change the fuses on the ATMEGA328P in order to get it to work off of the same clock as the 2A03. I'm not sure if I selected the right clock divider setting, but I think this would be helpful to add to software.md
.
If these changes make sense to you, I would be more than happy to update the documentation. Once again, thanks for your work!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.