Jump to content

Wilba

Frequent Writer
  • Posts

    3,310
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Wilba

  1. The mystery is almost solved! (This post is mostly to sate TK's curiosity!) SID player works because it doesn't do any BankStick or DIN/DOUT handling, thus there's no clocking of J4:SC/J8:SC/J9:SC (shared serial clock) other than the SID register updates, and thus there's no "garbage" getting shifted into the shift registers. MIDIbox SID app has BankStick and DIN/DOUT handling, thus garbage (zeroes?) gets shifted into the shift registers in between SID register updates, but it shouldn't be LATCHED. In my case it does get latched, therefore the shift register's RCLK pins must be going from low to high. If I ground SID module's J2:RC, I still get garbage latched to the shift registers. If I force J2:RC high, no garbage gets latched. Maybe there's a spike getting into the RCLK tracks on my SID module (latching occurs on the low-to-high edge transition of the RC line). It's too fast for my logic probe to see, but it has to be there.
  2. You can download and use a 30-day "trial" version of the latest Protel. Slightly unintuitive at first, but it grows on you. You do have to create a few custom components and footprints (ie. for capacitors, upright-standing resistors, etc.) but the end result is professional. My tips for beginners: * learn about net labels and power ports (ie. ground symbols, +5v symbol etc) - these simplify schematics and you can set preferred track widths per "net". * use vias and top layer tracks to represent bridges (if you're doing a single-sided PCB) * use the Inspector window to change properties * always route manually!
  3. Unfortunately, capacitors have very small labels - it should have a three digit code on it (sometimes among other numbers on both sides, to confuse matters). Here's the basics: 471 = 47 plus 1 zero = 470pF 102 = 10 plus 2 zeros = 1000 pF = 1 nF 104 = 10 plus 4 zeros = 100,000 pF = 100 nF 334 = 33 plus 4 zeros = 330,000 pF = 330 nF NB: capacitor colour/size/shape doesn't indicate capacitance value, although it does relate to the type of capacitor - ie. ceramics are usually terracotta colour, flat discs. From experience, the small signal diodes 1N4148 have always been a reddy orange colour and slightly transparent, and smaller than a standard resistor. They should be marked with the code. Power diodes are black and fatter, and zener diodes are a mixed bag of colours (yellow, blue, etc.) They all have the cathode marked (the pointy end of the diode symbol). Hope this helps. Regards, Wilba
  4. Did memory peeking, MIDI note stacks all ok. The problem has something to do with the reset pin on the SID chip. When using SID player, this pin is low when nothing is playing, then goes high while the song is being played, then back to low when it's done. Whe using SID synth app, it goes high while in an explicit call to SID_TUNE_Play1 (in sid_init.inc right after the "reset" of the SID)... then it goes low most of the time and occasionally goes high when a note is played or when a patch has a wavetable. The tunes don't play when it reads the bankstick. I added a 10k pullup to the reset pin (as per original schematic/PCB) which did nothing. I changed code to always set the reset pin high and it didn't appear to change anything. I hardwired the reset pin high (disconnect shift register completely). Success! MIDI notes play! I'm not fully understanding what the real problem is, but I guess I'm getting closer. It's basically because the reset line is brought low whenever the shift registers aren't being used... this all seems to suggest it IS a hardware problem after all. TK, what should I expect the reset pin state to be most of the time?
  5. I'm just about to add some debugging output - was planning to write to LCD but sending MIDI is a better idea, thanks. I tried adding a BankStick last night which didn't fix the problem. I turned on the "Link to Slaves" (I don't have slaves yet) and I get an echo of the note on/off events. I definitely get a change of state (ie. noise increase) with a note on event with some patches (like ones with WT) as if the WT gets started up, and this stays noisy even after the note off. My SID PCB is slightly different (missing pull-up resistor on reset pin, which you said was OK). Since the SID file player works, I don't think I had a hardware problem. No one is more curious than I am! Lucky for me I'm a coder by trade or I'd be LOST trying to debug this problem! (I think I'll have to write a SID troubleshooting guide after this!) Merry Christmas to all! Regards, Wilba
  6. I'm already using MIDI-OX to send the Note On/Note Off events. While debugging what might be wrong, I even validated that MIDI-OX was sending those events by running MIDImon on the core. I can send other events (eg. on channel 1) and they're received and do things, ie. changing CC values update the displayed values (and changing volume using MIDI-OX to send CC #7 events results in pops and background hiss volume changes). ALSO if I change the MIDIbox SID's MIDI channel to 2 and keep sending channel 1 note on events, I don't get the same digital noise - therefore I believe that it's not a MIDI communications problem. I'm at the stage now of running debug commands to peek into RAM and see what's going on! What annoys me is that it will probably turn out to be some really simple mistake on my part, but I'm blind to it! >:( I can't see how it's a bug in the application, but that's what my troubleshooting suggests... ??? Regards, Wilba
  7. Hi, I finally got my core and SID modules done, hooked them up and can't get MIDIbox SID app to produce sound when I send note on events. Everything else appears to work fine though. I have run the SID player app and that works - I get cheesy C64 game themes without problems. The MB SID step C app runs OK, control surface (I have step A hardware) works, I can use jsynth to upload patches, I can change volume with control surface or from MIDI and get pops and a changing volume of background hiss (all normal I assume from reading posts). I can even change parameters remotely from MIDI-OX or jsynth. What I don't get is any response from note on events other than an increase in noise - I hear the digital traffic or the SID registers being changed... there's a definite change in state, just no note being played. I've tried the prebuilt hex and syx files - no success. My rebuilt app should be making sound because I explicitly called SID_TUNE_Play1 in USER_Init and get that rising pitch sound on startup. I haven't changed the source other than that and setting menu items to 4. Any troubleshooting advice is welcome. My config (not that relevant though): MIOS v1.4b (valid CRC), MIDIbox SID v1.5c SID chip is 6581R3/4385 Core has step A control surface with rotary encoder, 2x16 LCD, no BankStick. Regards, Wilba
  8. If anyone's interested in getting these PCBs, after posting to this thread, just instant message me your email address and postal address and I will send the PCBs soon after.
  9. Analog Devices (http://www.analog.com) make accelerometers in a small chip package. I came across these when they were used in a tilt sensor for a Palm handheld. I thought they might be interesting as a MIDIbox sensor (and I wanted to make a Palm tilt dongle as well) so I ordered some samples of the ADXL202E from Analog Devices and got some experimenter PCBs made (since the chip is a tiny 8-pin LCC package). The PCB order contained FAR MORE PCBs than I need. Thus I am planning to give them away to any experimenters out there who are interested in integrating a tilt/movement sensor concept into their MIDIbox. In theory, you could make it sense movement like a Theremin... or the angle of tilt of your hand, or head, or whatever... there are many possibilities. The experimenter PCBs are 1 inch square, there are pads for the chip and surrounding that is an array of donut pads/holes just like your standard experimenter board. So if you're an experimenter and are interested in getting some of these PCBs: Go to http://www.analog.com/ Check out the data sheet for the ADXL202E. I'm planning to use the analog output instead of the DCM output. Post to this thread to reserve your 3x PCBs Order some samples: 2x ADXL202JE (commercial) and 2x ADXL202AE (industrial) - these are identical except for temperature range, I believe. Consider the ADXL210E, which has an increased range (+/-10g instead of +/-2g), but I don't know if it will work as well for tilt. Send me one of the ADXL202 samples I'll send you 3x PCBs and pay for postage. Sending me a sample chip is fair compensation for me paying the postage of the PCBs. I would like a couple more chips to play with and I'll give the rest to some local friends. I have 7 groups of 3x PCBs, plus 3x PCBs reserved for Thorsten Klose. PLEASE NOTE: I only just got these PCBs and sample chips and haven't tried out accelerometers at all. I don't know how good this idea is, or if it will turn out to be a useful and incredibly cool control method or just a novelty. Don't expect an instant "air mouse" - there's still some coding to massage the raw data into useful MIDI state. If there's some success to this whole idea, maybe at some point in the future uCApps will host an "official" PCB design which non-experimenters can buy/build. So if you're interested in the idea but aren't an "experimenter", hold off getting these experimenter boards until a proof-of-concept prototype has been achieved. Regards, Wilba
  10. Hi, I would love to work on this app for you, TK... I'm a software engineer by profession (electronics and music are my hobbies)... and would love to contribute back to the community here by donating my skills. The functionality doesn't appear difficult, but getting the multiple windows to work (ie. designing a good framework) might be tricky. Wilba
  11. I know they stock it at a local art supply shop (ie. where they sell canvas, paint, craft supplies, etc.) Perhaps you should check out ones in your area. Found this, must be new: http://shop.store.yahoo.com/embroideryadventures/lazertran1.html For those in Melbourne, Australia: Last time I checked, they had packs of 4 x A4 Lazertran paper for AU$24.65 at Eckersley's Arts Crafts & Imagination in Prahran. I was also told they sell a single A4 page for AU$6.85. Wilba
  12. I'm using photodiodes instead of LDRs... they have fast response times and they are usually spectrally matched to infrared light, so you can use infrared LEDs and ambient light is less of an influence. You can effectively treat them as LDRs... more light = more current flow = effectively lower resistance. Don't know much more about the electrical differences. What I do know is: a reverse-biased photodiode gives high-speed response and a wide propertional range of output - ie. good sensitivity to light levels. The best advice I can give is: get one of those experimenter boards and experiment with different parts and circuits. The real trick will be getting the vane right... I think reducing the amount of movement between no blowing and full blowing, and then mounting the light source and sensor close together will give the best results... but that's just a guess... Some links that I found while researching MIDI controllers and optical sensors: http://tomscarff.tripod.com/ The Theramidi uses two LDRs and a PIC, includes circuit diagram. http://www.soton.ac.uk/~rmc1/robotics/artactile.htm Interesting theory regarding tactile/force/pressure sensors, including using optical techniques. Wilba
  13. Nice diagrams! I've experimented with infrared LEDs and photodiodes... In my experiments, I had them about 7 cm apart and was able to detect the blocking of the beam with a finger, with a fairly good range of output voltages over about 7mm of finger movement. You could use the sensor you suggested, but if you want full control over sensitivity etc. you really should build it using a photodiode and resistor. What worked easiest/best for me was using the photodiode as a basic current-to-voltage converter - the photodiode is reverse biased, anode to ground, cathode to a resistor to positive rail, voltage at cathode will then range between ground and positive rail (eg. 5v) which you can then plug into an AIN input. You'll need to tweak the resistor value to get the sensitivity you want. NB: voltage will be inversely proportional - ie. more light = closer to 0v, less light = closer to +5v. You could either invert the value in firmware or even redesign the layout - ie. put photodiode above the pipe, LED below the pipe, valve between them and the mouthpiece so the valve opens and blocks the ligh path. Just a thought... The other way of using a photodiode involves wiring it up with an opamp so that it gives a better linear response - ie. rather than outputing a voltage relative to ground/+5V, it outputs an absolute voltage relative to the amound of light. But I found that it wasn't worth the extra effort. If your +5v reference voltage isn't too stable, then the first way (a pseudo-potentiometer in effect) works better. I'm interested in building something similar... I'm not sure what to make the valve out of... if it's too flexible it might flutter like a flag in the wind.... which I guess could be a feature! Will post circuit diagrams soon - they're all scribbles on notepaper atm. Wilba
  14. Finally had JDM programmer success last night. I tried reusing my PIC16F84 JDM programmer without success, the programming voltage was too low even at I/O delay 1. (I was using I/O delay 10 with PIC16F84 chips.) So I rebuilt the JDM programmer on an experimenters board according to circuit diagram on uCapps.de. (8.2v zener diode instead of 8.7v) The programming voltage was less than desired and it didn't burn. So I substituted the 8.2v zener with a 9.1v. Still didn't work with I/O delay 1, but with I/O delay 10 it WORKS! Just thought people should know that a 9.1v zener works, and that a very low I/O delay might be a cause for failure. TK: I suggest you update the JDM module page and mention using a 9.1v zener as a substitute. Also mention that a low I/O delay can introduce problems of its own - perhaps because I'm running a fast PC?
  15. I solved a problem I had with IC-Prog and the JDM programmer kit I got from Talking Electronics when running Windows XP. I couldn't get the "official" IC-Prog NT driver to work for me, hence discovered this workaround solution. In short: I use a device driver (totalio.sys) that gives total access to the I/O ports like the good old DOS/Win95 days. Solved problems I had using this JDM programmer with 2000/XP and buring PIC16F84 (but should in theory also work for other PICs since it's just an IC-Prog issue I had). Go here to find instructions and required files: http://www.talkingelectronics.com/FreeProjects/MultiChipPgmr/MultiChipPgmr-P3.html Wilba
  16. I'm also building SID step B with a 16x2 LCD, four selection buttons and encoder, using encoder's button as the menu button (plus seven other buttons/leds). Captain Hastings: I noticed that at line 405 in cs_menu.inc, there's the assumtion of a 20x2 LCD/5 selection buttons... the name editing menu has five options ( < > Del Ins Clr ). Which means you miss out on the "Clr" command, which I assume won't be that big a deal. goyousalukis: Do you see the left/right arrow symbol in any of the menus? If you do, that ought to validate that the core has firmware configured for 4 menu items. Can you check the last displayed parameter in each menu with the tables in cs_menu_tables.inc and tell me which ones work and which dont? I'm keen to find out what's wrong here as I want to use a 16x2 LCD myself... had a quick scan of source code and can't find anything wrong with the code. I should be finished soldering soon and will do some testing myself (maybe within a week). Wilba
  17. Trapstate: I've checked out that datasheet before... but initially thought it would blow out my budget... and also got the impression they would trigger even if your finger was near the contact (not what I want). Maybe I'll check it out in more detail... Can you explain that picture? What is it?
  18. TK, you continue to blow me away with detailed responses... thanks a lot! Best regards, Wilba
  19. Directed to TK: As per our discussion in another thread, I'm planning to make an array of touch sensors. The DIN module design is quite clever - I wish I thought of that when I was prototyping! What I'd really like to know is how they work, electronically and in software. I am assuming pin 14 goes high just prior to sampling the DIN inputs, thus charging any fingers touching the contacts, then it goes low and the DIN inputs get sampled. How does the parameter set by MIOS_SRIO_TS_SensitivitySet control sensitivity? If my assumptions above are correct, I'd also assume it controlled how long pin 14 goes high prior to sampling, or control a delay between it going low and the DIN inputs being sampled. I'm asking all this because I plan to have a long cable between the touch sensor contact and the DIN inputs and I'm wondering if that will affect things... Also wondering how the 47k resistor value was determined - it pulls DIN inputs low, but can sensitivity be improved by increasing current to the fingertip and getting pin 14 to drive a current sourcing transitor rather than source the whole current from the PIC? I'll have my core module/DIN module finished soon and I can do some experiments of my own... but I still need some idea what's going on first. Regards, Wilba
  20. ??? What does that mean? One amp?
  21. In case you're interested, the controller I'm building is inspired by the Ztar ( http://www.starrlabs.com/ ). (Check out a video of someone playing one: http://www.shanesanders.com/music2.html ) I'm not copying the Ztar completely, because I can't get my hands on force sensitive switches (on the Ztar, ALL the fretboard buttons are velocity/force sensing!) and I can do without polyphonic aftertouch (not many synths use it anyway). So the main differences are: 4 "strings" made of touch sensors (ie. zero "action" in guitar-speak), and optical strum/pluck sensors, both concepts already proven in prototyping using PIC16F84... It will have a joystick for pitch bend/expression effects (salvaged from play station controller!) and some other analog input devices. When it's complete, I plan to share the circuits and source code with the MIDIBox community, in case others are interested in building something similar. (I can't wait to hook it up to the SID and jam with it!) Wilba
  22. MIDIBox SID (step A first, ultimately step C)... also a MIDI controller/instrument inspired by Ztar (see here: http://www.starrlabs.com/ ) basically an array of touch switches in fretboard arrangement and optical strum/pluck sensors. Encoders are for basic parameter control.
  23. I'm having trouble locating a supplier if rotary encoders that is either in Australia or delivers to Australia. Any Aussies out there who can suggest how they got their hands on some? Thanks, Wilba
  24. $16 is a good price. I bought two on-line for US$25 each! So count me in for at least two.
  25. Thanks for the answers TK, OK, since you're interested, I'll explain further... I've been working on a custom MIDI controller for a few months, using a PIC16F84... until I realised I really needed more I/O pins, A/D conv, more RAM, etc... Came across uCApps/MIOS and now I'm keen to use MIOS and PIC18F452 to do the job. (Also really like the SID project so I'm building one of them too). The controller is a fretboard design, like a bass guitar. Instead of strings there are touch switches (copper wire) between where the frets would go. There are also plucking/strumming sensors which are an infrared LED/photodiode pair - you break the beam with a finger. One "mode" just maps presses on the touch sensors to note on events directly - ie. just a keyboard-like interaction. The other mode is guitar-like - ie. you need to strum/pluck to get the note, and while a strum/pluck sensor is down, fret changes trigger notes played legato (with optional portamento) or even retrigger currently held down frets higher up the string, etc. So the reason why I wouldn't want to do it in a USER_DIN_NotifyToggle handler is because I need to take into account the entire state of all the registers (ie. calculating the "highest" touched fret, comparing to "highest" touched fret last time, calculating velocity from time of partial to full blocking of IR beam, etc.) It's a bit more complex than "button A AND B" - I was just trying to simplify it to give an example... Thanks again for your help... I should be able to utilize the SR_DIN_CHANGED array to do all I want. Regards, Wilba
×
×
  • Create New...