Jump to content

ssp

Programmer
  • Posts

    659
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by ssp

  1. Finished building the first mb_mf NG and hooked up a fader, all worked first time. Calibration is great through mios studio. Would have been great if it had the ability to have a lcd attached. Just waiting for the other pcbs to arrive now so I can get on with the ngc code learnings and trial!!

  2. Just now, TK. said:

    Hi,

    finally found time to go through this thread... ;-)

    First of all: the SysEx string contains an "illegal" value: 0xE0
    Values >= 80 should not be sent, because they will be interpreted as a new MIDI status.

    Second: you could simply toggle between the two values 0x10 and 0x01, and insert it into the SysEx string via ^val:

    
    EVENT_BUTTON id=1 range=0x10:0x01 button_mode=toggle type=SysEx stream="0xf0 0x00 0x01 0x16 0x10 0x18 ^val 0xf7"
    

    Best Regards, Thorsten. 

    The event 0xE0 was a misstype by me sorry about that, this was basically an example sysex string not the actual string

     

    As much as i thought i had learned i see there is still a lot more to learn!! man next week is going to be crazy!

  3. Thanks for calling ini TK

    Im learning a lot in a short time so yep I am making the odd mistake here and there , but i have everything written down as well. Lots of things to try next week when its all assembled and put together.

    The guys have been just nudging me in the right direction rather than all out doing it for me which is great as it is making me think.

     

    here is a screen shot of bome translator capturing the commands from the daw software.

    lots to try out, but you can see the captured events on the left in the translator on the right

     

    bome screen.jpg

  4. So using bome's midi translator it shows this string

    # when you move to another channel from the one you are on

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4E 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4F 7F
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4A 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4D 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4B 00

    # This is the string to select the channel

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 18 7F ( sysex header= F0 00 01 06 16 )

    # This is the string when you deselect

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 18 00

    # Now we select a different channel:

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 03 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4E 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4F 7F
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4A 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4D 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4B 00

    # This is the select string

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 19 7F

    # This is the string when you deselect this channel

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 19 00

     

    # And once again when you move to the previous channel

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4E 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4F 7F
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4A 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4D 00
    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 4B 00

    # The first channel that was selected

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 18 7F

     

    # And deselect as before

    MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 18 00 

     

     

  5. let me know if this is correct

    event_button id=1 fwd_id=sender:1 range=0:127 button_mode=toggle

    event_sender hw_id=1 id=1000 fwd_id=led:1 type=SysEx stream="0xf0 0x00 0x01 0x16 0xE0 0x18 0x10 0xf7" if_equal=0

    event_sender hw_id=1 id=1001 fwd_id=led:1 type=SysEx stream="0xf0 0x00 0x01 0x16 0xE0 0x18 0x01 0xf7" if_equal=127

    ok so looking at this

    event_button id=1  #This is the event (button press) id=1 this is the first button on shift register 1=D0
     
    fwd_id=sender:1 #this forwards the event_button id

    range=0:127 #midi value range

    button_mode=toggle #button type


    event_sender hw_id=1 #this is the event id that was forwarded to the sender

    id=1001  #this gives the event an id (could this be a number say 01 then the second 02?)

    fwd_id=led:1 this turns on the dout led 1 on shift register pin 1

    type=SysEx stream="0xf0 0x00 0x01 0x16 0xE0 0x18 0x01 0xf7"  # this is the transmitted sysex stream

    if_equal=127  # this is the on off state of the toggle button either off=0 or on=127

  6. 20 minutes ago, Zam said:

    Hello

    You can do it this way:

    
    event_button id=1 fwd_id=sender:1 range=0:127 button_mode=toggle
    
    event_sender hw_id=1 id=1000 fwd_id=led:1 type=SysEx stream="0xf0 0x00 0x01 0x16 0xE0 0x18 0x10 0xf7" if_equal=0
    
    event_sender hw_id=1 id=1001 fwd_id=led:1 type=SysEx stream="0xf0 0x00 0x01 0x16 0xE0 0x18 0x01 0xf7" if_equal=127

    Best

    Zam

    Hey many thanks Zam, I hadn't got the the event_sender section yet, I will go through it now and get some lines down to try this week.

    I am still hoping thorsten come in to let me know about the sysex from my daw to the oled, The code is amazing and I understand a lot of it, for me its just a couple of functions that have been asked about before but have never been answered or havent been followed up on.

    The code above is really clear in its function for me and i can apply this method for other things as i go and make changes.

    By the way I really liked thy automation system you made for your console, really good.

  7. It's getting late now but... Can I apply two different sysex strings to a toggle switch?

    For example

        Select track 1= F0 00 01 06 16 E0 18 10 F7

    Deselect track 1= F0 00 01 06 16 E0 18 01 F7

    The switch is in the last 10/01 at the end of the string.

     

    Having a look through the info in the morning. If I find what I need I will share how to apply it

     

     

    (EDIT) just found this in "First steps"

     

     Surprise me! 

    Our last experiment with a single button ends with a small surprise: change the EVENT_BUTTON statement to:  EVENT_BUTTON id=1  fwd_id=LED:1  button_mode=OnOnly \ type=SysEx stream="0xf0 0x00 0x00 0x7e 0x32 0x00 0x0d 0x40 0x57 0x6F 0x77 0x21 0xf7" \ lcd_pos=1:1:1 label="Button #%3i: %3d"  ...and have a look at the MIOS Terminal while pressing the button... ;-)  Ok, this demonstration should also show you, that it's possible to send SysEx streams, and that multiple lines in the configuration file can be concatenated to a single command with the backslash (\) character.  This needs to be expanded for a dual function toggle switch so it needs an on & off string.

     

    I would use it in this aspec to send my string:  EVENT_BUTTON id=1  fwd_id=LED:1  button_mode=Toggle \ type=SysEx stream="0xf0 0x00 0x01 0x16 0xE0 0x18 0x10 0xf7" 

    I need to apply a "Toggle On/Off" state to the string so it has an on and off event stream.

     

  8. I have managed to set up bome's midi translator tonight and try a few things out as I built my mb_mf but the 10mhz crystal wont be here until next week.

    The correct sysex string for the oled coming from my daw software is this

    F0 00 01 06 16 12 00 00 00 73 74 72 69 6E 67 73 F7

    this hex is ascii for strings: 73 74 72 69 6E 67 73

    the header is different to what the pdf told me, however I will try this out next week as a command from mios studio.

     

    I did see there was another thread asking TK if it was possible to map these sysex commands to individual oled displays but there was no follow up on this and I did post on that particular thread the other day to see if it had been resolved.  As i know the strings involved in generating the "track name" on the display it will allow me to use this on each new track.  i am hoping that when TK pops in again this weekend he may take 5 mins just to answer on this.

    I have most of the .ngc code down now and have been busy writing things ready to test next week. Most of the casework has been designed and i will cut it on the cnc machine and laser cutting system in work next week as well.

     

    only a few holdups now!!

    Thorsten you crazy german genuis dude. what do you say??? sysex strings of track names to the displays...?? thanks

  9. 5 hours ago, totoRaymond said:

    Hi!

    I made the same mistake recently.

    If it helps, i found some on aliexpress which seems compatible with MidiBox_NG:

    https://fr.aliexpress.com/item/32233300972.html?spm=a2g0w.12010612.8148356.5.58bf27a8d5IkVL

    I ordered a pair as samples 2 days ago. I don't expect them soon but i'll keep you updated when they arrive.

     

    Thomas

     

    thanks thomas, i ordered the correct ones in the beginning, i got sent totally different things. I found some on ebay after got them coming tomorrow.

     

  10. My ssd displays turned up today. Looks like I got messed with.  These are not the ssd1306 glcds I needed. These have only 4 pins on, I'm guessing they are not compatible with the stm32f4. Anyone know if these will work or if I need to try and get the 16 pin parallel ssd displays?

    IMG_20191204_180503.jpg

    IMG_20191204_180445.jpg

  11. On 03/12/2019 at 4:47 AM, Flexinoodle said:

    Its pretty dead on this forum nowadays uh :(

    Hey flex, nice to see you back around again, long time!!!   yep I am finding it kinda wierd, its far too quiet and theres no-one in chat anymore.  I know we have all aged slightly and have families and work etc.. but damn.. my local morgue has more movement than this place these days lol!!!

  12. Hi Thorsten, was there a resolution to this? as I am looking to display the channel/track info on a glcd over each fader. i saw john finsters mackie clone and he was aable to have track info on his displays, I have messaged him hoping he will pop in at some time and i can discuss it with him, but i think he just used the mb_lc setup.

    On 16/12/2012 at 9:22 PM, Duggle said:

    Some questions:

     

    • How about LCD display of dynamic text as in patch name(s) contained within a received Sysex message?


    I've no solution for this yet, but to ensure that this won't be forgotten I just have added this topic to the MBLC page.
    It will probably work in conjunction with a EVENT_RECEIVER which listens to multiple bytes instead only one - but this would blow up the memory storage format, because each EVENT would need to store the byte range.
    Once a solution has been found, the label could be inserted into outgoing SysEx, but also displayed on LCD with a special formatting directive (such as %t)

  13. How do i set the software up so that this sysex string is sent to the glcd:

    so the software sends this string  F0 00 01 06 02 01 01 02 01 115 116 114 105 110 103 115 F7  which is to the first glcd scribble display and the ascii text is "strings" and is centred

    sysex header= F0 00 01 06 02

    scribble number 1= 01

    line number 1= 01

    alignment flag centred = 00

    ascii text 115 116 114 105 110 103 115 = strings

    sysex close = F7

     

    would i use fwd_to_lcd=<1|0> 

     

    I am making a test interface with one motor fader, one glcd and a couple of buttons encoders and led's so that i can get to grips with the code and using mios studio i want to test this by sending the string to the test box.

    can anyone help me on this please?

  14. Oh...( zz) . Convert binary to hex.. Lol sorry head fudge.

    So, 0000/0110, the first 1 being

    Invert 0=normal, 1=inverted

    0000=center not inverted hex 00

    0001=left not inverted hex 01

    0010=right not inverted hex 02

    Ok if I want a single glcd to show this how do I map this sysex string to the glcd when the software outputs it?

  15. Here is a string, I am not sure on the alignment flags (zz) can anyone explain the alignment flags to me? I am looking it up online also.

    F0 00 01 06 02

    xx = scribble strip id 0-7

    yy = line number 0-3

    zz = alignment flag and normal/inverted

    • flag bits xxxxiaa (0000000 = centered normal)

    aa = alignment (center: 0, left: 1, right: 2)

    i = inverted

    x = not used

    tx = text in ASCII format

    This is to the first glcd

     

    F0 00 01 06 02 01 01 (zz) 01 115 116 114 105 110 103 115 F7

    This is the first GLCD line 1 (i am learning about the flag bits) not inverted and the asci text "strings" closed with F7

     

     

  16. Its weird looking a this all these years later and understanding what i didnt back then.

    Also the issue with the shuttle was solved i missed the full string..

    Forward: F0 7F device_ID 06 47 03 sh sm sl F7 -> 21 13 n

    Reverse: F0 7F device_ID 06 47 03 sh sm sl F7 -> 21 23 n

    Also the movlw function, which means 'Move Literal Value Into W', or put the value that follows directly into the W register.

     

    I found a pdf a while ago that explainied pic programming here is the link incase anyone wants it: http://groups.csail.mit.edu/lbr/stack/pic/pic-prog-assembly.pdf

    I just got a couple of core8 from modular addict as i like the old pic mb64e and its also a good build with my son who is getting into music and midi and electronics, he is 13 and enjoying it.

  17. SysEx

    SysEx header <SysExHdr> F0 00 01 06 02
    Manufacturer ID 00 01 06
    16 fader Device ID 16
    8 fader Device ID 02

    Faders
    Use MIDI pitch bend message to transmit fader moves and receive fader positions. FaderPort 8. Channels 0-7 are used to address faders 1-8 respectively. FaderPort 16. Channels 0-15 are used to address faders 1-16 respectively.

    Received Ex, ll, hh
    Transmitted Ex, ll, hh
    Fader index x
    Low 7 bits ll
    High 7 bits hh

    Encoders

    Use CC messages to transmit increment and decrement values. Transmitted endless rotary encoder delta values:
    Pan / Param Encoder: B0, 10, xx
    Session Navigator Encoder: B0, 3C, xx
    xx delta value bit (Bit 6 = direction, Bits 0-5 = number of steps)

     

     

    EDIT: Is it possible to have the glcd respond to the sysex coming in? i cant find where i assign a sysex recieve to a specific glcd. I understand the sysex i need it to recieve but how i assign say glcd 1 to recive the sysex: 

    ignore the brackets etc they are just reference for the numbers

    F0 00 01 06 02 (xx01) (yy01) (zz ??) (aa 00) does the ngc allow for asci text? is this in the documentation? the track name is "strings" in ascii its 115 116 114 105 110 103 115. How do i have the glcd recieve this for displaying the track name?

    xx = scribble strip id 0-7

    yy = line number 0-3

    zz = alignment flag and normal/inverted

    • flag bits xxxxiaa (0000000 = centered normal)

    aa = alignment (center: 0, left: 1, right: 2)

    i = inverted

    x = not used

    tx = text in ASCII format

     

    I have printed everything out and i am going through it well, just a couple of things i cant find or know about. Its a jump from the old core8's to this, mind you i havent been so excited by code in a long time.

     

     

  18. really enjoying this code

    EVENT_BUTTON id=1 type=NoteOn key=36 lcd_pos=1:1:1 label="Button #%3i: %3d"  the simplicity of defining a buttons name and the value etc. push the button and "Button" is displayed on the lcd along with its value of 36.

    im now looking at the addition of a sysex command mapped to the button.

    Also with regards to the small SSD1306 displays, the software i use uses sysex to talk to them,

    here is the sysex from the midi implementation section of the manual

    Value Bar Received:

    B0, 3i, vv i Value bar number (0 thru 7) vv value (0 to 7F)

    B0, 3i, mm i Value bar number offset by 8 (8 thru 15) mm Value bar mode (0: normal, 1: bipolar, 2: fill, 3: spread, 4: off)

    B0, 4i, vv i Value bar number (0 thru 7) for strip 9-16 vv value (0 to 7F)

    B0, 4i, mm i Value bar number (8 thru 15) for strip 9-16 mm Value bare mode (0: normal, 1: bipolar, 2: fill, 3: spread, 4: off)

    Scribble Strips

    Addressing: Scribble Strip ID and Scribble Strip Line via SysEx:

    Received:

    Set Mode:

    <SysExHdr> 13, xx, mn F7

    xx = scribble strip id 0-7

    m = bits 6 to 4 

    • bit 4 = 0 - do not clear the strings/ redraw old strings in new mode

    [<SysExHdr> 0x13, 0x01, 0x05 F7] - Changes display mode to Mode 5 and redraw old strings in new mode

    • bit 4 = 1 - clear strings / new strings will be send and drawn in new mode [<SysExHdr> 0x13, 0x01,0x12 F7] - Changes display mode to Mode 2 and clears the old strings for Scribble Strip #1)

    • bit 5 = unused • bit 6 = unused n = mode number (bits 3 to 0) 

     

    Send String:

    Send the text messages to the scribble strips. Received: <SysExHdr> 12, xx, yy, zz, tx,tx,tx,... F7

    xx = scribble strip id 0-7

    yy = line number 0-3

    zz = alignment flag and normal/inverted

    • flag bits xxxxiaa (0000000 = centered normal)

    aa = alignment (center: 0, left: 1, right: 2)

    i = inverted

    x = not used

    tx = text in ASCII format

    Metering

    Channel Pressure message (After Touch) for the peak and reduction meters.

    Received:

    Dn, vv

    n meter address

    • 0-7 peak meters 1-8

    • 9-15 reduction meters 1-8

    vv meter value (0...7F)

    Peak meters decay automatically.

    Reduction meters are set by the host only (no automatic decay).

    Program Change message for the peak and reduction meters 9-16.

    Cn, vv

    n meter address

    • 0-7 peak meters strip 9-16

    • 9-15 reduction meters strip 9-16 vv meter value (0...7F)

    Peak meters decay automatically. 100% decay in 1.8 seconds.

    Reduction meters are set by the host only (no automatic decay).

    Running Status The following message is should be sent every second: A0,00,0

     

    scribble.jpg

×
×
  • Create New...