Jump to content

TK.

Administrators
  • Posts

    15,196
  • Joined

Everything posted by TK.

  1. Hi Nenad, thanks for the detailed descriptions, they are very helpful. It's not clear, why you are not able to use the MIDIbox Editor, but MIDI-Ox possibly fails due to misconfiguration. What is happening: the integrated MIDI merger of MIDIbox64 is enabled by default. It can only be disabled in the configuration menu (but you don't own a LCD) or via SysEx (which fails). This explains, why you are receiving all the sent SysEx strings (memo for myself: the ping command should return a different string). When both virtual MIDI Outs of the roland driver are enabled, and when MIDI-Ox sends the string over both ports, the MIDI protocol will be violated. It seems that the Roland driver is not able to regognize this error and to prevent the violation. However, so it will only work with one enabled port. I cannot say, why MIDI-Ox sends nothing when you are only using one port. But - a very important input is, that the MIDIbox responses to a different application. This means, that you've found a running configuration which will help you to upload the file. The program comes with a send delay - it should be set to a value greater than 10 (or 20) ms. Thereafter load midibox64_generic.syx. Since it's still not clear, which device ID is currently set, you should modify the generic dump manually: It begins with: F0 00 00 7E 43 02 ... Now try to send 8 different variations of the whole dump with a modified device ID. First try the file unchanged, but with different send delays Change the 6th value (02) to: 12 Send it again Change the 6th value to 22 and send again Change the 6th value to 32 and send again Change the 6th value to 42 and send again Change the 6th value to 52 and send again Change the 6th value to 62 and send again Change the 6th value to 72 and send again (I love copy & paste ;-)) If your MIDIbox returns: F0 00 00 7E 43 xF F7 (x=device ID) after one of these trys, you've found the correct device ID. If this didn't help, try a "Read Request": F0 00 00 7E 43 01 F7 F0 00 00 7E 43 11 F7 F0 00 00 7E 43 21 F7 F0 00 00 7E 43 31 F7 F0 00 00 7E 43 41 F7 F0 00 00 7E 43 51 F7 F0 00 00 7E 43 61 F7 F0 00 00 7E 43 71 F7 If you receive any data, please post the first 10 bytes here in the forum Best Regards, Thorsten.
  2. Perfect! I have to update the JDM page anyhow for the PIC18F :) Best Regards, Thorsten.
  3. Perfect! I have to update the JDM page anyhow for the PIC18F :) Best Regards, Thorsten.
  4. Hi Dave, currently everything has to be programmed in assembler language, which is more difficult than C and requires some practice (try&error prototyping) at the beginning. In difference to C you have to learn funny mnemonics (instructions) and you have to "tell" the PIC step by step what he should do. However, this increases the performance of applications a lot, thats maybe the reason why I'm mostly speaking about delays of some nano or microseconds (and not about milliseconds like known from the PC world ;-)). On the other hand it consumes some time to learn and understand the language if you don't have the technical background. However, I've already started to search for a good programming language which simplifies the implementation of common control tasks. XPL0 looks interesting: http://www.idcomm.com/personal/lorenblaney/ Here are some programming examples: http://www.idcomm.com/personal/lorenblaney/guess.html I haven't evaluated this language yet, but maybe it could be supported by MIOS. Best Regards, Thorsten.
  5. It's located under http://java.sun.com/j2se/1.4.1/download.html Take the "JRE" package. Alternatively you could download Opera (the famous webbrowser) from http://www.opera.com, because it comes with the same java environment :) Best Regards, Thorsten.
  6. Some months ago I used a shielded cable which was longer that 3m w/o problems. At was a common audio cable for stereo, the shield should be used for the ground and Vss connection, the two wires for +5V (Vdd) and the AIN pin Best Regards, Thorsten.
  7. Thanks! :) Best Regards, Thorsten.
  8. The first MIOS release and a nice example application (MIDIbox LC) can now be found in the Concepts->MIOS->Download section. For all people who already purchased a PIC18F452: good luck! :) Best Regards, Thorsten. P.S.: a lot of additional documentation for MIOS itself and the MBLC wiring has not been written yet - so take it like a text adventure ;-)
  9. Hi Ian, yes, in theory it's possible to convert the files to MIDIbox SID patches (i.e with a perl script), since the dump format of the SID station is well documented. I will check this sooner or later ;-) Best Regards, Thorsten.
  10. There are no special instructions for such a box, but maybe this diagram helps: Best Regards, Thorsten.
  11. Hi Damien, due to the nice weather today I haven't worked on the final release, but maybe I will find the time tomorrow evening. However, if you've already built the core module and want to test the PIC18F, try the bootstrap loader first: http://www.ucapps.de/mios/mios_bootstrap_loader_v1.zip It should send a SysEx command after startup (F0 00 00 7E 40 <device-id> 01 F7) to request the MIOS dump (which will be released very soon :)) Best Regards, Thorsten.
  12. TK.

    Encoders in mb64

    It's not possible due to performance and memory limitations... Solution: buy a PIC18F (or order free samples on the Microchip Site) and use MIOS. Best Regards, Thorsten.
  13. Hi Faz, it isn't required to send the decoded password to Logic or Cubase, some dummy bytes are enough, since the purpose of this nameization sequence is only to unlock the Logic Control itself. Here the appr. code for the MIOS application, which will be published soon (and which can give you some more hints). These parts are called by a SysEx parser, which reacts on F0 00 00 66 <LC-ID> <action-ID>: ;; -------------------------------------------------------------------------- ;; MIDI Check action: perform a sysex action ;; -------------------------------------------------------------------------- LC_MPROC_Handler IFSET LC_MPROC_STATE, LC_MPROC_STATE_ACTION, rgoto LC_MPROC_Handler_DoAction bsf LC_MPROC_STATE, LC_MPROC_STATE_ACTION movff LC_MPROC_IN, LC_MPROC_ACTION rgoto LC_MPROC_SysExCheck_End ;; --- LC_MPROC_Handler_DoAction movf LC_MPROC_ACTION, W bz LC_MPROC_Action_Query movf LC_MPROC_ACTION, W xorlw 0x02 bz LC_MPROC_Action_HostReply movf LC_MPROC_ACTION, W xorlw 0x10 bz LC_MPROC_Action_WriteMTC1 movf LC_MPROC_ACTION, W xorlw 0x11 bz LC_MPROC_Action_WriteMTC2 movf LC_MPROC_ACTION, W xorlw 0x12 bz LC_MPROC_Action_WriteLCD movf LC_MPROC_ACTION, W xorlw 0x13 bz LC_MPROC_Action_VersionReq goto LC_MPROC_ActionInvalid ;; -------------------------------------------------------------------------- ;; MIDI Action: LC Query ;; -------------------------------------------------------------------------- LC_MPROC_Action_Query ;; wait until sysex footer (F7) has been received movlw 0xf7 IFNEQ LC_MPROC_IN, ACCESS, rgoto LC_MPROC_SysExCheck_End ;; send SysEx header call LC_MPROC_Send_SysExHeader ;; send Host Connect Query movlw 0x01 call MIOS_MIDI_TxBufferPut ;; call help function which sends the LC serial number call LC_MPROC_Hlp_SendSerial ;; send dummy password movlw 'A' call MIOS_MIDI_TxBufferPut movlw 'B' call MIOS_MIDI_TxBufferPut movlw 'C' call MIOS_MIDI_TxBufferPut movlw 'D' call MIOS_MIDI_TxBufferPut ;; send SysEx footer call LC_MPROC_Send_SysExFooter ;; finish Action rgoto LC_MPROC_ActionFinished ;; -------------------------------------------------------------------------- ;; MIDI Action: LC Host Reply ;; -------------------------------------------------------------------------- LC_MPROC_Action_HostReply ;; wait until sysex footer (F7) has been received movlw 0xf7 IFNEQ LC_MPROC_IN, ACCESS, rgoto LC_MPROC_SysExCheck_End ;; send SysEx header call LC_MPROC_Send_SysExHeader ;; send Host Connect Confirmation movlw 0x03 call MIOS_MIDI_TxBufferPut ;; call help function which sends the LC serial number call LC_MPROC_Hlp_SendSerial ;; send SysEx footer call LC_MPROC_Send_SysExFooter ;; finish Action rgoto LC_MPROC_ActionFinished ;; -------------------------------------------------------------------------- ;; this help function sends the pseudo serial number of the emulation: 12345678 LC_MPROC_Hlp_SendSerial movlw '1' movwf TMP1 LC_MPROC_Hlp_SendSerial_Loop movf TMP1, W call MIOS_MIDI_TxBufferPut incf TMP1, F movlw '8' IFNEQ TMP1, ACCESS, rgoto LC_MPROC_Hlp_SendSerial_Loop return ;; -------------------------------------------------------------------------- ;; MIDI Action: LC Version Request ;; -------------------------------------------------------------------------- LC_MPROC_Action_VersionReq ;; wait until sysex footer (F7) has been received movlw 0xf7 IFNEQ LC_MPROC_IN, ACCESS, rgoto LC_MPROC_SysExCheck_End ;; send SysEx header call LC_MPROC_Send_SysExHeader ;; send version number movlw 0x14 call MIOS_MIDI_TxBufferPut movlw 'V' call MIOS_MIDI_TxBufferPut movlw '1' call MIOS_MIDI_TxBufferPut movlw '.' call MIOS_MIDI_TxBufferPut movlw '4' call MIOS_MIDI_TxBufferPut movlw '2' call MIOS_MIDI_TxBufferPut ;; send footer only if merger has not been enabled ;; to ensure a proper MIDI protocol call MIOS_MIDI_MergerGet andlw 0x01 bnz LC_MPROC_Action_VersionReq_End movlw 0xf7 call MIOS_MIDI_TxBufferPut LC_MPROC_Action_VersionReq_End rgoto LC_MPROC_ActionFinished there is no special format for the version number Hope it helps Best Regards, Thorsten. P.S.: maybe it's required to handle this SySEx interaction (Query/Reply/Version Request) as fast as possible before the host application sends the query command again!)
  14. Hallo, da auf dem Core-Modul bereits die Kondensatoren, der Gleich'riecht'er und der Spannungsstabilisator vorhanden sind, kann man auch direkt den von Dir vorgeschalgenen Trafo anschliessen. Die Trafo-Werte sind ok, sofern kein LCD mit Hintergrundbeleuchtung angeschlossen werden soll. Auf meiner Homepage ist diese Moeglichkeit nicht dokumentiert, weil ich sie fuer Elektronik-Anfaenger fuer zu gefaehrlich halte. Und die Fortgeschrittenen wissen i.d.R., dass ein Trafo ausreicht... however, ein wichtiger Tip: das Netzkabel auf der 220V Seite gut verloeten und befestigen, damit es nicht abreisst (am besten mit einem sog. Kabelbinder aus Plastik - keinen Metalldraht verwenden!). Anschliessend die Netzspannungs-Kontakte mit einem Panzerklebeband o.ae. ueberkleben, so dass Du mit den Kabelenden nicht (unabsichtlich) in Beruehrung kommen kannst. Falls Du die Box spaeter mal in ein Metallgehaeuse bauen moechtest, solltest Du zusaetzlich noch etwas isolierendes unter die Platine legen, z.B irgendetwas aus Hartplastik (die Verpackung von "Ferrero Rocher" ist dafuer bestens geeignet ;-)) Gruss, Thorsten.
  15. Hi Rogic, you don't have to configure the driver, it should work without modification. So I think that there are two possible reasons for the problem: either your MIDI-In is not working (I hope that you disconnected the optocoupler when using the MAX232?) or you've changed the device ID of your MIDIbox64 by fault. To check if MIDI-In is working correctly and to find out the selected device ID, you can use MIDI-Ox. Just send the following SysEx commands to the box. One after another: F0 00 00 7E 43 0F F7 F0 00 00 7E 43 1F F7 F0 00 00 7E 43 2F F7 F0 00 00 7E 43 3F F7 F0 00 00 7E 43 4F F7 F0 00 00 7E 43 5F F7 F0 00 00 7E 43 6F F7 F0 00 00 7E 43 7F F7 MIDIbox64 will response to one of these commands with: F0 00 00 7E 43 <device-id>F F7 If all 8 commands don't work, you've a hardware problem. Check the connections, ... Best Regards, Thorsten.
  16. oops, so these photos documented that I'm a person with 6 hands and 2 heads after all? No, I've used the self timer of my camera ;-) Best Regards, Thorsten.
  17. So long as you don't use the MIDIbox with a display, the order doesn't matter, since the pots are free assignable. A changed order could also be irritating when you plan to use Serge's MIDIbox editor for the configuration of MIDI events Best Regards, Thorsten.
  18. Hi Klaas, thats not exactly the point, but you will regognize the difference when you start to play with the code. The first example doesn't need a branch with the IFNEQ macro (If-Not-Equal), since simply the pot number and the pot value will be sent out. Pot #0 will send: B0 00 <value>, Pot #1: B0 01 <value>, Pot #2: B0 02 <value>, ... Your modification for the second example will work. And you see that this method will lead to a lot of code (and therefore to a high danger that anything will not work due to a copy&paste error or similar). But fortunately there are two more advanced solutions: array and jumptables. An array can be accessed by the "table read" instruction on this way (I don't write the complete code here, because can be found in the examples later): (Note: the functions with capitalized letters are predefined macros which simplifies the programming - they contain some additional instructions)  ;; get 7-bit value of pot, result in working register    call   MIOS_AIN_Pin7bitGet     ;; save value in MIOS_PARAMETER1    movwf  MIOS_PARAMETER1   ;; preload table pointer with first entry of MyCCTable  TABLE_ADDR   MyCCTable  ;; get pot number  movf   SAVED_POT_NUMBER, W  ;; add pot number in WREG to table pointer  TABLE_ADD_W  ;; read table entry  tblrd*  ;; get table entry, it has been stored in TABLAT  movf   TABLAT, W  ;; this is our CC number. now set the CC parameter  call   SID_CCSet  ; (value in MIOS_PARAMETER1)  an example for the table: MyCCTable     ;; define CC values for Pot #0 - #16     db    44, 46, 48, 52, 56, 60, 61, 62, 01, 02, 03, 04, 05, 06, 07, 08 This reduces the code a lot and different banks can be defined on this way. Another advantage: for users who don't like programming, a GUI could be provided which allows to edit such tables. The second method are jumptables. It's like a "case" function in C. Here an example for the buttons: ;; this routine will be called when a DIN pin has been toggled. ;; DIN pin number in WREG and MIOS_PARAMETER1, ;; DIN pin value (0 or 1) in MIOS_PARAMETER2 USER_DIN_NotifyToggle  ;; branch depending on pin number (which is in WREG)  JUMPTABLE_2BYTES 4  ;; 2-byte instructions, 4 entries  rgoto   DIN0_MIDIChannelDown  rgoto   DIN1_MIDIChannelUp  rgoto   DIN2_DeviceNumberDown  rgoto   DIN3_DeviceNumberUp DIN0_MIDIChannelDown  ;; only continue if button has been pressed (value = 0) movlw 0 IFNEQ MIOS_PARAMETER2, ACCESS, return  call   SID_MIDIChannelGet  addlw  -1  call   SID_MIDIChannelSet  return DIN1_MIDIChannelUp  ;; only continue if button has been pressed (value = 0) movlw 0 IFNEQ MIOS_PARAMETER2, ACCESS, return  call   SID_MIDIChannelGet  addlw  1  call   SID_MIDIChannelSet  return ;; ... Best Regards, Thorsten.
  19. A Windows version of gimp? Cool! Yes, gimp is also one of my favourite tools, but it doesn't offer a grid mode for bitmaps - or where can I find this feature? Best Regards, Thorsten.
  20. Ah, now I understand the problem. I haven't noticed that the Gallery is offline. I moved the pictures to my old (5 year old) tripod account since the downloads on the puretec server produced too much traffic (more than 2GB extra). Ok, I've already an alternative free account at www.8ung.at and will try it there again. Best Regards, Thorsten.
  21. Both are ok - take the cheapest one :) Best Regards, Thorsten.
  22. Hi, ok - here an illustrated guide: first cut the cable ends with a cutter: the cable ends should be tinned to ensure proper junctions: also the connectors should be tinned: now you can solder the cables to the connectors very easily without additional tin: Best Regards, Thorsten.
  23. If your keyboard has no Thru port, it possibly also provides an integrated merger - this would be perfect! Which keyboard do you own exactly? Best Regards, Thorsten.
  24. TK.

    Baby Hui

    Ich selbst kann mittlerweile schlecht einschaetzen, ob fuer einen Neuling die Programmierung anhand von Vorlagen (Copy/Paste/Modify) schwierig ist, aber spaetestens bis zum Wochenende sollten die Beispiele fertig sein, so dass Du Dir selbst ein Bild darueber machen kannst. Gruss, Thorsten.
  25. Hi, I can confirm this. Thomas (who built a mega-midibox with a lot of motorfaders) had the same problem. Best Regards, Thorsten.
×
×
  • Create New...