Jump to content

TK.

Administrators
  • Posts

    15,193
  • Joined

Everything posted by TK.

  1. Ok, under this circumstances I would do it on the same way. Hm No, I would replace the StudioMix fader logic by the MIDIbox MF driver ;D (Just kidding ;-)) Best Regards, Thorsten.
  2. Hi Dimitris, thats ok - RB0-7 are high impedance digital inputs. Best Regards, Thorsten. P.S.: nice trick! :)
  3. Hi, did you really try it with a PIC16F877, or is it a PIC16F874 with half of the required program memory? When you read back the memory content with IC-Prog, do you see program code the program code from 0x1000-0x1fff? Best Regards, Thorsten.
  4. Hi Christoffer, no, the extended MIDI In is not standardized, but it's usefull :) I only know it from the Atari ST. The 15V input is ok for both modules - since no LCD, no pots and no LEDs are connected to the core module, the 7805 will not get too hot like on common applications. Best Regards, Thorsten.
  5. Schade dass IC-Prog die Fuse-Informationen nicht direkt aus dem .hex File extrahiert, das wuerde solche Fehlerquellen ausschliessen :-/ Die Probleme mit dem BankStick resultieren wahrscheinlich auf der letzten Aenderung in der Dump Struktur. Wenn Du den Stick formatierst, sollte es eigentlich wieder funktionieren. Es lohnt sich allerdings noch nicht, dort Sequenzen dauerhaft zu speichern, da ich die Struktur nochmals aendern werde (jeder Layer soll seinen eigenen Min/Max Werte erhalten). Zu den LEDs: die 64 LEDs werden konfigurierbar sein. Idealerweise setzt man unter jedes Poti eine eigene LED, ge"mute"ete Tracks werden dann so angezeigt wie momentan die ge"mute"ten Poti-Reihen, also invertiert. Da ich meine eigene Box jedoch nicht so ohne weiteres umbauen kann, wird es auch eine alternative Belegung geben, bei der 16 LEDs den Status einer selektierten Poti-Reihe anzeigen, und die restlichen LEDs den Status des SFB's. Mit dem PIC18F kann man spaeter dann bis zu 128 LEDs ansteuern - eigentlich sollte ich die erste Version noch vor Weihnachten rausbringen, die vielen blinkenden LEDs machen sich bestimmt prima als Christbaumschmuck ;-) Gruss, Thorsten.
  6. Hi Christoffer, yes, thats correct. :) I realized it on the same way on the first days. Later I built my SIDs into two seperate boxes, so that I'm able to lend one to friends and to use the other for my daily pleasure :D A particular variation is the way I realized the MIDI In - it comes with an integrated MIDI Thru on the outer pins, also know as "Extended MIDI In" (Atari ST). Here a schematic: http://www.ucapps.de/midibox_sid/mbsid_stereo_midi.pdf Best Regards, Thorsten. P.S.: I song I made with those two SIDs can be found under http://mp3.de/frequencies (Lovesong for my SIDs ;-))
  7. TK.

    usb

    Yes - unfortunately the statement I made in this old posting: http://www.midibox.org/cgi-bin/yabb/YaBB.cgi?board=old_forum;action=display;num=10308161100;start=2 are still valid. My still hope is that some day ultracheap USB devices are available (for example an USB-Mouse for less than 10 EUR) with an reprogrammable chip which can be canibalized for a MIDI adapter. Best Regards, Thorsten.
  8. Servus, Lemonhorse: danke fuers Lob, auch mir gefaellt das neue Handling nun wesentlich besser. Vorbei ist die Zeit, in der man sich durch die cryptischen Play- und Loopmodes kaempfen musste, nun gilt es, die neuen Moeglichkeiten zu erforschen :) Ich habe gerade das releaste .hex-File nochmal in meinen PIC geladen - bei mir werden die MIDI Daten korrekt versendet. Ist bei Dir vielleicht etwas beim Flashen schiefgelaufen? Vielleicht solltest Du den PIC nochmals flashen und anschliessend die Verify-Funktion aufrufen. Simolch: ja, das kann man bereits alles so konfigurieren, allerdings nur direkt in der Firmware. Sobald die SysEx Dump Struktur "final" ist, werde ich die neue Variante in das mk_syx Script einbauen, so dass man sich die Buttons auch selbst konfigurieren kann (Stichwort: Special Button Events). Naeheres zu diesem Thema gibt es dann irgendwann auf einer separaten Webpage. Gruss, Thorsten.
  9. In fact this is one kind of jitter when you combine the High- and Low byte to a 14-bit value. Since you want to send out a 7-bit value, the simplest way is to work internally with 8-bit values - the NRPN can be converted on this way: clrc rlf NRPN_HI, W ; shift left NRPN High byte IFSET NRPN_LO, 6, iorlw 0x01 ; copy MSB of NRPN low Byte (7-bit) to Bit 0 movwf FADER_VALUE ; save result in FADER_VALUE Best Regards, Thorsten. P.S.: your registers do partly overlap the RINGBUFFER0 address area at 0x70-0x7b. Suggestion: move the ringbuffer to Bank1 and locate the registers in between 0x30 and 0x7b. ;; 0xa0-0xef: SUART IN Ringbuffer RINGBUFFER0 EQU 0xa0 RINGBUFFER0_END EQU 0xef The Ringbuffer could also be located in Bank 2 or 3, but for this some additional changes are required
  10. To which address did you assign the DELTA registers? If you want to access them on the normal way, they should be in between 0x20 and 0x7f. Registers above this range are located in different banks, and you have to switch to the appr. bank to get the right values. An oversight of available RAM registers for PIC16F877: 0x20-0x6f: Bank 0 0x70-0x7f: all Banks 0xa0-0xef: Bank 1 0xf0-0xff: all Banks 0x110-0x16e: Bank 2 0x170-0x17f: all Banks 0x1a0-0x1ef: Bank 3 0x1f0-0xff: all Banks Microchip recomments the use of a special assember directive to switch between the banks. But this directive generates 2 instructions for each bankswitching, and so I've created some macros which helps me to reduce the code, it's: SWITCHBANK_0_1, 0_2, 0_3, 1_0, ... 3_0 So, when your delta registers are located in Bank 1, write this: SWITCHBANK_0_1 movf DELTA2, W subwf JITTER_DELTA, W SWITCHBANK_1_0 If JITTER_DELTA is a constant, write: SWITCHBANK_0_1 movf DELTA2, W sublw JITTER_DELTA SWITCHBANK_1_0 Note: sometimes it's easier to access the registers indirectly. Btw.: here the jitter elimination code of MIDIbox MF. IRQFADER_SNAP contains the target position, IRQFADER_VALUE the current position: ;; --- check distance between current and target position ;; --- if fader is in between "deadband", don't move it ;; addlw 255 - Hi ;; addlw (Hi - Lo) + 1 ;; Carry is set if W is in range Lo - Hi movf IRQFADER_SNAP, W addlw 1 skpnc movlw 0xff sublw 0xff movwf IRQ_TMP1 movf IRQFADER_VALUE, W ; get last sampled value addwf IRQ_TMP1, W ; compare it with snapped value addlw 2+1 bnc MOTOR_Move ; carry is set if value is in between range bz MOTOR_Move ; special case if fader == 0xff and target == 0x00 MOTOR_DontMove ;; --- Dont Move Fader -> Standby call MOTOR_StandBy Best Regards, Thorsten.
  11. Hi, normaly I don't use a debugger for my code. The MPLAB simulator is nice for verifying algorithms, but useless for checking a realtime system. Here an extract of different debugging methods I'm using: I print out some values on a LCD if I want to check the behaviour of my routines during runtime. This is only usefull if only a small number of values have to be displayed which don't change too fast. for fast changes I write the values into a seperate SFR region which acts as a ringbuffer and which is printed out by the LCD on every mainloop cycle. On this way the SFR region acts as "trace memory". When I have to observe a lot of value changes, I send them out as MIDI events and use MIDI-Ox to write them into a logfile When I have to send stimuli to the core module, I use the SysEx editor of MIDI-Ox which allows to send any (also invalid!) MIDI data. (type "BF 63 23 BF 62 17" into the command window and press the send button). The SysEx editor can also be used to save the stimuli I generate stimuli files with a short perl script, send them out with the SysEx editor, save the responses from the core module into a logfile and use a second perl script to filter out the data which is interesting for me I use a MIDIbox as stimulus generator I use a scope which is connected to the spare pin (J14) to monitor internal events in realtime. On this way I see how many times a particular routine is executed and how long it does get Best Regards, Thorsten.
  12. Hi Matthias, the explanation for the problem can be found here: http://www.ucapps.de/midibox/midibox_plus_16.pdf Magnify the red text beside of the 8 additional diodes. Best Regards, Thorsten.
  13. The messages are ok. Hrmpf, I'm totally unsure why your display doesn't work with the SID firmware. Does it work with other firmwares like MB64, MB64SEQ or MB16E? On the other hand: for the SID a LCD isn't required yet, it gives you no usefull messages. Best Regards, Thorsten.
  14. No, the AINX4 module itself should still be supplied by the core module. Only the analog inputs can be optionally connected to other voltage sources. If you've a source which outputs 0-5V, just connect the output pin to one of the analog inputs.... don't forget to join the grounds! Best Regards, Thorsten.
  15. Hi Christoffer, my suggestion is to build at least one SID core with the PIC16F as a reference. Since the current JDM programmer possibly needs some modifications to supply the PIC18F, the ramp-up of the new design can be pretty difficult w/o electronic knowledge. Hope that it will get easier when enough experienced people tried it. LTC: it's only an electronic extension, sure it works also with the SID. You can also connect the J11:MI and J11:Vs pins of the cores w/o MIDI interface to J11:MI/J11:Vs of the core with MIDI interface together. On this way the MI pins acts as "MIDI Through". Additional amplifiers (74HC00) are not required as long as the additional cores are not stuffed with optocouplers. For a better understanding: J11:MI is the digital MIDI In which goes to the Rx pin of the PIC. It can be used to supply the Rx (digital MIDI In) pin if no optocoupler is connected, or to forward the MIDI stream which goes through the optocoupler (digital MIDI Through) J11:MO is the digital MIDI Out which comes from the Tx pin of the PIC. It can be used to chain MIDI modules (MIDI Out 1st core -> MIDI In 2nd core). This method is not supported by the SID module, because it requires an internal MIDI Merger. If you wire the MI or MO pin from one to another core, the ground pins (J11:Vs) have to be connected also. LEDs can be connected to both pins: J11:MI for MIDI In LED, J11:MO for MIDI Out LED - but they require an amplifier which can be found on the LTC module. Just try it... :) Best Regards, Thorsten.
  16. No there isn't. But note that the next MB64 Release (V1.0 final!!! ;-)) will support 64 buttons, so that 2 * DINX4 modules make sense (the modules can be chained). Best Regards, Thorsten.
  17. TK.

    MIDIbox64SEQ Beta

    The new release comes with several bugfixes in the Note handler (overlapped notes are tied correctly now), in the MIDI clock synchronization and in the SysEx dump structure. http://www.ucapps.de/midibox/midibox64seq_v0.91.zip It features also a new submenu with presets for a quick configuration: N1/N2/N3/N4: Track 1-4 send notes on MIDI Channel 1, 2, 3, 4 C1/C2/C3/C4: Track 1-4 send controllers on MIDI Channel 1, 2, 3, 4 N1/C1/N2/C2: Track1/3 send notes on channel 1/2, track 2/4 send controllers on channel 1/2 N1/C1/C1/C1: Track 1 sends notes on channel 1, track 2-4 send controllers (Track 4 with Ping Pong effect) Drums: Track 1-4 trigger drum samples (Bass Drum, Snare, Closed/Opened HiHat) on MIDI Channel 10 Gater Fx 4Chn: Track 1-4 send CC#7 controllers for a nice gater effect on Channel 1-4 Transp.Crazy1: Track 1-4 send notes on Channel 1 in various sequencer modes (Normal/Transpose/T+Hold/Arpeggiator) at the same time Transp.Crazy2: same like above, but with additional dividers and PingPongs Enjoy! :-) Best Regards, Thorsten.
  18. TK.

    Newbie will lernen

    Servus, wirklich gute Buecher ueber Microcontroller kann ich leider nicht empfehlen, aber gerade fuer den PIC gibt es zahlreiche Seiten im Web, die interessante Informationen auch fuer Anfaenger liefern. Einen Einstieg findest Du auf dieser Seite: http://www.piclist.com/techref/piclist/begin.htm Und hier befindet sich ein sehr gut beschriebenes Einsteigerprojekt: http://www.piclist.com/techref/piclist/biketut/index.htm Ansonsten lohnt es sich vielleicht, mal im Archiv der Unibibliothek nach alten Elrad und Elektor Heften ausschau zu halten, in diesen Elektronikzeitschriften werden die Grundlagen meist leicht verstaendlich und nicht zu theorielastig erklaert. Gruss, Thorsten.
  19. cool! :) Best Regards, Thorsten.
  20. This has to be evaluated... since the PIC18F comes with much more RAM, a second MIDI buffer could be realized like on the standalone MIDI Merger, this would decrease the latency to 320 uS - 960 uS on usual cases (when no SysEx data is received/sent) Best Regards, Thorsten.
  21. Hi Ilmenator, a nice application for the filter! Hope that you will publish the final source code, so that other people can use it as template to solve their problems :) I don't expect that the second event is sent by the filter. Maybe from the StudioMix? Does it come with a MIDI Merger? This would explain why the NRPNs (the "used" values) will not be forwarded... how did you connect the MIDI INs/MIDI OUTs? Are you using 2 MIDI INs on your PC? Best Regards, Thorsten.
  22. Hi Christoffer, thats correct, I've disabled the MIDI merger in this firmware so that the SID module behaves like a common MIDI synthesizer. A temporary workaround: remove the optocoupler of the SID core module and connect J11:MO of the MB64 core with J11:MI of the SID core and connect the J11:Vs pins (ground) of both cores together. On this way the MIDI stream which is coming out of the MIDIbox64 will be routed to the MBSID and your PC. I will check in the next days if an activated merger causes performance problems in the MBSID firmware. Best Regards, Thorsten.
  23. That's really weird - I've no answer (yet) :-/ Best Regards, Thorsten.
  24. Hi, I compared the LCD drivers of both firmwares and found one major difference. I'm unsure if it is really the reason, so please could you test this one: http://www.ucapps.de/midibox_sid/midibox_sid_v1.1b.zip Best Regards, Thorsten.
  25. Finally the first beta version of MIDIbox64SEQ is available: http://www.ucapps.de/midibox/midibox64seq_v0.91.zip A brief description for the beta testers: The first version doesn't come with a mk_syx script, therefore all parameters have to be configured direcly at the box. A LCD, at least 8 buttons and a lot of pots (of course) are required. The Left/Right/Exec buttons have the same functions like on other MIDIbox versions. The "snapshot" button is used to start/stop the sequencer, to select the track and layers in the submenues, and so on... so try this button within every submenu to test the purpose. Every pot-row controls one track. 4 independent tracks are available. Each track consists of 3 layers which can be assigned to: Note Number, Velocity, Gate Length (on Note Events) CC Number, CC Value, Gate Length (on Controllers) 1st Parameter, 2nd Parameter, Gate Length (on other events) With the functional buttons F2-F4 the layers A, B, C can be selected. All pots will change their "purpose" on this way. A Soft-Takeover (Snap) function prevents parameter jumps. When you type the F1 button shortly, the Soft-Takeover function will be disabled until a new Layer is selected. This is fine for quick parameter changes. When you hold the F1 button and turn a pot, all parameters of the same row will be changed. On this way you can quickly select a note, velocity, gatelength, CC, CC value, ... for the whole row with one pot. Now the configuration (press the Exec button and go through the main menu): Select Bank: used to select another bank (BankStick required...) MIDI Learn: used to assign a MIDI Event to the Tracks/Pots Track Mode: can be selected for each track seperately: off (no MIDI Event will be sent by the track), "Normal": (nothing to say), "Transpose" (an external MIDI keyboard can be used to transpose the notes), "Transpose+Hold" (same with hold function), "Arpeggiator" (like Transpose, but poly), "Arpeggiator+Hold" (same with hold function), "Controller" (the whole pot row will not be clocked by the sequencer and can be used like a on as common MIDI controllers) Direction: can be selected for each track seperately: Forward, Backward, Ping Pong, Random. The Random function requests the spare pin of the MBHP Core module (J14) for the direction. If this pin is open, the status is random. You could also connect a switch, a waveform generator or something similar to this pin for nice sequencing effects. :) Or you can just tip your finger on it ;-) Clock Divider: can be selected for each track seperately: BPM/1, BPM/2, BPM/4, BPM/8, BPM/16 Track Length: can be selected for each track seperately: 1, 2, 3, ... 16 Layer Assignments: 12 Layers (4 Tracks * 3 Layers) have to be assigned to the sequencer functions: Note/Ctrl. Number, Velocity/Value, Gatelength BPM: values between 48 and 250 are possible. Select speed "47" if the sequencer should act as MIDI clock slave. MIDI Config.: MIDI Merger on/off, MIDIbox-to-COM on/off Send SysEx: allows you to send a SysEx dump in order to save the setup Limitations: Layer C contains only one value for the whole row (Layer A, B: 16 values). This restriction was necessary due to limited RAM - in the PIC18F452 version this limitation will not exist. Workaround: assign a static sequencer function to Layer C. If the track should play a drum, just assign the note number to layer A, velcoity to layer B and the gatelength to Layer C (-> gatelength never change). Or if you want to sequence a MIDI controller, assign the CC Value to Layer A, the gatelength to Layer B and the CC number to Layer C (-> CC number never change) the sequencer only play the type of MIDI event which is assigned to the first pot of every track. However, this doesn't really hurt ;-) the pot values are only stored in EEPROM when you enter the SysEx menu. So go into this submenu before you switch off the box. This circumstance will be solved in the next version with a SFB the next version will also support 64 LEDs and a 4x16 LCD Happy betatesting! :-) Best Regards, Thorsten.
×
×
  • Create New...