Vmidibox64 Features To-Do & Done List : Done : - Basic functionality - Pots & Buttons Configuration --> 1st byte selection for dropdown boxes - delay after sending the sysex header : 250ms - Fixed the faderdesk : midibox64.syx data is included in the EXE and loaded at startup. - MIDI IN Pot Learning Function. - MIDI IN support for 'virtual motorized' faders 12/05/02 - Virtual Midi fader control bug fix : 2nd byte was always 1 too low. added 1 20/05/02 - Midibox8/16 Sysex Compatibility Option -> now a separate software version - Button presets - Pot presets // controller number descriptions (customizable in vmb64presets.ini) - Export To INI File 26.05.02 - Label hints for Pots in virtual box. 26.05.02 - Added LCD graphical Component 16.06.02 (click on the LCD to get the old disp back) - Pot Snapshot support (in virtual faderdesk) 17.06.02 - fixed button preset saving 09.08.02 - modified knob ID / button ID from 0-63 range into 1-64 range 09.08.02 - improved field tab order 10.08.02 - Shortcuts for pot/button edit number +/- : PAGE UP and PAGE DOWN ! 10.08.02 - BankStick bank switching support, Format all banks feature. 12.08.02 - Copy and paste pot and button properties using CTRL-C, CTRL-V 14.09.02 - CTRL-ALT-S saves the midi in port, midi out port, sysexsendspeed to vmb64presets.ini 14.09.02 - A first version of customdesk.ini support was added 15.09.02 - Support of bitmaps in customdesk.ini was added 16.09.02 - Changed customdesk extension to .vmd, added customdesk button 17.09.02 - Reorganized internal code of vmidibox64 25.09.02, 27.09.02 - Included Primitive Virtual Dipswitch Support. (Unfinished) 04.10.02 - Adjustment for v1.0 mb64 firmware : sysex ID support, disable navigation keys feature, 64 buttons, bank name support, sequencer settings removed 11.11.02 - Minimal sysex send speed value is now 2 : this avoids FP error 23.11.02 - Improve PAGE-UP/PAGE-DOwN handling : combobox action disabled` 23.11.02 - Skin support for buttons and knobs 01.12.02 - Option 'midi-through filter' renamed as 'midibox link' ;) 05.12.02 - Skinning options added for fabrizio 15.12.02 - DOUT Shiftregister... Thanks Thorsten !! 04.02.03 - TouchSensor Setting... Thanks Thorsten !! 04.02.03 - LC Emulation ID ... Thanks Thorsten !! 04.02.03 - Added an editable field for Initial Pot Value 04.05.03 - Added support for some customizable META Pot Event labels 04.05.03 Planned Features : - Adjust LCD texts - Button Snapshot support ? - Maybe some popup bubble hints for the newbies - Comments in exported INI files - Multi-knob editable parameter list - Save to standard midi format - Simulate normal/snap/relative Pots Behaviour in the virtual desk Other Features Wishlist : (feature scrapbook) - incremental sysex update (Use sysex compare + sector per sector update ?) Maybe you can implement in few instructions if we simplify the protocol : fixed block size --> [Sysex header ] + [ Block Nr. Byte ] + [Block Data (32 bytes ?)] - Meta Event support : This was a futuristic idea ? Can you read out code memory to dump to midi port ? This would allow disassembly via editor --> meta event selection Can you call code from external memory (bankstick) ? probably not. Can you write into code memory ? It would be nice to update firmware via midi, using some kind of bootloader code + updatable codeblock Basti requested in the MIDIbox forum a feature which enables to store and upload the whole BankStick content to/from harddisk. I think that this could also be easily realized with your editor, but it requires a firmware extension from my site. It would require a special "Bank Select" SysEx string with an acknowledge. Progress: -> Editor sends: F0 00 00 7E 43 08 0n F7 Request Bank n (n=0 to F) -> Editor waits for Acknowledge, Time Out about 10 seconds -> MB64 sends: F0 00 00 7E 43 0F 0n F7 to acknowledge the Bank Switching -> or MB64 sends: F0 00 00 7E 43 0F 7F F7 to disacknowledge (no BankStick available) Note that the Acknowledge could take about 5 seconds for the case that a new bankstick is connected which first has to be formatted (every bank seperately) Switching to the internal bank is not supported when a BankStick is connected Now the procedure to download 16 banks (it's simple): Loop 16 times: -> Request Bank Select -> Check Acknowledge, leave if .. 0F 7F .. has been received -> Request Dump -> Save Dump ------- LCD LAYOUT PLANNED LAYOUT with a 4-line LCD, two already available pages are combined to one page. Display Page #1: Shows Page #1 and #2 of the 2-line mode Display Page #2: Shows Page #2 and #1 of the 2-line mode (not really usefull) Display Page #3: Shows Page #3 for last turned pot and the pot before Display Page #4: Shows Page #4 and Page #3 of the 2-line mode Display Page #5: Shows Page #5 and Page #3 of the 2-line mode There is no additional support, since I don't use such a display. 4-line Displays could be very helpfull when using the MIDIbox64 as sequencer (-> Page #4) Btw.: since v0.32 more informations are shown on the Sequencer page #4 than descriped in the tutorial. The Layout: "aa| b-cc/dd 1234" "oooooooooooooooo" "e-f gggggggg [B]" "BBBBBBBBBBBBBBBB" aa: Selected Bank (Pattern) b: Current Track (1-4, for Loop Modes) cc: Current Step dd: Max. Number of Steps (1-16) 1234: active Tracks oooo....: Muted Columns e: Last Turned Pot: Track f: Last Turned Pot: Number (Hex) ggg...: In sequencer mode, the output of this line heavily depends on the Play and Sequencer Mode --- there are too much combinations, it would take a lot of time for me to document all these BBB...: Bars ---- 3) MIDIbox64 V0.034 and MIDIbox16E V1.002 support partial writing into the memory. You can use this function for quick on-line updates SysEx command for MIDIbox64: F0 00 00 7E 43 04 AH AL F7 SysEx command for MIDIbox16E: F0 00 00 7E 45 04 AH AL F7 AH/AL is a 14-bit word-aligned address AL = (byte_address >> 1) & 0x7f AH = (byte_address >> 8) & 0x7f byte_address = (AH << 8) | (AL << 1) : n*2, n = 0x001 to 0x800 MB16E: SubBanks are not for interest for you, these are just a set of banks which are within a "BankStick Bank" The procedure to download 16 banks (it's simple): Loop 16 times (MB16E: 4 times): -> Request Bank Select -> Check Acknowledge, leave if .. 0F 7F .. has been received -> Request Dump -> Save Dump 5) Rouven suggested a very usefull functions, which could be realized with the Editor: a) format all banks - the Editor just have to select all banks, one after another. The MB64/MB16E will format the banks automatically b) write partial informations into several banks. For example: all Button Settings into Bank 2, 3 and 4; Pot 17-32 into Bank 1-16, etc. 6) request by Traizor. a make-settings-for-row option, thus that each knob of the row has the same controller (with min/max etc), but an increased midi channel for wach column?