FantomXR Posted June 18, 2013 Report Share Posted June 18, 2013 I'm really not much into SysEx, but just a short question: Is it possible to send SysEx from a computersoftware (like MAX or plogue bidule) to the core, which changes the LCD message? If yes: Is there a kind of "sysex-creator" for text? I'm asking because Mainstage is not able to send tracknames (in difference to logic). I want to use Plogue Bidule instead to do this after every patch change. Will be a lot easier, than programming patches on the MB_NG. Quote Link to comment Share on other sites More sharing options...
norbim1 Posted June 18, 2013 Report Share Posted June 18, 2013 @Norbert: hopefully this release will help to solve the issue :smile: Thanks a lot TK! I hadn't got enough time to try, but I'm sure it will. Quote Link to comment Share on other sites More sharing options...
TK. Posted June 18, 2013 Author Report Share Posted June 18, 2013 Is it possible to send SysEx from a computersoftware (like MAX or plogue bidule) to the core, which changes the LCD message? Yes, and various usage models are supported. They are listed here: http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fmidibox_ng_v1%2Fcfg%2Ftests%2Fsyxtxt.ngc If yes: Is there a kind of "sysex-creator" for text? -> http://www.asciitohex.com Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
novski Posted September 15, 2013 Report Share Posted September 15, 2013 Hi I made my self a breadboard test of a Button and LED Matrix. Im not able to make it work as i wish. So i ask for a sample config of a 8x8 button_matrix with a 8x8 LED_Matrix wich for testing wold lit the LED 1 by pressing Button 1 and turn it of by depressing the same button. button_matrix sr_din1=1 sr_dout1=1 LED_matrix sr_dout1=2 sr_dout2=3 best regards novski Quote Link to comment Share on other sites More sharing options...
TK. Posted September 15, 2013 Author Report Share Posted September 15, 2013 This is the most simple example: http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fmidibox_ng_v1%2Fcfg%2Ftests%2Fblm8x8.ngc For your HW connections, you've to change the DIN/DOUT matrix configuration to: DIN_MATRIX n= 1 rows=8 inverted_sel=0 sr_dout_sel1=1 sr_din1=1 DOUT_MATRIX n= 1 rows=8 inverted_sel=0 sr_dout_sel1=2 sr_dout_r1=3 Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
novski Posted September 16, 2013 Report Share Posted September 16, 2013 (edited) Thanks. Now it works. I had a LED the wrong way and used the DINx4 with 220R also in the Selector lines - sr_dout_sel1=1 (...) The Link mentions just 3 SRs. Thats why i tried to build a better version than i had working. # HW definitions: DIN_MATRIX n= 1 rows=8 inverted_sel=0 sr_dout_sel1=1 sr_din1=1 DOUT_MATRIX n= 1 rows=8 inverted_sel=0 sr_dout_sel1=1 sr_dout_r1=2 # note: actually the sr_dout_sel1 in DOUT_MATRIX could be removed, # since DIN_MATRIX already outputs the selection pulses there # this is just for the case that somebody copy&pastes the definition... I layouted it like on this schematic: It seams to work but: The LED seams to be not as bright as it can be. Am i doing that right? Best Regards novski Edited September 17, 2013 by novski Quote Link to comment Share on other sites More sharing options...
Nexus Posted September 25, 2013 Report Share Posted September 25, 2013 I have a short question. Is it possible to dec/inc the value of a map-range with two buttons (one inc, one dec)? Example: Lets say the map is "MAP1 1 2 3 4 5 6 7 8 9 10" an we are on value 5. When I press the "dec-button" it should jump to 4,3,2... When I press the "inc-button" it should jump to 6,7,8... I know this works with an encoder or a single button. But an encoder is no option and the single button only "cycles" the value in on direction... Maybe someone can help me? Quote Link to comment Share on other sites More sharing options...
TK. Posted September 25, 2013 Author Report Share Posted September 25, 2013 I will check this after my vacation - I guess that this special button behaviour will require two new Meta Events, which allow to control a 'virtual' encoder. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
Nexus Posted September 25, 2013 Report Share Posted September 25, 2013 Hi Thorsten, thank you for your help. A 'virtual' encoder sounds great, but I want to clarify what I want to do: I want to select Banks of independent hw_ids with 2 seperate Inc/Dec Buttons for the hw_ids 1-4 and 5-8. I have 6 Banks. The Banks 1-3 are assigned to the hw_ids 1-4 and the Banks 4-6 are assigned to the hw_ids 5-8. The following works, but I can only "cycle" with one button... MAP1 1 2 3 EVENT_BUTTON id= 9 hw_id = 9 fwd_to_lcd=1 type=Meta meta=SetBankOfHwId:1 meta=SetBankOfHwId:2 meta=SetBankOfHwId:3 meta=SetBankOfHwId:4 button_mode=Toggle range=map1 lcd_pos=1:1:1 label="^d1" MAP2 4 5 6 EVENT_BUTTON id= 11 hw_id = 11 fwd_to_lcd=1 type=Meta meta=SetBankOfHwId:5 meta=SetBankOfHwId:6 meta=SetBankOfHwId:7 meta=SetBankOfHwId:8 button_mode=Toggle range=map2 lcd_pos=1:1:2 label="^d2" ...but I need it like this, but only the buttons 9 an 10 (for the hw_ids 1-4) work. Same problem with CycleBankOfHwId: EVENT_BUTTON id= 9 type=Meta meta=DecBankOfHwId:1 meta=DecBankOfHwId:2 meta=DecBankOfHwId:3 meta=DecBankOfHwId:4 range=63:63 button_mode=OnOnly EVENT_BUTTON id= 10 type=Meta meta=IncBankOfHwId:1 meta=IncBankOfHwId:2 meta=IncBankOfHwId:3 meta=IncBankOfHwId:4 range=65:65 button_mode=OnOnly EVENT_BUTTON id= 11 type=Meta meta=DecBankOfHwId:5 meta=DecBankOfHwId:6 meta=DecBankOfHwId:7 meta=DecBankOfHwId:8 range=63:63 button_mode=OnOnly EVENT_BUTTON id= 12 type=Meta meta=IncBankOfHwId:5 meta=IncBankOfHwId:6 meta=IncBankOfHwId:7 meta=IncBankOfHwId:8 range=65:65 button_mode=OnOnly With an Encoder it works lisk this: MAP1 1 2 3 EVENT_ENC id= 20 hw_id = 20 fwd_to_lcd=1 type=Meta meta=SetBankOfHwId:1 meta=SetBankOfHwId:2 meta=SetBankOfHwId:3 meta=SetBankOfHwId:4 range=map1 lcd_pos=1:1:1 label="^d1" MAP2 4 5 6 EVENT_ENC id= 30 hw_id = 30 fwd_to_lcd=1 type=Meta meta=SetBankOfHwId:5 meta=SetBankOfHwId:6 meta=SetBankOfHwId:7 meta=SetBankOfHwId:8 range=map2 lcd_pos=1:1:2 label="^d2" Maybe there is an easier solution, but I did not found one... I'm curious about it. Best Regards, Markus Quote Link to comment Share on other sites More sharing options...
TK. Posted December 1, 2013 Author Report Share Posted December 1, 2013 V1.027 is available: MIDIbox NG V1.027 ~~~~~~~~~~~~~~~~~ o .NGR: added "set_active" command. It can be alternatively used instead of the bank mechanism to activate/deactivate events, e.g. if the same events should be activated in multiple banks under certain conditions. A demo can be found under cfg/tests/multibnk.* o it's now possible to set a static forward value independent from the actual value of the event which initiates the forwarding. E.g. with EVENT_xxx fwd_id=SENDER:1:42 the SENDER:1 will always get value 42 for additional processing o support for multiple MBHP_MF_NG modules in a chain. See cfg/test/mf_multi.ngc for a configuration example o support for Logic Control Meters Configuration example: see cfg/templates/logictrl.ngc (search for "meter") o added new GLCD fonts (provided by Pcbatterij): Inverted and Tiny. In order to test these fonts, try following commands in the MIOS Terminal: lcd %C&t@(1:1:1)Tiny Font lcd %C&i@(1:1:1)Inverted Font o fixed OSC receiver (avoided stack overflow) o various minor bugfixes Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
sprintf Posted January 10, 2014 Report Share Posted January 10, 2014 Is it possible to increase the dim_levels per led to 32 or even 64 ? also in the matrix config ? could i simply add dim_levels in the sourcecode and compile ? what limits the amount of dim_levels ? Quote Link to comment Share on other sites More sharing options...
TK. Posted January 11, 2014 Author Report Share Posted January 11, 2014 In order to get 32 dim levels, you've to: 1) change the NUM_MATRIX_DIM_LEVELS to 32 in mbng_matrix.c: 2) change the rgb type in mbng_event.h from: typedef union { u16 ALL; struct { u16 r:4; u16 g:4; u16 b:4; }; } mbng_event_rgb_t; to: typedef union { u16 ALL; struct { u16 r:5; u16 g:5; u16 b:5; }; } mbng_event_rgb_t; change some checks in mbng_file_c.c which complain about values >= 16 (search for rgb) 64 dim levels: possible in theory, but much more changes are required, because the mbng_event_rgb_t type is only a 16bit variable, which can't store 3*6 bits. If you don't plan to use a RGB LED, you could write: typedef union { u16 ALL; struct { u16 r:6; u16 g:6; u16 b:4; // not used... }; } mbng_event_rgb_t; otherwise you would have to change it to a 32bit type, and this would require a lot of changes in the memory management and compression related functions in mbng_event.c It would also increase the memory consumption for each event! In addition, you've to set MIOS32_SRIO_NUM_DOUT_PAGES to 64 in the mios32_config.h file, and you should reduce the number of SRIOs (e.g. to 16) to avoid flickering. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
sprintf Posted January 28, 2014 Report Share Posted January 28, 2014 (edited) Hey Thorsten. Thanks for your effort. 32 levels is nice :smile: I have changed the files accordingly but still get an error here: Creating object file for mbng_matrix.c src/mbng_matrix.c: In function 'MBNG_MATRIX_DOUT_PinSet': src/mbng_matrix.c:524:3: error: #error "Please adapt this code according to the different NUM_MATRIX_DIM_LEVELS" make: *** [project_build/src/mbng_matrix.o] Error 1 i guess its because of this : #if NUM_MATRIX_DIM_LEVELS != (MIOS32_SRIO_NUM_DOUT_PAGES/2) but when i change MIOS32_SRIO_NUM_DOUT_PAGES to 64 i will run into the same problem you described when using 64 levels. ...also don´t i have to change mbng_dout.c too ? #define NUM_DIM_LEVELS 16 ///////////////////////////////////////////////////////////////////////////// //! local variables ///////////////////////////////////////////////////////////////////////////// static const u32 dim_pattern[NUM_DIM_LEVELS] = { 0x00000000, // 0 0x00000001, // 1 0x00010001, // 2 0x01010101, // 3 0x01010103, // 4 0x01030103, // 5 0x03030303, // 6 0x03130313, // 7 0x13131313, // 8 0x33333333, // 9 0x33373337, // 10 0x37373737, // 11 0x77777777, // 12 0x777f777f, // 13 0x7f7f7f7f, // 14 0xffffffff, // 15 if so, how does the dim_pattern change ? thank you very much for your time . ps. my coding skills are very low . best regards Edited January 28, 2014 by sprintf Quote Link to comment Share on other sites More sharing options...
TK. Posted January 28, 2014 Author Report Share Posted January 28, 2014 Yes, you are right - it's much more work than expected, it's not a simple change! :-/ I started to adapt mbng_matrix.c, so that it should also allow MIOS32_SRIO_NUM_DOUT_PAGES == 64, but then I found much more places which actually need changes. Also mbng_dout.c as you already noticed. The table has to be enhanced by more granular patterns, and also the variable width (e.g. u64 for 64 dim levels), and finally MBNG_DOUT_NotifyReceivedValue which transfers the pattern into the pages. So, most of the code is constrained for 32 pages and 16 dim levels. Adding more flexibility would result into too much work at my side - I don't want to do this. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
TK. Posted January 28, 2014 Author Report Share Posted January 28, 2014 Wow! 2 releases at once, because the preliminary ones were never officially published: V1.028: MIDIbox NG V1.028 ~~~~~~~~~~~~~~~~~ o DOUT_MATRIX n=8 properly supported o now up to 16 DOUT_MATRIX and DIN_MATRIX can be configured V1.029: MIDIbox NG V1.029 ~~~~~~~~~~~~~~~~~ o added USB MIDI workaround for Windows o if a EVENT_SENDER is part of a radio group, and got a new value, it will only send the MIDI event if the new value is matching with the specified range. Usage example: cfg/templates/pg300.ngc o if EVENT_RECEIVER forwarded to EVENT_AIN, EVENT_AINSER or EVENT_BUTTON, send also MIDI event. Usage example: cfg/templates/pg300.ngc o support for MBHP_CORE_STM32F4 module + many bugfixes and minor improvements reported/done in the last weeks. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
=FFW=> Posted January 29, 2014 Report Share Posted January 29, 2014 wow! thank you so much, TK., for all the effort you put down to all projects. Quote Link to comment Share on other sites More sharing options...
EsotericLabs Posted January 29, 2014 Report Share Posted January 29, 2014 (edited) I'm just only now getting my head around this amazing piece of firmware. It is a great platform for implementing a DB50XG driver than hardcoding into MIDIO128 i suppose. A feature request though: is it useful to put a midi clock or even a basic midi file player in? Like in MIDIO128. My envisaged use case is MBNG as a master midi device, a FCB1010 foot controller and a SEQ V4. Edited January 29, 2014 by EsotericLabs Quote Link to comment Share on other sites More sharing options...
Marxon Posted January 29, 2014 Report Share Posted January 29, 2014 (edited) WOW! GREAT WORK! I am using the new STM32F4 core and immediately noticed that executing of big NGR scripts is much faster! TK, did you modify the SD card access? Or is it because the new core? Best regards Marxon Edited January 29, 2014 by Marxon Quote Link to comment Share on other sites More sharing options...
TK. Posted February 1, 2014 Author Report Share Posted February 1, 2014 STM32F4 is typically ca. 50% faster than a LPC17 core. Also the DMA implementation is better (no shared interrupt for all channels) which results into faster SRIO and SD Card accesses. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
FantomXR Posted April 13, 2014 Report Share Posted April 13, 2014 (edited) Seems like I need to bang my head against the wall to get the solution. I just try a simple thing. I have a set of LEDs but for testing I just use one. Because I want to be able to control a lot of LEDs individually, I use DOUT_MATRIX. Here is the code: RESET_HW DOUT_MATRIX n=1 rows=8 sr_dout_sel1=3 sr_dout_r1=4 inverted=0 led_emu_id_offset=1 EVENT_LED id=1 type=CC cc=16 So, what I do expect is that the LED connected between D7 of SR3 and D7 of SR4 lights up as soon as it receives value 127 of CC16. But instead of this it lights up and it doesn't matter what I do with the slider in MIOS Studio. If I check all other pins, I have the same effect on every pin-combination. I expect them to be 0V but they aren't. If I swap anode and cathode the led is off with cc value 0. If I move the slider to 127 it begins to light... but it's very low. I have the same effect on every pin-combination. Time to go to bed?! This shouldn't be too hard to solve.... I measured the voltages: It's 4,25V between every SR3 and SR4 pin. How come? I tried another DOUT module. Same here. I have another DOUT module here which is equipped with a ULN2803 on the first SR. With this one and this code: DOUT_MATRIX n= 1 rows=8 inverted_sel=1 sr_dout_sel1= 1 sr_dout_r1= 2 the voltages between the pins are as expected. BUT the led is very low... Any tipps? Thanks! //Edit: Okay... the next day... notice to myself: Read schematics carefully. I forgot to remove the resistor on the first SR in case #1. And I forgot to set the led_emu_id_offset=0 in case #2. But anyway: The led is really a lot brighter if I connect it directly to a DOUT without matrix or ULN. Even with ULN its pretty low... has it something to do that I use warmwhite LEDs? //edit: I'm using a ULN2803. So the short leg goes to D7 of SR1. Than I removed the resistor on SR2 and connected the long leg to D7 of SR2. It works, but even than it's not that bright. Is there a chance to get more brightness without connecting each LED individually? Edited April 13, 2014 by FantomXR Quote Link to comment Share on other sites More sharing options...
TK. Posted April 13, 2014 Author Report Share Posted April 13, 2014 Is there a chance to get more brightness without connecting each LED individually? No, because in a 8x8 DOUT matrix the LEDs are only activated for 12.5% of the time The brightness also depends on the LEDs you are using. A "blacklist" (which also lists the good ones) can be found here: http://www.midibox.org/dokuwiki/doku.php?id=mb-lre8x2cs_pcb Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
FantomXR Posted April 13, 2014 Report Share Posted April 13, 2014 Hey Thorsten, thanks for getting back to me. Okay, that makes sense. So, in a 4x8 the led would be brighter? Quote Link to comment Share on other sites More sharing options...
John_W._Couvillon Posted April 19, 2014 Report Share Posted April 19, 2014 Is the NG a functional replacement for midio128 ver.3? Quote Link to comment Share on other sites More sharing options...
novski Posted April 20, 2014 Report Share Posted April 20, 2014 No. NG doesn't have a Midi Player/Recorder... You can read more about here: ucapps.de Quote Link to comment Share on other sites More sharing options...
FantomXR Posted April 28, 2014 Report Share Posted April 28, 2014 Hey people, just a short programming question: I have several LEDs connected in a DOUT_Matrix as well as several switches in a DIN_Matrix. I can easily assign one switch to LED to turn it on and off. But what I want to do is, not to turn off the LED completely. I want it to go down till, let's say, 25% of maximum brightness. How to do that? With other word: Press button --> LED goes to 100%, press button again --> LED goes to 25%. The reason why I want to do is, that I want to see the buttons even if it's dark outside. So I need kind of illumination of the buttons. Thanks, Chris Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.