• Content count

  • Joined

  • Last visited

  • Days Won


brianv last won the day on April 12 2013

brianv had the most liked content!

Community Reputation

2 Neutral

About brianv

  • Rank

Profile Information

  • Gender
    Not Telling
  1. brianv

    Adding midi controls + casing questions

    There really isn't a lot to the hardware side of things, I don't think. Check out this example: All that's done is hook up the pot to +5, G and then to a GPIO. The tough part is going to be updating the software to do what you want. The easy way to do it without building anything is to use the onboard MIDI capability and get a control surface like the Kork nanoKONTROL or Behringer BCR and then map those controls to the functions you want to control. There is also a new MIDI library for Android that looks pretty promising. I have yet to try it out, but if you have USB OTG capability on your phone,it would be possible to create a control surface on the phone. I am actually really interested in doing this for the Retrocade
  2. brianv

    RetroCade Professional Case

    The sheet metal style case is good for low volume production, I think. Nice too. The sheet approach could also be taken with acrylic or abs (heat bend), this might be more cost effective. The acylic might even be the cheapest because it could be laser cut. Then just get one of the guys that's making the wooden synth cheeks already to churn some out for you.
  3. brianv

    Audio filters in general

    I don't want to hijack a productive discussion, but I was talking to my buddy about this and he said "use the onboard DSP blocks". The 3E doesn't have them, at least I am pretty sure it doesn't, so that begs the question: Are there any plans upgrade the Papilio to a Spartan-6 or something that has DSP onboard? The 3E is "not recommended" for new designs, and one of the things that's nice about a devboard is to use it as a proving ground for a design, then move it to a prototyping phase.
  4. brianv

    Adding midi controls + casing questions

    Mila, You could check out for some ideas on circuits, the code may help too.
  5. +1 for Papilio blocks. This name actually tells you something about the function of the tool, rather than tacking the "duino" moniker on yet another product.
  6. brianv

    Adding midi controls + casing questions

    I have been headed down a similar route, but I am not going to be modifying my hardware just yet. The RetroCade already has CCs mapped to the parameters, so if you already have a MIDI controller with some programmable controls, you could just map these to the RetroCade. Then once you have it working the way you want it, you could add the knobs and buttons. But yeah, to answer your original question, I think adding the extra controls you talk about should be pretty easy. If you wanted a more compact control surface, you could have a push buttons (arrow keys) that cycle through the voices and then a set of controls to edit the selected YM/SID voice. The LCD is attached with a header to the PCB, so you should be able to just unscrew it and run a ribbon cable to where ever it needs to go. For the joystick, I wouldn't recommend desoldering it. Just add another joystick and update the code to
  7. brianv

    Dynamic memory allocation - stability issues

    Alvie, Thanks for the links. The CBuffer code you wrote is pretty slick, but I wanted a data structure that would allow to remove items from the middle of a list. In the end I switched the Linked List/Stack over to used a fixed size buffer of ListNodes. It's stable now, haven't seen any crashes since I made the update. Brian
  8. brianv

    Dynamic memory allocation - stability issues

    Thanks for the info guys, definitely good to take into consideration for future development. The clear answer for this case is to witch the code over to use a fixed-size pool/buffer since the maximum amount of memory needed is a known quantity. I think doing this will pare down the amount of ROM used as well. Brian
  9. Pretty cool. Is this just generating HDL behind the scenes? If so, it'd be nice to have a split window where you could see the HDL being generated on the fly. I think it'd be a pretty good learning tool that way. Training wheels for HDL.
  10. I've been making some updates to the RetroCade codebase. I pulled down a Queue class from the Arduino code gallery and made a few modifications to it. I am having some stability issues after a bunch of new/delete operations, I get a hard crash and the Papilo freezes. I've done some troubleshooting, but as far as I can tell I don't have any memory leaks. To shed some light on what's going on, I added two global variables: one for allocations and one for de-allocations. These are incremented and decremented with each operation. I dump these values out to the console periodically and haven't detected any memory leaks. In my particular case there are at most 3 dynamically allocated objects at a given time. The alloc/dealloc counts are exactly what I am expecting: If I have 303 allocs then deallocs would be somewhere between 300-302. tldr; Do I need to do anything other than call delete to ensure dynamically allocated memory is freed up? Is it preferable to use C-style allocation/deallocations for applications like this? Can anyone recommend any profiling tools I can run to help me track down memory issues? Since I know the maximum amount of memory I will ever need ahead of time, would it be better to create a statically allocated pool of objects and pull them out of the pool when needed instead of dynamically allocating memory? Thanks, Brian
  11. brianv

    Unison and polyphonic modes

    I just committed my enhancements to this fork: 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: Voice - Encapsulates the base functionality of voice (note, pitch, envelope, etc) Patch - Stores a list of voices and manages them based on the current mode UI - 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. Channels - 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.
  12. brianv

    Unison and polyphonic modes

    Cool. I'll clean things up a bit then create my own fork with Git.
  13. 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?
  14. brianv

    Two virtual COM ports

    Maybe someone can answer this for me. When I installed the Windows installer package for Retrocade, I believe it installed TWO instances of the FTDI virtual COM port driver. The FTDI driver was likely installed before for other devices on my computer before installing the package. When I plug in the Papilio board, two COM ports show up, and the location field in the device manager days "on USB Serial Converter B" and "on USB Serial Converter A" > FTDIBUS\COMPORT&VID_0403&PID_6010 Is this supposed to happen? When I tried programming the Papilio with the one COM port nothing happened. Brian
  15. brianv

    VST Plugin

    Is there a "lite" bit file available for 1.02? The one linked here still says 1.01. EDIT: The RetroCade Lite Bit file linked above still has the bug. I also tried the RetroCade Lite sketch from the GIT repository, that also has the NoteOff bug. I went ahead and applied the patch manually, here is a modified RetroCade Lite sketch with the patch applied. I am getting a bit of a click on the note off with "Accordian" and , but that may just be the decay settings on those patches.