Jump to content

Wilba

Frequent Writer
  • Posts

    3,310
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Wilba

  1. And if you use SIL connectors, it's a lot easier to diagnose what's wrong when you can just unplug a module and test it independantly, which is why I like using connectors and never soldering wires to the headers.
  2. Standard mouse signal? If you mean something you could plug directly into a PC, then no. The signal isn't compatible with rotary encoder handling in MIOS, but it would work as a controller for increment/decrement buttons with no extra coding... I suppose you could code your own support for it in MIOS so it could replace a bunch of encoders in a project... (I wonder whether 16 of them in a MB-SEQ would work... hmm...) It's a pity that sparkfun don't sell the version with built-in LEDs!
  3. It may not be obvious until you build the control surface, that to trigger the playing of a "303" sequence (or other sequence, or just play a test note) you need to hold down one of the SID buttons and then press the menu button to toggle playing on/off. So if you're planning a full CS with only one SID ever, you might want to add a button for this feature. The best solution is just build it assuming you will one day put in 3 slave SIDs, because once you have one going, you might feel the urge for more... ;D
  4. yeah, I had a similar experience - used a desoldering pump to suck up as much as possible... once you've got no solder blobs on the pads (i.e. you can see the hole) then wiggle the part while heating up the pins. Often you have to heat up two or more pins simultaneously to get it to move at all.
  5. stryd: "momentary" just means they don't stay in position... so it doesn't matter if it's push-button, toggle, tactile, whatever... so long as it's normally OPEN and momentarily CLOSED, otherwise you'll need to do a customization of the DIN module or invert it in firmware.
  6. Yeah I told you that! In the current layout, I've separated the power and ground lines of the SID from everything else. I interpreted that bit of the datasheet to mean that you don't want a lot of digital components on the same 5V/ground lines as the SID. In my current SID setup, I've connected each SID together with wires, just like the "optimised PSU" circuit, and that's what I've done in my PCB as well, but I'm just trying to work out whether to run a ground line from each SID to the phono jack, or connect the phono jack grounds together and tie it to the PSU ground, or whack a big ground plane around it all.
  7. I don't know much about audio grounding, is there someone here who does? Basically I'm putting multiple SIDs on a single PCB and want to know the best way to connect the grounds. I'm thinking of using a ground plane to connect the phono jack grounds and the SID's grounds (i.e. the SID's voltage regulator ground, the audio buffer ground, and the SID's Vss pin). This would be separate to the ground used by the rest of the components (i.e. the digital components like shift registers and PICs). SmashTV's latest SID PCB uses a ground plane between SID and phono jack, but what I'm wondering if it's OK to connect multiple SIDs on the one ground plane.
  8. If you have one 6581 and one 8580, even in V2 it would require two cores, because as far as I know, the "stereo" support in V2 will be focused on two SIDs of the same type connected to one core, thus simplifying stereo effects (like the left and right channel having different LFO phases, but using the same patch). Different SIDs on the one Core would not work well for a lot of reasons - different filters, different noise levels, etc. Also, as far as I know, two SIDs connected to one Core will not have the same features as two Cores - you won't be able to do bassline sequence on one SID and a lead on the other SID if there is only one Core. The hardware will be the same, so if you build a two-core V1.7 setup now, you will be able to migrate to the V2 setup, and you could always add more SID modules later for two "stereo" channels.
  9. Wilba

    SIDx6 ?

    MBSID V2 might support 6+ note polyphony but it won't be six SID channels (i.e. not six different patches running on six separate Core/SID pairs). You might get away with six "simple" single oscillator patches running on two SIDs... but I suspect what you want is six separate SIDs. While the V1 (and V2) control surface can only edit patches on the master and three other slave SIDs, you could, in theory, add another two slaves and make them use the same device ID (i.e. they are like clones of the third slave perhaps). That way, SIDs #4, #5 and #6 always run the same patch... and with a tiny bit of coding, you can lock the MIDI channel of SIDs #5 and #6 so they can be played independently of the others. It's a bit of a hacky workaround solution, but then you would benefit from having some control over the extra two, like simple patch loading (sharing the BankSticks of the rest of the setup) and even parameter editing... and as I suspect what you really want is six channels of the same patch, the fact that SIDs #4, #5 and #6 are locked into the same patch wouldn't really bother you much, right?
  10. I can't recommend this service yet, although I will be ordering through them: http://www.goldphoenixpcb.biz/ ... but I have no idea about their policy for defects. I post it here in case others are interested in ordering a big panel. These guys supply to BatchPCB so it is cheaper to go to them direct for a large order.
  11. Yes. I can't find them locally, and have substituted ceramic capacitors until I find some...
  12. Most implementations of a MIDI Thru port driver use either two NOT/inverter gates, or two NAND gates with inputs joined, so the UART signal coming from the optocoupler is buffered before connected to the 200 ohm resistor and the MIDI Thru socket. I am planning to add a MIDI Thru port to my MB-SID but didn't want to use a whole CMOS IC just for this. The MIDI Thru port only needs to sink or not sink the current, not actually output +5v. I thought a PNP transistor could do this nicely. So I put a BC557 with the base connected via a 10K resistor to pin 6 of the optocoupler (the UART signal, which is connected to the PIC's RX pin), the emitter connected via a 200 ohm resistor to the MIDI socket (it's PNP, so the emitter will sink the current when the base is low) and the collector to ground. I didn't think I needed a resistor between collector and ground, since the current is already limited by the two 220 ohm resistors of the MIDI Thru socket. This works for me, I quickly tested it with my PC and messages I send to the MIDI In/optocoupler get looped back through the MIDI Thru to my PC. So... can anyone see if there's a problem with this idea? It would be nice if someone with more electronics expertise could approve it ;D
  13. I've used Monolithic/Multilayer Ceramic capacitors for all the power supply and "bypass" capacitors... i.e. all those used in PSU or between +5v/ground of ICs. I'm no expert but they seem to work fine for me.
  14. I think a real monome clone using a LED matrix and button scanning matrix should be done via a patch to MIDIO128. I mean you could do it now with 8x DOUT and 8x DIN... but with a LED matrix and button scanning matrix, you can do it with just 2x DOUT and 1x DIN, where one DOUT is both the current sink of the common cathodes of one LED row/column and also the sink to ground for one row/column of switches. I'm using this technique for my new MB-SID control surface PCB... ;D
  15. http://www.papilio.com/ These guys have a lot of different kinds of injet and laser printable adhesive media... vinyl, water slide decal, film, etc. Probably the greatest range and most exotic types I've seen anywhere, with a lot more flexibility than Lazertran. I haven't used their stuff though, so can't testify how good it is (I will probably get my front panel etched and filled now).
  16. Yeah, I suppose if I hack in a scanning matrix as well you've got a simple monome clone ;D
  17. Be most concerned with any LED backlit LCD display. That will be the biggest single current draw, I think... You'll also need to calculate the draw of each LED, as it will depend on the type of LED and the current limiting resistor you're using (and to some degree, max current the DOUT can source). Ballpark figure: 5V at 1A is usually enough. Note that a lot of people have used the C64 PSU with step C control surface.
  18. Well it is easy if you write code for a living and started programming when you were six. But I still don't fully grasp analog electronics... which I started at the same time. Anyway, when I get a bit of spare time I'll bash out something to help you out... although I won't have the hardware to test it... just PM me your email and we'll take this outside the forum and not bother all these other nice people with our rambings.
  19. OK, that sounds pretty easy, but you need to give more detail about how each LED is going to be turned on and off. I have no idea what protocol MAX/MSP uses for external control of hardware like this. Maybe it's as easy as MIDI Note On/Note Off events with the note being the LED. If that's the case, it's easy to hook it up to the same LED matrix demo program. I don't think you need to do this. The MIOS tables would be used if you were not using a matrix, if each LED was connected to its own DOUT pin, and you wanted MIOS to process the MIDI event and turn on/off the LEDs. Since you are using a LED matrix, you would have to do the MIDI event handling yourself. Turning the note number into the index of the LED to change is pretty simple.
  20. I've had the advantage of being a programmer long before looking at PIC assember... and then I basically learn by looking at the code, looking at the PIC datasheet to see what each instruction does, and then understanding what the code does. If you think you could grasp C better than assembler, perhaps try using the C interface to MIOS, although I don't yet and have no idea how hard it is to setup. At least with assember, what you write is what you get, down to individual instructions on the CPU. But even though assembler is a bit harder to code than C, it is also all you would need to know, and learning C is just another level of stuff that you don't need just to get your creation going. Why don't you tell us a little more about what you're trying to achieve, because you might be able to use, with a little modification, some existing MIOS application. If it is quite generic and might be a useful demonstration application for others (and it wouldn't take too long to write) then maybe I can quickly hack together the basics to show you how it's done. Then it's up to you to learn assember and customize it to your specific needs.
  21. They have great PLED character displays too, and cheap.
  22. After a quick look at that code, it looks like it already handles 8x8. You probably could cut out some unused bits of cs_menu_matrix.inc but there's no real point as it does what you want already. If it ain't broke, don't fix it. Wire it up like in the MB-SID step C connection diagram, and then change which shift registers you are using, most likely you only have two connected so in main.asm: ;; define the shift registers to which the LED matrix is connected ;; (note: HERE the shift register begins with 0: 1st SR is 0, 2nd is 1, 3rd is 2, ...) #define MOD_MATRIX_ANODES 6 ; shift register with anodes (HERE: 7th shift register in the chain) #define MOD_MATRIX_CATHODES 7 ; shift register with cathodes (HERE: 8th shift register in the chain) [/code] replace 6 with 0 and 7 with 1. Further down, change 56 to 64: [code] ;; increment counter, wrap at 56 incf LED_SELECT_CTR, F movlw 56 IFGEQ LED_SELECT_CTR, ACCESS, clrf LED_SELECT_CTR Note this is just some sample code that appears to turn on one LED at a time, cycling through them all, i.e. you don't need this counter to do what you want later. The code in cs_menu_matrix.inc manages turning on LEDs in a single row and incrementing the row counter. Once you've got this demo working, replace this code with just: USER_SR_Service_Prepare ;; branch to LED Matrix code goto CS_MENU_MATRIX_Handler [/code] You should also clear the matrix in the USER_Init routine: [code] ;; clear LED matrix clrf CS_MENU_MATRIX_BEGIN+0 clrf CS_MENU_MATRIX_BEGIN+1 clrf CS_MENU_MATRIX_BEGIN+2 clrf CS_MENU_MATRIX_BEGIN+3 clrf CS_MENU_MATRIX_BEGIN+4 clrf CS_MENU_MATRIX_BEGIN+5 clrf CS_MENU_MATRIX_BEGIN+6 clrf CS_MENU_MATRIX_BEGIN+7 Then elsewhere (perhaps in USER_MPROC_NotifyReceivedEvent) you should toggle bits in the registers CS_MENU_MATRIX_BEGIN+0 to CS_MENU_MATRIX_BEGIN+7 (each byte is a row of the matrix). You'll have to learn enough assember to do that bit yourself. In short, you're probably wanting to turn a number like 0-63 into the byte to change (CS_MENU_MATRIX_BEGIN+0 to CS_MENU_MATRIX_BEGIN+7) and a bit within that byte. The code in the demo does this already: lfsr FSR2, CS_MENU_MATRIX_BEGIN movf LED_SELECT_CTR, W andlw 0x07 addwf FSR2L, F rrf LED_SELECT_CTR, W rrf WREG, W rrf WREG, W andlw 0x07 call MIOS_HLP_GetBitORMask movwf INDF2 [/code] The register LED_SELECT_CTR is used to calculate which byte to change. You'll need to adjust this to suit your purposes, and learn about using a mask to toggle one bit in a byte. Basically you will need to understand how this little bit of code works, using indirect registers to change one register in a register range, i.e. called an array in other programming languages.
  23. Yes, the main PCB has the PICs, SIDs, 5x DIN, 3x DOUT and the "optimized C64 PSU" circuit. The control surface PCB is behind the front panel and will have the controls/LEDs/tactile switches/4x20 PLED display. Yeah, the motivation for me is striving for a really polished second MB-SID, having already done a very unpolished first MB-SID as a mass of modules and wiring. Of course I'm also having fun along the way with the layout and planning and construction.
  24. c0nsumer: It's not as tight as I initially thought... everything does fit nicely on the PCB size suggested by the PT-10 mechanical drawing. It will house eight 6582 SIDs (MB-SID v2, 4x stereo channels), which don't get as hot as 6581 SIDs... still, I am allowing for a bit of a grill opening in the back panel. Unfortunately, everything is still virtual at the moment, just plans and PCB layouts, so no photos yet, but I promise there will be a great show-off when it's all put together. I will hijack this thread no further :-[ Those are some great pics, by the way, it was nice to see a real one being used. How did you make the panel for the x0xb0x, and what material is it?
  25. Yeah I'm getting the PT-10 and squeezing my MB-SID v2 into it. There's just enough room in there for four PICs, eight SIDs, eight shift registers, eight "banksticks" ;D On a related note, Front Panel Express have told me that despite Front Panel Designer not letting you make big panels in 1.5mm thick aluminium, they can make them for you. It's related to this because the panel on the PT series are 0.062" (1.5mm) aluminium. I also plan to not use screws on the front panel and just glue it on, and it should be flush with the case and look pretty nice. I feel like showing off... here's my current front panel layout using Front Panel Designer: MBSID_panel_v3.png
×
×
  • Create New...