Unison and polyphonic modes


Recommended Posts

I have added some code implementing a unison and polyphonic mode.  


The unison mode really sounds pretty fat with the 3 SID voices stacked together, I can't wait to hear what it sounds like once we have filters.  I also introduced the concept of a patch which manages the layering of the voices and handles parameter changes and "wired" it up to the MIDI program change event.  


What would be the best way to share the code?

Link to comment
Share on other sites

Excellent! This is really great, thank you for putting that together. I wrote a section on the RetroCade wiki about the optimal way to submit code. You can always zip it up and post it here, but if you can make an account at Github and generate a pull request then that is going to be the slickest way to get it into the codebase.




Link to comment
Share on other sites

I just committed my enhancements to this fork: https://github.com/brianbv/RetroCade_Synth.  The unison and poly modes are function the way that I think that they should, but I am having some stability issues with the dynamic memory allocation (new/delete).  


Change Log:



- Encapsulates the base functionality of voice (note, pitch, envelope, etc)



-  Stores a list of voices and manages them based on the current mode



- Wired up the MIDI program change to change programs.  When it gets the change notification, it jumps right to the menu so that if you're operating the RetroCade from an external keyboard, you'll see your updates on the LCD immediately.

- The patch/program menu now displays Program #, voice mode, voices used, and the program name


Build Config

- Added a Config.h with some build-configuration #defines. I think it would be great to have one branch for RetroCade and RetroCade lite.  



- This is working differently than before since Poly/Unison modes are only responding to notes on one channel.    


From what I've seen, the standard way to have multiple voices playing simultaneously is to implement a split mode where each voice is assigned to a note range.  This way you could, for example have a drumkit and bass living inside one patch/program.    

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.