Jump to content

nILS

Frequent Writer
  • Posts

    4,314
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by nILS

  1. julienvoirin: I am aware of the clockbox (stryd_ones arp was based on it) and I plan to "borrow" some of the code from him or at least let myself be inspired by it =) Jaicen: It's a 4xSID v1 with full CS - so plenty of buttons, knobs and LEDs to misuse =)
  2. Since this project appears a bit frozen and since I really felt like doing it, I started coding (mostly in C) on a stand-alone arpeggiator as well. What I have so far is a basic early 80s arp =) Most of what the foundation I think will be needed for the final app is working already. This includes the internal clocking (editable bpm, bar type and note length*), a full menu handler (designed for a 2x40 LCD, menu style very similar to the one used for the SID) and all input/output handlers. I'm testing the app on my Step C SID, which really comes in handy with all its knobs, buttons and LEDs =) What needs to be done is synch'ing with an external MIDI clock signal, and designing all sorts of crazy algorithms for the arpeggiator modes and accents (I like the mutator idea. Just say it "mutator". Sounds good. Gotta be good.). The way I designed the app so far, it's possible to have completely independant and customizable menus for every mode, allowing potential programmers to go wild on their arp ideas. I guess, what I'm trying to say is this - I'll keep working on it no matter if anyone else needs/wants it. Sadly, the last attempt for an arp didn't really get too much attention. Anyways, if there are people interested in testing the very pre-alpha software or have suggestions or feature requests - just shoot. BTW, I wrote this around 04:24am. <- Lame excuse for the spelling. Damn, I actually just bought an ATARI 2600 on eBay. Gotta love the "suggest a price" feature. *Internal clocking tests showed that the software runs pretty well and stay on time. Letting the arp run for 15 minutes while constantly sending CCs to it and moving through the menus rather randomly lead to it losing 3ms. Which is close enough I suppose.
  3. Me wants those, too =)
  4. ACRONYM = Abbreviated Code Rarely Or Never Yielding Meaning
  5. nILS

    Midibox 64 problem

    Das ist in dem Fall ein Problem. Encoder müssen an "gerade" PINs angeschlossen sein. Du solltest also den Encoder auf die Pins 8+9 umlöten und den einen Taster von der 8 auf die 10. Damit wäre der Encoder and SR2, Pin 0 (+1) -> ENC_ENTRY 2, 0, MIOS_ENC_MODE_...
  6. I'm really trying not to overuse this "smiley", but sometimes I just can't resist since it expresses exactly what I feel:
  7. "I'm rich, bitch!"
  8. I just started fiddling around with my arpeggiator app, and I have to say, if you have a running mbSID or any other mb with a big CS it's really nice for testing you app =)
  9. Me wants one =) BTW, is this the type of thread that leads to ridiculous post numbers (see s1)? :D
  10. fossi.bs thinks jimp is onto something. Although, I'm pretty sure that I heard the gating flux capacitor moan somewhere around measure 14 - so it could stand for "Gate Allocation System"
  11. Sorry for the OT ranting, but: PUNCTUATION, dude...
  12. yummy =) I actually snuck in some SID drums in a beat I made for a hip hop label - I guess there's more of that to come!
  13. TOM KLOSE? Must be a hacked version off some cracking site or file sharing portal :D
  14. I built a power supply for my 4x SID. It's really not that big a deal. I used two print-transformers from Reichelt. One supplies 9V~ for the Cores and one supplies 15V~ for the SIDs. There's not really much of a schema... My Cores and SIDs all have the 7805s/7809s/7812s stuffed, so I directly ran the AC from the transformers to all the modules. This may not be the most elegant way, but it's really easy =) Just make sure you have some serious isolation on the 230V parts!
  15. I assume learning asm or C would be best suited for PIC programming. C is nice to know, since it is widely used and you might put your newly acquired knowledge to good use in a lot of other projects as well. ASM would be good, since it only has a really tiny number of commands to choose from, it's can pretty annoying since you get punished for every tiny mistake you make =) I'd probably start with a high-level language like C, C++ or ObjectPascal (Delphi IDE) or Java if I were you. There are great IDEs for all of these, they're fairly easy to learn (ObjectPascal probably even more than the others). And if you're familiar with one of them, learning another one is really not that big a deal, since they're all alike =) Just my opinion though. And now - don't stone me please, you ASM and C gurus - I like Delphi more than any other language :D
  16. Hmm =) Stryd, you're right of course. The source *is* working, but I have not done any optimising yet. I'll update the source above from time to adjust to the ideas and suggestions made here. BTW, I never said I couldn't do any asm, I just don't like it and don't do it much anymore :D Hooray for high-level languages (all but Java) edit: spelling...
  17. I fully agree, and just for some reason forgot about it - I would just go with a DINX4. It's fairly cheap, doesn't take up much space, is easy and quick to solder and allows you to expand you SID without major modifications ;-)
  18. The upload appears ok. The LCD display *is* a plug and play solution ;-) And from what I can tell, this display needs all 8 pins. It's a regular HD44780. So the default wiring seen on ucapps.de will work fine for you.
  19. This is the source. I added comments of what to do in a phpBB manner. Changes to app_defines.h (could be done in main.asm, but it's a little more tidy this way): [INSERT] CS_KEYMODE_NOTE EQU 0x69 CS_KEYMODE_FLAGS EQU 0x6a [note: those adresses work with the v1.7303b. For other version you might need to find some other free RAM] [/code] Changes to main.asm: [code][FIND] USER_Init [INSERT AFTER] clrf CS_KEYMODE_FLAGS bsf CS_KEYMODE_FLAGS, 0 ; comment out this line if you don't want to start in kyboard mode clrf CS_KEYMODE_NOTE [INSERT] TEXT_KEYMODE_ENABLED STRING 19, 0x14, "<KEYBOARD MODE> " ;; note this setup is for a 2x40 LCD. If you use a different size, you ;; you might want to adjust the size and position of the string =) CS_KEYMODE_DISPLAY_MESSAGE ;; display keyboard mode note if enabled btfss CS_KEYMODE_FLAGS, 0 ; skip displaying if mode is disabled return TABLE_ADDR TEXT_KEYMODE_ENABLED ; display keyboard mode message call MIOS_LCD_PrintString return [FIND] USER_Tick [INSERT AFTER] call CS_KEYMODE_DISPLAY_MESSAGE ; display keyboard mode [FIND] CS_MENU_BUTTON_Select_Cont [INSERT AFTER] ;; ----------------------------------------------------------------------------- ;; start of keyboard mod ;; ----------------------------------------------------------------------------- ;; Additional code for keyboard mode uses these two registers, see app_defines.h ;; CS_KEYMODE_NOTE EQU 0x69 ;; stores the note to be played ;; CS_KEYMODE_FLAGS EQU 0x6a ;; stores the flags (mode enabled, button down) ;; check for keyboard mode btfss CS_KEYMODE_FLAGS, 0 ; if keymode is enabled... goto CS_KEYMODE_SKIP ; ...don't do anything here ;; keymode is enabled addlw h'30' ; add note offset to button number movwf CS_KEYMODE_NOTE ; push note from wreg to CS_KEYMODE_NOTE call MIOS_MIDI_BeginStream ; begin stream movlw 0x90 ; push note event... call MIOS_MIDI_RxBufferPut ; ...and receive it movf CS_KEYMODE_NOTE, W ; push note event... call MIOS_MIDI_RxBufferPut ; ...and receive it ;; check if the button is being pressed or released movlw 0x64 ; set velocity to 100 btfsc MIOS_PARAMETER2, 0 ; releasing? movlw 0x00 ; ...set velocity to 0 call MIOS_MIDI_RxBufferPut ; receive the velocity call MIOS_MIDI_EndStream ; end the stream return ; done CS_KEYMODE_SKIP ; keyboard mode is disabled ;; do nothing if button has been depressed btfss MIOS_PARAMETER2, 0 ; if the button is pressed goto CS_KEYMODE_CHECK ; goto clrf CS_KEYMODE_FLAGS ; else reset the keymode_flags return ; and exit ;; check if keymode should be enabled CS_KEYMODE_CHECK btfss CS_KEYMODE_FLAGS, 1 ; if button down bit is set... goto CS_KEYMODE_SET_BIT ; ...skip going to set it call CS_MENU_BUTTON_Exec ; simulate enter button to leave menu bsf CS_KEYMODE_FLAGS, 0 ; else set the enabled bit... bcf CS_KEYMODE_FLAGS, 1 ; reset button down bit return ; and quit CS_KEYMODE_SET_BIT bsf CS_KEYMODE_FLAGS, 1 ; set the button down bit and keep going ;; ----------------------------------------------------------------------------- ;; end of keyboard mod ;; ----------------------------------------------------------------------------- ;; uncomment the next line, which is needed if the keyboard mod is commented out ;; ----------------------------------------------------------------------------- ;; do nothing if button has been depressed ;; IFSET MIOS_PARAMETER2, 0, return [note: the last line already exists in the source - to use the keyboard mod you need to comment it out.] This is an uncommented version of the source in main.asm (in case someone doesn't like comments): CS_MENU_BUTTON_Select_Cont btfss CS_KEYMODE_FLAGS, 0 goto CS_KEYMODE_SKIP addlw h'30' movwf CS_KEYMODE_NOTE call MIOS_MIDI_BeginStream movlw 0x90 call MIOS_MIDI_RxBufferPut movf CS_KEYMODE_NOTE, W call MIOS_MIDI_RxBufferPut movlw 0x64 btfsc MIOS_PARAMETER2, 0 movlw 0x00 call MIOS_MIDI_RxBufferPut call MIOS_MIDI_EndStream return CS_KEYMODE_SKIP btfss MIOS_PARAMETER2, 0 goto CS_KEYMODE_CHECK clrf CS_KEYMODE_FLAGS return CS_KEYMODE_CHECK btfss CS_KEYMODE_FLAGS, 1 goto CS_KEYMODE_SET_BIT call CS_MENU_BUTTON_Exec bsf CS_KEYMODE_FLAGS, 0 bcf CS_KEYMODE_FLAGS, 1 return CS_KEYMODE_SET_BIT bsf CS_KEYMODE_FLAGS, 1 ;; IFSET MIOS_PARAMETER2, 0, return[/code] Update 1: Included stryd's suggestion to have less of those evil jumps
  20. No, J6 is used to connect AIN modules while J9 is used to connect DIN modules. There are differences between encoders and buttons on the software side. From a hradware point of view, a rotary encoder simply represents two buttons. Make sure to connect encoders to the correct pins though - that means, you have to make sure you've got the correct order (or you'll spin the values in the wrong direction) and you'll need to connect the two pins of the encoder to two adjacent pins starting with an even one. Like that good: | | | | 1 2 . . good: | | | | . . 1 2 bad: | | | | . 1 2 . bad: | | | | 1 . 2 . and so on... :D
  21. Whoops, yeah, I forgot about that =)
  22. I was kinda hoping noone would care for it, and now I have to put comments in it. BTW, I wrote this for v1.7303b, but, since every other version seems to have more codespace and free RAM, it shouldn't be a problem to use that mod in other versions. I'll get cracking on the documentation and post what I have here, so you guys can point out my mistakes =)
  23. A single DINX1 board can handle up to 8 inputs. Every button takes up 1 input, every encoder takes up 2 (up/down). So with you configuration you'd need 6 inputs for the buttons and 2 for the encoder = 8 inputs. A single shift register can handle that, so you really only need one DINX1 module. This module is connected to CORE:J9 with a straight-thru 5 wire cable.
  24. I just finished adding a little feature to the SID application. Basically it adds a second function to the (in my case 10) menu buttons. Pressing any two of them together makes the SID goes into "keyboard mode" allowing you to use the menu buttons as a miniature keyboard. Pressing the exec button goes back into regular mode. If anyone else might find this useful, I'd love to run the 20-something lines of source by our asm-gurus and then post the mod + documentation here. Cheerio, nILS
×
×
  • Create New...