Jump to content

Wilba

Frequent Writer
  • Posts

    3,310
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Wilba

  1. Smash: I considered most other options, like a standard hex nut and a flat-head/countersunk screw... they would all work, but the advantage of the threaded spacer is it holds the PCB exactly 10mm away from the panel. All other solutions would require some other means of holding the PCB apart from the panel (only the switches around the display touch the back of the panel). There appears to be plenty of bonding surface on these spacers anyway, as I can't pull it off by hand with a vertical force ;D I suppose bending it sideways might eventually tear it off but I'm not going to try that. Seems good enough for my purposes. The other advantage of threaded spacers is you can mount them to the PCB first and then glue them all to the panel in perfect alignment.
  2. I don't know enough about your configuration to give a concise answer... Assuming all your buttons are in a scan matrix, you're (probably) using one DIN shift register to get the button states as part of the scan matrix routine. In this case, it is best to move the code in USER_DIN_NotifyToggle to a new routine (i.e. SM_NotifyToggle), and put in an empty USER_DIN_NotifyToggle. MIOS calls USER_DIN_NotifyToggle when the DIN inputs change, which will ALSO be when they change as part of your scan matrix. So you want to ignore those events, and instead simulate them from your scan matrix routine by calling SM_NotifyToggle with a simulated shift register and pin number. If only some of your buttons are directly connected to DIN inputs, then you will need to handle things differently... again, it's hard to comment until I know more about what you're doing.
  3. I just soldered all the LEDs on my custom control surface PCB. Since the PCB and panel were both CNC machined, I was able to do the following: put the LEDs in the PCB holes put the panel on top attach panel to PCB turn it all over, panel face down on a flat surface place LEDs in the panel holes adjust height of the panel/PCB so the LEDs poke through the panel the desired amount (1.5mm) tack one lead of each LED to hold it turn it face up and check LEDs are in position turn it face down again, solder the other leads. If you've designed your panel holes to a grid that matches your PCB, i.e. something like TK's, 300 mils between LED centers, then it should all work nicely. If you are using some experimenter boards, aka. veroboard, stripboard, prototyping board, then you might need to bend the leads of the LEDs so they fit diagonally on the board, so the LED center is aligned with a hole, and they're all aligned with any switches that might also be aligned to the holes. You'll know what I mean when you start doing it ;D Anyway, however you go about it, if you solder the LEDs while they're in the panel holes, that fixes them in alignment, both horizontally and vertically.
  4. have you seen this yet? http://www.midibox.org/dokuwiki/doku.php?id=midiboxkb_-_using_a_c64_keyboard_as_input There is a table in setup_mbseq_v2.asm SEQ_IO_TABLE_DIN ;; Function name SR# Pin# ;; NOTE: the pins of the 16 general purpose buttons are assigned at main.asm #if DEFAULT_ENC_DATAWHEEL < 0 DIN_ENTRY CS_MENU_BUTTON_Left, 1, 0 DIN_ENTRY CS_MENU_BUTTON_Right, 1, 1 #endif DIN_ENTRY SEQ_BUTTON_Scrub, 1, 2 DIN_ENTRY SEQ_BUTTON_Metronome, 1, 3 DIN_ENTRY SEQ_BUTTON_Stop, 1, 4 DIN_ENTRY SEQ_BUTTON_Pause, 1, 5 DIN_ENTRY SEQ_BUTTON_Play, 1, 6 DIN_ENTRY SEQ_BUTTON_Rew, 1, 7 DIN_ENTRY SEQ_BUTTON_Fwd, 2, 0 DIN_ENTRY SEQ_BUTTON_F1, 2, 1 DIN_ENTRY SEQ_BUTTON_F2, 2, 2 DIN_ENTRY SEQ_BUTTON_F3, 2, 3 DIN_ENTRY SEQ_BUTTON_F4, 2, 4 DIN_ENTRY SEQ_BUTTON_Menu, 2, 5 DIN_ENTRY SEQ_BUTTON_Select, 2, 6 DIN_ENTRY SEQ_BUTTON_Exit, 2, 7 DIN_ENTRY SEQ_BUTTON_Track1, 3, 0 DIN_ENTRY SEQ_BUTTON_Track2, 3, 1 DIN_ENTRY SEQ_BUTTON_Track3, 3, 2 DIN_ENTRY SEQ_BUTTON_Track4, 3, 3 DIN_ENTRY SEQ_BUTTON_LayerA, 3, 4 DIN_ENTRY SEQ_BUTTON_LayerB, 3, 5 DIN_ENTRY SEQ_BUTTON_LayerC, 3, 6 DIN_ENTRY SEQ_BUTTON_Edit, 4, 0 DIN_ENTRY SEQ_BUTTON_Mute, 4, 1 DIN_ENTRY SEQ_BUTTON_Pattern, 4, 2 DIN_ENTRY SEQ_BUTTON_Song, 4, 3 DIN_ENTRY SEQ_BUTTON_Solo, 4, 4 DIN_ENTRY SEQ_BUTTON_Fast, 4, 5 DIN_ENTRY SEQ_BUTTON_All, 4, 6 DIN_ENTRY_EOT [/code] That table gets referred to when DIN events happen, and calls the appropriate routine. Also... [code] ; Some menus are provide the possibility to use 16 "general purpose" buttons ; Define the two shift registers which are assigned to this function here: ; (valid numbers: 1-16) #define DEFAULT_GP_DIN_SR0 7 ; first GP DIN shift register assigned to SR#7 #define DEFAULT_GP_DIN_SR1 10 ; second GP DIN shift register assigned to SR#10 The code looks at the pins set on those DIN shift registers (i.e. if it gets an event on SR=7). That should be enough for you to simulate button presses from your scan matrix routine.
  5. No new pics, too busy! I can now report that J-B Weld is just amazing stuff, and has stuck the threaded spacers to the front panel perfectly. I can't pull them off with pliers and a good amount of force, so 22 of them are definiately not coming off through pushing on the buttons ;D The other unknown I had was whether soldering the LEDs using the panel as a guide would work, and the answer is yes. By soldering the switches first, it was easy to solder the LEDs so they were all at the same height as the tops of the switches, as the tops of the switches held the panel off the table and the LEDs would poke through the panel only by that amount. Once all the LEDs were soldered, it's easy to reassemble the panel and PCB again... even easier than when there were just the switches on the PCB! I've also given up on shortening the 13mm tactile switches above and below the display, the ones that go on the little PCBs that sit above the display's PCB. I just bought some 7mm ones and they should look a lot better.
  6. Flying Panther: It's been stated many times by TK that the firmware will be compatible to existing control surfaces like his one... I'm only suggesting that you might like to put in a few V2 features into your panel. You don't have to, it's just a suggestion. You will be able to reuse your PCBs, the only hardware change is the CAN bus, which you can add later.
  7. I think the "Link" button will be showing a menu for controlling L/R SIDs, which engine to use, etc. I'd hold off making a panel until V2 is released (or close to release). For example, now there's no fixed modulation matrix, there are modulators which could be a combination of envelopes, LFOs, analog inputs, another modulator output, velocity/pitch value etc. Modulator 1 could be LFO3 * Env2 ;D So the static E1, E2, L1, L2,... text up the top is only the default setup, it could just be 1 to 8 for the modulators. Similarly, you can output to the three oscs' pitch and PW and filter and also volume (for L/R or both SIDs) so an 8x8 matrix might be useful to have. If you're not afraid of doing some custom coding, go for dual colour LEDs on the matrix to show L/R or both SIDs ;D
  8. Hi Razmo, thanks for the compliments! The base PCB should fit in a 1U rack, and since it includes DIN and DOUT modules, you don't need anything else in the case. The control surface is my own specialized design that fits my case and is optimized for nice cabling between the PCBs. However, all the pins to connect to a control surface PCB are at the bottom edge of the base PCB, making it ideal for connecting to any components/PCB you mount to the front of a 1U rack. I would suggest a 2x40 display & 10 buttons below it, in a "step B" control surface, and optionally at least five other encoders for assigned knob usage (a V2 feature). You will be spending a lot of time in the improved modulator matrix, which suits a wider display ;D I plan to update the PCB layout to support different types of SIDs, remove the now redundant IIC MIDI modules, and add the CAN bus between the PICs. However, I am still going to keep the use of the C64 PSU "brick" with it's 9v AC and 5v regulated DC, as this is a great solution, if people want to use a different PSU they can adapt it themselves. However, in your case maybe you can squeeze the transformer into the 1U rack and avoid using a C64 PSU "brick" or AC adapter.
  9. Yes. The different program just changes the way the filter is controlled. If you're not getting sound from some patches, this is probably a dead filter (i.e. one 8580 I had would stop making sound as soon as you start using the filter, even after you switch to a patch that doesn't use the filter) or could be just a dead oscillator. That someone is me, I tend to say it a lot! Short the pins of J4 on the SID module. This is because the audio input is always routed to the output, through the filter or bypassing the filter, so if it's floating, it's amplifying noise!
  10. Apparently the only difference is the CEM3378 can mix two inputs (with balance control), the CEM3379 can split into two outputs (with pan control). Since you're probably not using those CVs, there's no difference.
  11. Check you have ground the "audio in" on the SID. It is the #1 cause of noise.
  12. 2x40 displays are already supported, they show more parameters at once (up to 10, with 10 buttons underneath). 4x20 displays aren't supported, they'll work, but only the top 2 lines are used. I am using one and will code up some support for the extra 2 lines. It's not that difficult to do if you know a little about assembler. My opinion is a 2x40 display is going to be more useful in MB-SID v2, as things like the modulation matrix have 17 parameters per "row", so showing 10 at a time will be nicer than only showing 5. If you are asking which would be better for editing 303 sequences, then maybe the 2x40 would be better than a 2x20 if the sequence editor has more than 5 parameters per row (step), as you won't be scrolling left/right all the time, which you have to do a lot as changing the step is done by changing the first parameter.
  13. Read JDM doco in the wiki: http://www.midibox.org/dokuwiki/doku.php?id=jdm I use PICPgm, works well. PIC18F4620 should be used with IIC_MIDI module, because it has a EUSART bug.
  14. To mount the LEDs, I'm going to use a trick I learned with my previous control surface. You put the LEDs in the PCB, then screw PCB and panel together. Then with panel face-down, the LEDs are placed into the holes on the panel. This holds them in perfect alignment while soldering, and at exactly the height I want (in this case, the top of the LED will be at the same level as the tops of the switches, 1.5mm above panel). You have to do this after mounting switches, but before mounting rotary encoders, so you can use a flat surface under the face-down panel to hold the LED at the desired height while soldering.
  15. I used Zoner Draw to design the front panel. It's a great tool for this job, as it's not as complex as AutoCAD, but more CAD-like than Illustrator, so it's perfect for doing the artwork as well as placing holes on a grid. After a lot of jiggling around in Zoner Draw to make everything fit, I then used it as the guide to setting dimensions in Front Panel Designer and Protel DXP. Zoner Draw is also useful for sketching the cross section view, which is an absolute must. Even before you start buying components you should make sure they will all fit together!
  16. Time to blog again ;D I got the panels from FPE, but I had not accounted for their 0.4mm engravings to come out like 0.8mm, or the 0.2mm engravings to come out like 0.4mm. So while the small text was sort of OK, the large text (large in this case being 2mm high) had no gaps between letters, it was all a bit messy. Front Panel Express were great about it, I sent photos of what I expected (Front Panel Designer screenshot) and what I got, and they were more than happy to find out why it came out the way it did, and replace the panels. So I changed all text to 2mm high, 0.2mm thick DIN1451 font, and the replacement panels look fantastic. While I waited, I finally got some J-B Weld, the "essential ingredient" in my plan for the screw-less front panel. Thanks Rigo for the inspiration! The plan is to mount countersunk screws to the four corners on the back of the front panel, using J-B Weld. This gets the panel secured to the case, and also supports the PCB. But I thought that wouldn't be enough support for the PCB, i.e. that the PCB would bend under the pressure of pressing the buttons, so I also plan to use threaded spacers glued to the front panel as extra support. The real trick is how to glue things to the front panel so that they are perfectly aligned, and also handle the PCB being slightly curved - it curves away from the front panel at the left and right edges >:( So here's the trick: Mount all the threaded spacers to the PCB. Put the countersunk screws in the PCB, with a nut between the screw head and PCB. Mount a few tactile switches to use as alignment guides. Hold the panel and PCB together with four clamps at the corners, using the tactile switches to get perfect alignment. Put some J-B Weld on the head of the screw, pull screw from PCB end and rotate. The friction between the nut and PCB will cause the screw to get closer to the front panel, and then it eventually holds it in place. Tweak the screw position until it is in the centre of the PCB hole. When it's all done, you get a nicely mounted screw. So now I can say that J-B Weld works well between anodized aluminium and a zinc plated screw. I've given it a good pull and it's stuck well. Gluing all the threaded spacers to the panel is a bit overkill, but it will result in a more solid feeling when you press the tactile switches, and it keeps the PCB and panel exactly 10mm apart all over. It should be pretty easy to do, just put blobs of J-B Weld on the panel and mount the PCB (with spacers attached) to the panel, tweak for alignment and hold it together with clamps. "10mm" is the magic dimension in this design, this distance between panel and PCB works perfectly with a 1.5mm thick panel, 13mm ALPS tactile switches (1.5mm protruding), the encoders, the "Waldorf" knobs, and with the OSD 4x20 PLED display. The display, unfortunately, was not exactly 10mm high like the spec, one little SMD part was about 1mm too tall, so a little routing of the PCB underneath was required. There are no PCB tracks at all in the space underneath the display, should anyone (including myself!) need to route holes to make the display fit. Those knobs are perfect... I expected they would work well, as the knobs were made to fit these encoders on the Waldorf synths, but when the knob is pushed onto the shaft the whole way, there's 0.5mm clearance between knob and panel. ;D
  17. That IS ridiculously overpriced. You can buy a complete Commodore 64 for that!
  18. At the top of the board, pin 1 of the resistor networks and the discrete resistors are all connected by one track on the bottom. You can break it at the top left corner on the top layer and use wire between a pin connected to that track and a pin at ground. The bottom is a bit messier, as the same tracks carry 5v to the chips and bypass capacitors. Break tracks on the top layer to the right of C1, C2, C3 and below C4. Break track on the bottom layer between left resistor network pin 1 and J1. Now all those pull-ups are connected and separate from the pin 1 of the chips and you can wire then as pull-downs. But don't forget, you also need to wire the pin 1 of the chips together, and also to Vd of J2.
  19. SID 6582 for sale. http://cgi.ebay.com.au/ws/eBayISAPI.dll?ViewItem&item=300086647295 ... or just search for "SID 6582" in your local eBay.
  20. You do know you have to build a new main.hex file with MPLAB after changing any of the .inc files? It is probably easier for you to install MIOS Studio, which uploads the .hex file to the Core via MIDI (i.e. you don't need to convert to SysEx, it does it for you).
  21. They don't all match name for name, that's the confusing bit! The pins to connect will be in the same position on those 2x5 headers. I'll break it down here and you can wikify it! Core:J10 SID:J2 Vd Vc Vs Vs CLK CLK SC -- MU MU RC RC MD SC SO SO -- -- -- -- [/code] The reason this is confusing is because "Vc" (Vcc) on the SID chip is the 5v supply, Vdd on the SID chip is the 12v or 9v supply. You're connecting the "Vd" 5v supply of the Core to the "Vc" 5v supply on the SID module. The other change was that the SID module used to use the same serial clock (SC) as the Core's SC, which was also used for the DIN/DOUT. But then there was a change so that the DIN/DOUT exclusively uses that serial clock, so MD was used instead for the serial clock on the SID module. This is why MD on the Core connects to SC on the SID module. So you still need two power supplies, one for the 12v or 9v power to the SID chip, and the other to power the Core (and indirectly the SID chip) with 5v. This is why a lot of people choose to use the C64 PSU as it outputs 9v AC and "regulated" 5v DC with a single transformer/power plug.
  22. I recently got panels made by Front Panel Express - the holes are EXACTLY what I specified... i.e. a 3mm LED fits perfectly into the 3mm hole, etc. So for holes where a push button cap is going through, adding an extra 0.2mm to width/diameter is probably enough, just make sure you measure your components with calipers!
  23. Interesting idea, Jaicen... It's not that hard to code... but I'm not sure exactly how you define a "bank" or "preset". MB-SID v1 can store 128 patches in a "BankStick", and you can have multiple "BankSticks" which you can switch between. It's pretty easy to have four switches change the current patch to #1 through #4... and then another pair of switches to shift the "bank of four" i.e. the four switch assignments become patch #5 to #8, #9 to 12, etc. Then you just organise your patches on that BankStick into groups of four.
  24. What I would call "crucial" minimum requirements anyway... 2x "BankStick" chip: the 24LC512... this lets you store patchesone for the default preset patches, one for your own creations. 2x Cores: if you want to use two SID modules with MB-SID v1, you need two Cores in a Master-Slave configuration. 1x "2x20 character LCD or PLED": if you're buying a DIN and DOUT module, I guess you're planning a "step B" control surface. Upgrade to a 2x40 character display for 10 parameters shown at once! 1x rotary encoder, buttons, LEDs. ... but this is painful, trust me. Good enough to test your SID before you finish a control surface, but no fun in the long term.
  25. Assuming they are latest revisions of the boards, I think they should be connected with ribbon cable and 10 pin IDC connectors. This will also supply 5v/Ground to the SID PCB, unlike the C64 PSU Optimized diagram, which uses separate power supply wiring to minimise noise.
×
×
  • Create New...