Search Results for 'Nrpn'

Home Forums Search Search Results for 'Nrpn'

Viewing 20 results - 1 through 20 (of 278 total)
  • Author
    Search Results
  • bryan321
    Participant
      • Topics: 3
      • Replies: 1
      • Total: 4

      I’d like to be able to make two buttons to switch between the banks I also would like to make a menu to load and save patches a previous button and next button I could not get it to do a sysex dump at the bottom is the file for the panel here is the Midi implementation

      KORG ER-1 MIDI IMPLEMENTATION
      1.TRANSMITTED DATA

      1-1 CHANNEL MESSAGES [H]:Hex, [D]:Decimal

      +——–+———+——-+————————————–+

      | Status | Second | Third | Description |

      | [H] | [H] [D] | [H] | |

      +——–+———+——-+————————————–+

      | 8n | kk (kk) | vv | Note Off vv=0~127 |

      | 9n | kk (kk) | vv | Note On vv=1~127 |

      | Bn | 00 (00) | mm | Program Bank Select(MSB) [NOTE1]|

      | Bn | 06 (06) | dd | Data Entry(MSB) [TABLE1]|

      | Bn | 20 (32) | bb | Program Bank Select(LSB) [NOTE1]|

      | Bn | 62 (98) | nl | NRPN LSB [TABLE1]|

      | Bn | 63 (99) | nm | NRPN MSB [TABLE1]|

      | Cn | pp (pp) | — | Program Change [NOTE1]|

      +——–+———+——-+————————————–+

      n : MIDI Channel (0~15)

      1-2 SYSTEM COMMON MESSAGES

      +——–+———+——-+———————————————+

      | Status | Second | Third | Description |

      | [H] | [H] | [H] | |

      +——–+———+——-+———————————————+

      | F2 | pp | pp | Song Position Pointer |

      | F3 | ss | — | Song Select ss : Song No. = 0~15 |

      +——–+———+——-+———————————————+

      This message is transmitted when in Song mode and the “Clock”
      is set to “INT”.

      1-3 SYSTEM REALTIME MESSAGES

      +———–+———————————————–+

      | Status[H] | Description |

      +———–+———————————————–+

      | F8 | Timing Clock * |

      | FA | Start * |

      | FB | Continue * |

      | FC | Stop * |

      | FE | Active Sensing |

      +———–+———————————————–+

      * :This message is transmitted when the “Clock” is set to “INT”.

      1-4 UNIVERSAL SYSTEM EXCLUSIVE MESSAGES

      DEVICE INQUIRY REPLY

      +———+———————————————–+

      | Byte[H] | Description |

      +———+———————————————–+

      | F0 | Exclusive Status |

      | 7E | Non Realtime Message |

      | 0c | MIDI Channel ( Device ID ) |

      | 06 | Inquiry Message |

      | 02 | Identity reply |

      | 42 | KORG ID ( Manufacturers ID ) |

      | 51 | ER-1 ID ( Family ID (LSB)) |

      | 00 | ( Family ID (MSB)) |

      | 00 | ( Member ID (LSB)) |

      | 00 | ( Member ID (MSB)) |

      | xx | ( Minor Ver. (LSB)) |

      | xx | ( Minor Ver. (MSB)) |

      | xx | ( Major Ver. (LSB)) |

      | xx | ( Major Ver. (MSB)) |

      | F7 | End of Exclusive |

      +———+———————————————–+

      This message is transmitted whenever a INQUIRY MESSAGE REQUEST
      is received.

      1-5 SYSTEM EXCLUSIVE MESSAGES

      +————-+————————————————–+—+—+—+

      | Function ID | | R | D | E |

      | [Hex] | | | | |

      +————-+————————————————–+—+—+—+

      | 40 | CURRENT PATTERN DATA DUMP | o | | |

      | 58 | CURRENT SONG DATA DUMP | o | | |

      | 4C | ALL PATTERN DATA DUMP | o | o | |

      | 57 | ALL SONG DATA DUMP | o | o | |

      | 50 | ALL DATA(GLOBAL,PATTERN,SONG) DUMP | o | o | |

      | 26 | DATA FORMAT ERROR | | | o |

      | 23 | DATA LOAD COMPLETED | | | o |

      | 24 | DATA LOAD ERROR | | | o |

      | 21 | WRITE COMPLETED | | | o |

      | 22 | WRITE ERROR | | | o |

      +————-+————————————————–+—+—+—+

      Transmitted when

      R : Request message is received
      D : Data dump from MIDI dump page

      (Doesn’t respond to “MIDI Filter E(Exclusive Enable)” parameter)
      E : Exclusive message is received

      2.RECOGNIZED RECEIVE DATA

      2-1 CHANNEL MESSAGES

      +——–+———+——-+————————————–+

      | Status | Second | Third | Description |

      | [Hex] | [H] [D] | [H] | |

      +——–+———+——-+————————————–+

      | 8n | kk (kk) | vv | Note Off vv=0~127 |

      | 9n | kk (kk) | 00 | Note Off |

      | 9n | kk (kk) | vv | Note On vv=1~127 |

      | Bn | 00 (00) | mm | Program Bank Select(MSB) [NOTE1]|

      | Bn | 06 (06) | dd | Data Entry(MSB) [TABLE1]|

      | Bn | 20 (32) | bb | Program Bank Select(LSB) [NOTE1]|

      | Bn | 62 (98) | nl | NRPN LSB [TABLE1]|

      | Bn | 63 (99) | nm | NRPN MSB [TABLE1]|

      | Bn | 7A(122) | 00/7F | Local Control Off/On * |

      | Bn | 7B(123) | 00 | All Note Off |

      | Bn | 7C(124) | 00 | Omni Mode Off * |

      | Bn | 7D(125) | 00 | Omni Mode On * |

      | Cn | pp (pp) | — | Program Change [NOTE1]|

      +——–+———+——-+————————————–+

      n : MIDI Channel No.(0~15)

      * : Receive as All Note Off.

      2-2 SYSTEM REALTIME MESSAGES

      +———–+———————————————–+

      | Status[H] | Description |

      +———–+———————————————–+

      | F8 | Timing Clock * |

      | FA | Start * |

      | FB | Continue * |

      | FC | Stop * |

      | FE | Active Sensing |

      +———–+———————————————–+

      * :This message is recognized when the “Clock” is
      set to “EXT”.

      2-3 UNIVERSAL SYSTEM EXCLUSIVE MESSAGE (NON REALTIME)
      DEVICE INQUIRY MESSAGE REQUEST

      +———+———————-+

      | Byte[H] | Description |

      +———+———————-+

      | F0 | Exclusive Status |

      | 7E | Non Realtime Message |

      | 0c | MIDI Channel |

      | 06 | Inquiry Message |

      | 01 | Inquiry Request |

      | F7 | End of Exclusive |

      +———+———————-+

      2-4 SYSTEM EXCLUSIVE MESSAGE

      +————-+———————————————–+—+—+

      | Function ID | Function | D | A |

      | [Hex] | | | |

      +————-+———————————————–+—+—+

      | 10 | CURRENT PATTERN DATA DUMP REQUEST | | o |

      | 1C | ALL PATTERN DATA DUMP REQUEST | | o |

      | 0A | CURRENT SONG DATA DUMP REQUEST | | o |

      | 0B | ALL SONG DATA DUMP REQUEST | | o |

      | 0F | ALL DATA(GLOBAL,PATTERN,SONG) DUMP REQUEST | | o |

      | 11 | PATTERN WRITE REQUEST | | o |

      | 1A | SONG WRITE REQUEST | | o |

      | 40 | CURRENT PATTERN DATA DUMP | o | o |

      | 4C | ALL PATTERN DATA DUMP | o | o |

      | 58 | CURRENT SONG DATA DUMP | o | o |

      | 57 | ALL SONG DATA DUMP | o | o |

      | 50 | ALL DATA(GLOBAL,PATTERN,SONG) DUMP | o | o |

      +————-+———————————————–+—+—+

      Received when in

      D : in MIDI Dump page

      (Does not respond to “MIDI Filter E(Exclusive Enable)” parameter
      on MIDI Dump page)

      A :any other mode

      Received when Sequencer is not running.

      MIDI EXCLUSIVE FORMAT (R:Receive, T:Transmit)

      (1) CURRENT PATTERN DATA DUMP REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0001 0000 (10) | CURRENT PATTERN DATA DUMP REQUEST 10H |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, the CURRENT PATTERN DATA DUMP(Function:40h)
      message will be transmitted.

      (2) ALL PATTERN DATA DUMP REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0001 1100 (1C) | ALL PATTERN DATA DUMP REQUEST 1CH |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, the ALL PATTERN DATA DUMP(Function:4Ch)
      message will be transmitted.

      (3) CURRENT SONG DATA DUMP REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0000 1010 (0A) | CURRENT SONG DATA DUMP REQUEST 0AH |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, the CURRENT SONG DATA DUMP
      (Function:58h) message will be transmitted.

      (4) ALL SONG DATA DUMP REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0000 1011 (0B) | ALL SONG DATA DUMP REQUEST 0BH |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, the ALL SONG DATA DUMP(Function:57h)
      message will be transmitted.

      (5) ALL DATA DUMP REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0000 1111 (0F) | ALL DATA DUMP REQUEST 0FH |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, the ALL DATA DUMP(Function:50h) message
      will be transmitted.

      (6) PATTERN WRITE REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0001 0001 (11) | PATTERN WRITE REQUEST 11H |

      | 0000 000b (0b) | Destination Program Number(0:A01~B64,1:C01~D64) |

      | 0ppp pppp (pp) | Destination Program Number |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a WRITE COMPLETED(Function:21h) message
      or a WRITE ERROR(Function:22h) message will be transmitted.

      (7) SONG WRITE REQUEST R

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0001 1010 (1A) | SONG WRITE REQUEST 1AH |

      | 0000 ssss (0s) | Destination Song No(0~15) |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a WRITE COMPLETED(Function:21h) message
      or a WRITE ERROR(Function:22h) message will be transmitted.

      (8) CURRENT PATTERN DATA DUMP R/T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0100 0000 (40) | CURRENT PATTERN DATA DUMP 40H |

      | 0ddd dddd (dd) | Data [NOTE2][TABLE2]|

      | : | : |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a DATA LOAD COMPLETED(Function:23h)
      message or a DATA LOAD ERROR(Function:24h) message will be transmitted.

      (9) ALL PATTERN DATA DUMP R/T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0100 1100 (4C) | ALL PATTERN DATA DUMP 4CH |

      | 0ddd dddd (dd) | Data [NOTE2][TABLE2]|

      | : | : |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a DATA LOAD COMPLETED(Function:23h)
      message or a DATA LOAD ERROR(Function:24h) message will be transmitted.

      (10) CURRENT SONG DATA DUMP R/T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0101 1000 (58) | CURRENT SONG DATA DUMP 58H |

      | 0ddd dddd (dd) | Data [NOTE2][TABLE8]|

      | : | : |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a DATA LOAD COMPLETED(Function:23h)
      message or a DATA LOAD ERROR(Function:24h) message will be transmitted.

      (11) ALL SONG DATA DUMP R/T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0101 0111 (57) | ALL SONG DATA DUMP 57H |

      | 0ddd dddd (dd) | Data [NOTE2][TABLE9]|

      | : | : |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a DATA LOAD COMPLETED(Function:23h)
      message or a DATA LOAD ERROR(Function:24h) message will be transmitted.

      (12) ALL DATA DUMP R/T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0101 0000 (50) | ALL DATA DUMP 50H |

      | 0ddd dddd (dd) | Data [NOTE2][TABLE12]|

      | : | : |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      When this message is received, a DATA LOAD COMPLETED(Function:23h)
      message or a DATA LOAD ERROR(Function:24h) message will be transmitted.

      (13) DATA FORMAT ERROR T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0010 0110 (26) | DATA FORMAT ERROR 26H |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      (14) DATA LOAD COMPLETED T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0010 0011 (23) | DATA LOAD COMPLETED 23H |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      (15) DATA LOAD ERROR T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0010 0100 (24) | DATA LOAD ERROR 24H |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      (16) WRITE COMPLETED T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0010 0001 (21) | WRITE COMPLETED 21H |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      (17) WRITE ERROR T

      +—————-+————————————————–+

      | Byte | Description |

      +—————-+————————————————–+

      | F0,42,3c,51 | EXCLUSIVE HEADER |

      | 0010 0010 (22) | WRITE ERROR 22H |

      | 1111 0111 (F7) | EOX |

      +—————-+————————————————–+

      NOTE1 : Pattern number

      mm,bb,pp = 00,00,00~3F : A01~64

      00,00,40~7F : B01~64

      00,01,00~3F : C01~64

      00,01,40~7F : D01~64

      NOTE2:The dump data conversion
      DATA ( 1set = 8bit x 7Byte )

      b7 ~ b0 b7 ~ b0 b7 ~~ b0 b7 ~ b0

      +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-~~-+-+-+ +-+-+-+-+-+-+-+-+

      | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

      +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-~~-+-+-+ +-+-+-+-+-+-+-+-+

      7n+0 7n+1 7n+2 ~~ 7n+5 7n+6

      MIDI DATA ( 1set = 7bit x 8Byte )

      b7b7b7b7b7b7b7 b6 ~ b0 b6 ~~ b0 b6 ~ b0

      +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-~~-+-+-+ +-+-+-+-+-+-+-+-+

      |0| | | | | | | | |0| | | | | | | | |0| | | | | |0| | | | | | | |

      +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-~~-+-+-+ +-+-+-+-+-+-+-+-+
      7n+6,5,4,3,2,1,0 7n+0 7n+1 ~~ 7n+5 7n+6

      TABLE1 : NON REGISTERED PARAMETER NUMBER (NRPN)

      MOTION SEQUENCE/SONG EVENT DESTINATION PARAMETER NUMBER

      +———+—————————–+———————————+—-+

      | nm nl | Parameter | dd (Data Entry(MSB) Value) | ds |

      | [H] [H] | | (Decimal) | [H]|

      +———+—————————–+———————————+—-+

      | 02 00 | Synth1 Low Boost | 0~127 | 01 |

      | 02 01 | Synth1 Pan | 0~127 | 02 |

      | 02 02 | Synth1 Pitch | 0~127 | 04 |

      | 02 03 | Synth1 Wave | 0~63/64~127 : Sin/Tri | 05 |

      | 02 04 | Synth1 Mod Type | 0~5 : Saw/Squ/Tri/S&H/Noise/Env | 06 |

      | 02 05 | Synth1 Mod Speed | 0~127 | 07 |

      | 02 06 | Synth1 Mod Depth | 0~127 | 08 |

      | 02 07 | Synth1 Level | 0~127 | 00 |

      | 02 08 | Synth1 Decay | 0~127 | 03 |

      | 02 09 | Synth1 Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 0A | Synth2 Low Boost | 0~127 | 0B |

      | 02 0B | Synth2 Pan | 0~127 | 0C |

      | 02 0C | Synth2 Pitch | 0~127 | 0E |

      | 02 0D | Synth2 Wave | 0~63/64~127 : Sin/Tri | 0F |

      | 02 0E | Synth2 Mod Type | 0~5 : Saw/Squ/Tri/S&H/Noise/Env | 10 |

      | 02 0F | Synth2 Mod Speed | 0~127 | 11 |

      | 02 10 | Synth2 Mod Depth | 0~127 | 12 |

      | 02 11 | Synth2 Level | 0~127 | 0A |

      | 02 12 | Synth2 Decay | 0~127 | 0D |

      | 02 13 | Synth2 Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 14 | Synth3 Low Boost | 0~127 | 15 |

      | 02 15 | Synth3 Pan | 0~127 | 16 |

      | 02 16 | Synth3 Pitch | 0~127 | 18 |

      | 02 17 | Synth3 Wave | 0~63/64~127 : Sin/Tri | 19 |

      | 02 18 | Synth3 Mod Type | 0~5 : Saw/Squ/Tri/S&H/Noise/Env | 1A |

      | 02 19 | Synth3 Mod Speed | 0~127 | 1B |

      | 02 1A | Synth3 Mod Depth | 0~127 | 1C |

      | 02 1B | Synth3 Level | 0~127 | 14 |

      | 02 1C | Synth3 Decay | 0~127 | 17 |

      | 02 1D | Synth3 Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 1E | Synth4 Low Boost | 0~127 | 1F |

      | 02 1F | Synth4 Pan | 0~127 | 20 |

      | 02 20 | Synth4 Pitch | 0~127 | 22 |

      | 02 21 | Synth4 Wave | 0~63/64~127 : Sin/Tri | 23 |

      | 02 22 | Synth4 Mod Type | 0~5 : Saw/Squ/Tri/S&H/Noise/Env | 24 |

      | 02 23 | Synth4 Mod Speed | 0~127 | 25 |

      | 02 24 | Synth4 Mod Depth | 0~127 | 26 |

      | 02 25 | Synth4 Level | 0~127 | 1E |

      | 02 26 | Synth4 Decay | 0~127 | 21 |

      | 02 27 | Synth4 Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 28 | Close Hi-Hat Low Boost | 0~127 | 29 |

      | 02 29 | Close Hi-Hat Pan | 0~127 | 2A |

      | 02 2A | Close Hi-Hat Pitch | 0~127 | 2C |

      | 02 2F | Close Hi-Hat Level | 0~127 | 28 |

      | 02 30 | Close Hi-Hat Decay | 0~127 | 2B |

      | 02 31 | Close Hi-Hat Motion Seq Type| 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 32 | Open Hi-Hat Low Boost | 0~127 | 33 |

      | 02 33 | Open Hi-Hat Pan | 0~127 | 34 |

      | 02 34 | Open Hi-Hat Pitch | 0~127 | 36 |

      | 02 39 | Open Hi-Hat Level | 0~127 | 32 |

      | 02 3A | Open Hi-Hat Decay | 0~127 | 35 |

      | 02 3B | Open Hi-Hat Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 3C | Crash Low Boost | 0~127 | 3D |

      | 02 3D | Crash Pan | 0~127 | 3E |

      | 02 3E | Crash Pitch | 0~127 | 40 |

      | 02 43 | Crash Level | 0~127 | 3C |

      | 02 44 | Crash Decay | 0~127 | 3F |

      | 02 45 | Crash Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 46 | H.Clap Low Boost | 0~127 | 47 |

      | 02 47 | H.Clap Pan | 0~127 | 48 |

      | 02 48 | H.Clap Pitch | 0~127 | 4A |

      | 02 4D | H.Clap Level | 0~127 | 46 |

      | 02 4E | H.Clap Decay | 0~127 | 49 |

      | 02 4F | H.Clap Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 50 | Audio In 1 Low Boost | 0~127 | 51 |

      | 02 51 | Audio In 1 Pan | 0~127 | 52 |

      | 02 57 | Audio In 1 Level | 0~127 | 50 |

      | 02 58 | Audio In 1 Decay | 0~63 | 53 |

      | 02 59 | Audio In 1 Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 5A | Audio In 2 Low Boost | 0~127 | 5B |

      | 02 5B | Audio In 2 Pan | 0~127 | 5C |

      | 02 61 | Audio In 2 Level | 0~127 | 5A |

      | 02 62 | Audio In 2 Decay | 0~63 | 5D |

      | 02 63 | Audio In 2 Motion Seq Type | 0~2 : Off/Smooth/TrigHold | |

      | | | | |

      | 02 64 | Delay Depth | 0~127 | 64 |

      | 02 65 | Delay Time | 0~127 | 65 |

      | 02 66 | Ring (Synth1 & Synth2) | 0~63/64~127 : Off/On | 66 |

      | 02 67 | Ring (Synth4 & Audio In) | 0~63/64~127 : Off/On | 67 |

      | 02 68 | Input Gain 1 | 0~100 | 68 |

      | 02 69 | Input Gain 2 | 0~100 | 69 |

      | 02 6A | Accent Level | 0~127 | 6A |

      | 02 6B | Delay Type | 0~2 : Off/MotionSeq/TempoDelay | 6B |

      | 02 6C | Mute 1 | Bit6 : 0/1=Mute/Solo | 6D |

      | | | Bit3~0(S4~S1)=1 : Mute * | |

      | 02 6D | Mute 2 | Bit6 : 0/1=Mute/Solo | 6E |

      | | | Bit5~0(A2,A1,P4~P1)=1 : Mute * | |

      | | Tempo | (song event only) | 6C |

      +———+—————————–+———————————+—-+

      * S4~S1 : Synth4 ~ Synth1
      A2,A1 : Audio In2,1

      P4 : H.Clap
      P3 : Crash

      P2 : Open Hi-Hat
      P1 : Close Hi-Hat

      TABLE2 : PATTERN PARAMETERS

      +———+—————————–+———————————+

      | 0 | Tempo (MSB) | 20~300 |

      | 1 | Tempo (LSB) | |

      +———+—————————–+———————————+

      | b5,4 | Scale/Beat | 0~2 :16th note,32nd note,triplet|

      | 2 —–+—————————–+———————————+

      | b1,0 | Pattern Length | 0~3 : 1~4 |

      +———+—————————–+———————————+

      | b7~2 | Swing | 0~25 : 50~75% |

      | —–+—————————–+———————————+

      | 3 b1 | Ring (Synth4 & Audio In) | 0/1 : Off/On |

      | —–+—————————–+———————————+

      | b0 | Ring (Synth1 & Synth2) | 0/1 : Off/On |

      +———+—————————–+———————————+

      | 4 | Delay Depth | 0~127 |

      +———+—————————–+———————————+

      | 5 | Delay Time | 0~127 |

      +———+—————————–+———————————+

      | 6 | Delay Mseq Type | 0~2 : Off/Smooth/TrigHold |

      +———+—————————–+———————————+

      | 7 | Accent Level | 0~127 |

      +———+—————————–+———————————+

      | Synth Parameters |

      +———+—————————–+———————————+

      | 8~15 | Synth 1 Parameters | (8bytes) [TABLE3]|

      +———+—————————–+———————————+

      | 16~23 | Synth 2 Parameters | (8bytes) [TABLE3]|

      +———+—————————–+———————————+

      | 24~31 | Synth 3 Parameters | (8bytes) [TABLE3]|

      +———+—————————–+———————————+

      | 32~39 | Synth 4 Parameters | (8bytes) [TABLE3]|

      +———+—————————–+———————————+

      | PCM Parameters |

      +———+—————————–+———————————+

      | 40~44 | Close Hi-Hat Paramters | (5bytes) [TABLE4]|

      +———+—————————–+———————————+

      | 45~49 | Open Hi-Hat Paramters | (5bytes) [TABLE4]|

      +———+—————————–+———————————+

      | 50~54 | Crash Parameters | (5bytes) [TABLE4]|

      +———+—————————–+———————————+

      | 55~59 | H.Clap Parameters | (5bytes) [TABLE4]|

      +———+—————————–+———————————+

      | Audio In Parameters |

      +———+—————————–+———————————+

      | 60~63 | Audio In 1 Parameters | (4bytes) [TABLE5]|

      +———+—————————–+———————————+

      | 64~67 | Audio In 2 Parameters | (4bytes) [TABLE5]|

      +———+—————————–+———————————+

      | Step Sequence Data (10 Parts) |

      +———+—————————–+———————————+

      | 68~75 | Synth 1 | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 76~83 | Synth 2 | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 84~91 | Synth 3 | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 92~99 | Syntrh4 | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 100~107 | Close Hi-Hat | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 108~115 | Open Hi-Hat | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 116~123 | Crash | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 124~131 | H.Clap | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 132~139 | Audio In 1 | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | 140~147 | Audio In 2 | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | Accent Step Data |

      +———+—————————–+———————————+

      | 148~155 | Accent | (64bits) [TABLE6]|

      +———+—————————–+———————————+

      | Motion Sequence Data (10 Parts) |

      +———+—————————–+———————————+

      | 156~221 | Synth 1 | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 222~287 | Synth 2 | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 288~353 | Synth 3 | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 354~419 | Synth 4 | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 420~485 | Close Hi-Hat | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 486~551 | Open Hi-Hat | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 552~617 | Crash | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 618~683 | H.Clap | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 684~749 | Audio In 1 | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | 750~815 | Audio In 2 | (66bytes) [TABLE7]|

      +———+—————————–+———————————+

      | Delay Motion Sequence Data |

      +———+—————————–+———————————+

      | 816 | Delay Depth (Step1) | |

      | : | : | 0~127 (MSB=”1″ : Off) |

      | 879 | Delay Depth (Step64) | |

      +———+—————————–+———————————+

      | 880 | Delay Time (Step1) | |

      | : | : | 0~127 (MSB=”1″ : Off) |

      | 943 | Delay Time (Step64) | |

      +———+—————————–+———————————+

      TABLE3 : PERCUSSION SYNTHESIZER PART PARARMETERS

      +———+—————————–+———————————+

      | 0 | Level | 0~127 |

      +———+—————————–+———————————+

      | 1 | Low Boost | 0~127 |

      +———+—————————–+———————————+

      | 2 | Panpot | 0~127(63=center) |

      +———+—————————–+———————————+

      | 3 | Decay | 0~127 |

      +———+—————————–+———————————+

      | 4 | Pitch | 0~127 |

      +———+—————————–+———————————+

      | b7 | Osc Wave | 0/1 : Sin/Tri |

      | 5 —–+—————————–+———————————+

      | b2~0 | Osc Mod Type | 0~5 : Saw/Squ/Tri/S&H/Noise/Env |

      +———+—————————–+———————————+

      | 6 | Osc Mod Speed | 0~127 |

      +———+—————————–+———————————+

      | 7 | Osc Mod Type | 0~127 |

      +———+—————————–+———————————+

      TABLE4 : PCM PART PARAMETERS

      +———+—————————–+———————————+

      | 0 | Level | 0~127 |

      +———+—————————–+———————————+

      | 1 | Low Boost | 0~127 |

      +———+—————————–+———————————+

      | 2 | Panpot | 0~127 (63=center) |

      +———+—————————–+———————————+

      | 3 | Decay | 0~127 |

      +———+—————————–+———————————+

      | 4 | Pitch | 0~127 |

      +———+—————————–+———————————+

      TABLE5 : AUDIO IN PARAMETERS

      +———+—————————–+———————————+

      | 0 | Level | 0~127 |

      +———+—————————–+———————————+

      | 1 | Low Boost | 0~127 |

      +———+—————————–+———————————+

      | 2 | Panpot | 0~127 (63=center) |

      +———+—————————–+———————————+

      | 3 | Decay | 0~63 |

      +———+—————————–+———————————+

      TABLE6 : STEP SEQUENCE DATA/ACCENT STEP DATA

      offset type value

      ;————————————————

      0 Bit0~7 Step1 ~8 :0/1 =Off(Soft)/On(Hard)

      1 Bit0~7 Step9 ~16 :0/1 =Off(Soft)/On(Hard)

      2 Bit0~7 Step17 ~24 :0/1 =Off(Soft)/On(Hard)

      3 Bit0~7 Step25 ~32 :0/1 =Off(Soft)/On(Hard)

      4 Bit0~7 Step33 ~40 :0/1 =Off(Soft)/On(Hard)

      5 Bit0~7 Step41 ~48 :0/1 =Off(Soft)/On(Hard)

      6 Bit0~7 Step49 ~56 :0/1 =Off(Soft)/On(Hard)

      7 Bit0~7 Step57 ~64 :0/1 =Off(Soft)/On(Hard)

      TABLE7 : MOTION SEQUENCE DATA

      +———+—————————–+———————————+

      | 0 | value (step1) | |

      | : | : | 0~127 (MSB=”1″ : Off) |

      | 63 | value (step64) | |

      +———+—————————–+———————————+

      | 64 | Type | 0~2 : Off/Smooth/TrigHold |

      +———+—————————–+———————————+

      | 65 | Destination (ds) | [TABLE1]|

      +———+—————————–+———————————+

      TABLE8 : CURRENT SONG PARAMETER

      +———+—————————–+———————————+

      | 0~517 | Song Parameters | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      | Song Event Data |

      +———+—————————–+———————————+

      | 518~521 | event data (1st) | [TABLE11]|

      | 522~525 | event data (2nd) | |

      | : | | |

      | 143314 | event data (35700th(max)) | |

      | ~143317 | | |

      | (max)| | |

      +———+—————————–+———————————+

      TABLE9 : ALL SONG DATA

      +———+—————————–+———————————+

      | 0~ 517| Song 1 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      | 518~1035| Song 2 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |1036~1553| Song 3 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |1554~2071| Song 4 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |2072~2589| Song 5 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |2590~3107| Song 6 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |3108~3625| Song 7 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |3626~4143| Song 8 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |4144~4661| Song 9 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |4662~5179| Song 10 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |5180~5697| Song 11 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |5698~6215| Song 12 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |6216~6733| Song 13 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |6734~7251| Song 14 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |7252~7769| Song 15 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      |7770~8287| Song 16 parameter | (518bytes) [TABLE10]|

      +———+—————————–+———————————+

      | Song Event Data |

      | (Event Size is total number of event of All Songs.) |

      +———+—————————–+———————————+

      |8288~8291| event data (1st) | [TABLE11]|

      |8292~8295| event data (2nd) | |

      | : | | |

      |151084 | event data (35700th(max)) | |

      | ~151087| | |

      | (max)| | |

      +———+—————————–+———————————+

      TABLE10 : SONG PARAMETERS

      +———+—————————–+———————————+

      | 0 | Tempo (MSB) | 20~300 |

      | 1 | Tempo (LSB) | |

      +———+—————————–+———————————+

      | 2 | step end data | 0~255=1stPosition~256thPosition |

      +———+—————————–+———————————+

      | 3 | (dummy) | |

      +———+—————————–+———————————+

      | 4 | number of event (MSB) | 0~35700 |

      | 5 | number of event (LSB) | |

      +———+—————————–+———————————+

      | Position Data |

      +———+—————————–+———————————+

      | 6 | Pattern Number (1st) | |

      | : | : | 0~255 = A01 ~ D64 |

      | 261 | Pattern Number (256th) | |

      +———+—————————–+———————————+

      | 262 | dummy | |

      | : | : | |

      | 516 | dummy | |

      +———+—————————–+———————————+

      TABLE11 : SONG EVENT DATA

      +———+—————————–+———————————+

      | 0 | Position Number | 0~255 |

      +———+—————————–+———————————+

      | b7 | Enable Data | 0/1 : Enable/Disable |

      | —–+—————————–+———————————|

      | 1 b5,4 | Measure Number | 0~3 : 1~4 |

      | —–+—————————–+———————————|

      | b3~0 | Step Number | 0~15 :1~16 |

      | —–+—————————–+———————————+

      | b6 | if “Control/Note” is Control |

      | | —————————-+———————————+

      | | if “Destination” is Tempo |

      | | ————————–+———————————+

      | | Tempo value (b8) | *2 |

      | | ————————–+———————————+

      | | if “Destination” is not Tempo |

      | | ————————–+———————————+

      | | not use | |

      | | —————————-+———————————+

      | | if “Control/Note” is Note |

      | | —————————-+———————————+

      | | not use | |

      +———+—————————–+———————————+

      | 2 b7 | Control/Note | 0/1 : Control / Note |

      | ——-+—————————–+———————————+

      | if “Control/Note” is Control |

      | —–+—————————–+———————————+

      | b6~0 | Destination (ds) | [TABLE1]|

      | ——-+—————————–+———————————+

      | if “Control/Note” is Note |

      | —–+—————————–+———————————+

      | b6~4 | not used | |

      | —–+—————————–+———————————+

      | b3~0 | Part Number | 0~9 *1 |

      +———+—————————–+———————————+

      | 3 | if “Control/Note” is Control |

      | | —————————-+———————————+

      | | if “Destination” is Tempo |

      | | —————————-+———————————+

      | | Tempo Value (b7~0) | 20~300(with Tempo value b8 *2) |

      | | —————————-+———————————+

      | | if “Destination” is not Tempo |

      | | —————————-+———————————+

      | | Value | 0~127 |

      | | —————————-+———————————+

      | | if “Control/Note” is Note |

      | | —————————-+———————————+

      | | not used | |

      +———+—————————–+———————————+

      *1 0~3 : Synth1~4

      4 : Close Hi-Hat

      5 : Open Hi-Hat

      6 : Crash

      7 : H.Clap

      8,9 : Audio In2,1

      TABLE12 : ALL DATA

      +———+—————————–+———————————+

      | 0~127 | Global Parameters | [TABLE13]|

      +———+—————————–+———————————+

      | 128 | All Pattern Parameters | [TABLE2]|

      | ~241791| | |

      +———+—————————–+———————————+

      |241792 | All Song Parameters | [TABLE9]|

      | ~392879| | |

      | (max)| | |

      +———+—————————–+———————————+

      TABLE13 : GLOBAL PARAMETERS

      +———+—————————–+———————————+

      | 0 | dummy | |

      +———+—————————–+———————————+

      | 1 | Input Gain 1 | 0~100 |

      +———+—————————–+———————————+

      | 2 | Metronome | 0~4 : Off/r-0/r-1/r-2/On |

      +———+—————————–+———————————+

      | 3 | dummy | |

      +———+—————————–+———————————+

      | 4 | Synth 1 Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 5 | Synth 2 Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 6 | Synth 3 Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 7 | Synth 4 Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 8 | Close Hi-Hat Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 9 | Open Hi-Hat Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 10 | Crash Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 11 | H.Clap Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 12 | Audio In 1 Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 13 | Audio In 2 Note Number | 0~127 : C-1~G9 |

      +———+—————————–+———————————+

      | 14 | Intput Gain 2 | 0~100 |

      +———+—————————–+———————————+

      | 15 | Clock | 0/1 : Int/Ext |

      +———+—————————–+———————————+

      | 16~63 | dummy | |

      +———+—————————–+———————————+

      | 64~127 | Pattern Set Parameters | 0~255 : A01~D64 |

      +———+—————————–+———————————+

      • This topic was modified 3 years, 6 months ago by bryan321.
      • This topic was modified 3 years, 6 months ago by bryan321.
      • This topic was modified 3 years, 6 months ago by bryan321.
      Attachments:
      You must be logged in to view attached files.
      #119658
      dnaldoog
      Participant
        • Topics: 4
        • Replies: 480
        • Total: 484
        • ★★

        Hi there Jsh,

        See here for a way of doing this .

        You can also convert midi:getData() to a lua table using:

        
        t={}
        midi:getData():toLuaTable(t)
        

        You could then modify the contents of the table and repack as a MemoryBlock and resend to the Synth: … or send the table as you did!

        
        m=MemoryBlock()
        m:createFromTable(t)
        panel:sendMidiMessageNow(CtrlrMidiMessage(m:toHexString(1)))
        

        or

        
        panel:sendMidiMessageNow(CtrlrMidiMessage(t))
        

        The other option would be to work solely with MemoryBlocks:

        Regards,

        ?

        • This reply was modified 3 years, 8 months ago by dnaldoog. Reason: replied to post in future but didn't create new post
        #119637
        dnaldoog
        Participant
          • Topics: 4
          • Replies: 480
          • Total: 484
          • ★★

          You’ll be getting into lua territory there for sure. To disable a control on the interface, you would need a method like:

          panel:getComponent("pulse_width_control"):setEnabled(false) or setEnabled(true)

          Changing a single uiSlider or uiFixedSlider’s MULTI message to NRPN and back again is possible, but a bit complex. Instead you could create to different buttons in different layers that sit in the same position, but even that is a little complex.

          Goodweather’s DS2 panel is a popular one for learning from, but it’s pretty complex.
          My JD-990 panel uses layers, so that is a good reference for learning how to do it that way, or maybe start with some simpler panels first?

          When I first got started, I studied this panel: ctrlr.org/akai-sg01v-panel/

          ?

          #119636
          An0n3mau5
          Participant
            • Topics: 1
            • Replies: 18
            • Total: 19

            Thanks for the encouragement dnaldoog. I’m slowly but steadily making progress on this strange beast haha.

            I’m now beginning to look at how I would grey out/deactivate/hide some knobs that would only be turned on ‘IF’. To be specific the pulse width controls should only be lit up/accessible when pulse width is selected as the oscillator type. I’m assuming I would have to use lua in order to do this. Do you know of any good threads or panels where I could begin to understand how to go about doing that?

            I also would like to achieve something similar with the LFO control in that when set to sync rather than speed would switch from sending CC 0 – 127 to sending nrpn with set values (named). Maybe this could be done without lua but I imagine I’m going to have to get my feet wet here and start digging in.

            Wish me luck :s

            #119511
            An0n3mau5
            Participant
              • Topics: 1
              • Replies: 18
              • Total: 19

              Thanks Possemo for another informative response and for the link. I had also been using that link and have mapped already all of the CC’s listed there and some that weren’t listed (the NRPN’s listed above) for which I had to use the midi monitor (and a fair deal of trial and error till I finally clicked).

              I think it’s going to take me quite a while to digest and interpret your latest response and then figure out how to extract the remaining parameters, which I know can be done as they are listed on the Midi Quest editor, and also the Coffeeshopped one.

              Anyway, thanks again and I welcome any other advice or thoughts you or anyone else may have otherwise.

              Cheers!

              #119499
              Possemo
              Participant
                • Topics: 14
                • Replies: 638
                • Total: 652
                • ★★★

                NRPN 99/98 is not coarse/fine setting but msb and lsb part of ONE value – the controller number. You have to understand that msb and lsb are two parts of one value broken into two bit-pieces. E.g. 11111110000000 is a 14-Bit value. You can break this into msb (in this case 1111111) and lsb (in this case 0000000).

                CC,ByteValue,MSB7bitValue,99,-2
                CC,ByteValue,LSB7bitValue,98,-2
                CC,ByteValue,LSB7bitValue,6,-1

                This is a NRPN “multi” message in Ctrlr. -2 corresponds to the MIDI controller number. It can be as big as 16363 (a 14-bit value) broken into two 7-bit nibbles.

                Sysex does work similar. Use MS and LS for 7-bit nibbles and ms and ls for 4-bit nibbles. So a sysex message could look like this:

                F0 42 3g 58 B0 63 04 B0 62 08 B0 ms ls F7

                #119475
                An0n3mau5
                Participant
                  • Topics: 1
                  • Replies: 18
                  • Total: 19

                  I’ve no idea what is going on as my reply to you samoht is not showing up but the thread is showing in my control panel as having 4 posts (prior to this one) and “This topic has 3 replies, 2 voices, and was last updated 3 hours, 31 minutes ago by An0n3mau5.” . . . So I will assume there is an error that can hopefully be dealt with by admin or something.

                  In the meantime. I have also started simultaneously working on a panel for the MicroKorg and I just don’t understand how the heck to add values to the MSB/LSB 99/98 Coarse/Fine. I have all of my NRPN controls working fine on my BS2 where it gives me the NRPN number and I just change it on the midi controller number slider, but what about when I need to change the 98 number also?

                  If I change the -2 value at the end it only seems to work for the MSB. . .

                  Can someone explain how to accomplish this using the added NRPN preset?

                  I’ve tried many things and when I try send direct CC values it appears as it should in the midi monitor but does not work and if I try to send the sysex command (as far as I can understand it (F0 42 3g 58 B0 63 04 B0 62 08 B0 06 xx F7)) it only sends the LSB (98).

                  Any clues or hints would be much appreciated. Cheers!

                  • This reply was modified 3 years, 8 months ago by An0n3mau5.
                  #119145
                  megasis
                  Participant
                    • Topics: 1
                    • Replies: 4
                    • Total: 5

                    Thanks all for clarify a lot for me, now I’m thinking on using SysEx to explore more parameters in my M-VS1 that are not available using CC, RPN or NRPN.
                    A week ago, when I discover ctrlr, I found references to a M-VS1 panel in the Forums, somebody was working on it 7 years ago and was about to release it…, but that was the last message.
                    M-VS1 panel is listed on the deprecated panels, but the the download link doesn’t work, is it save somewhere else?

                    I guess I’ll have to start from scratch, now that I know the basics, the next step is figuring out how to Load a patch from the temporary memory in M-VS1 to set Modulators, so I can change them and send back to the module.
                    Yes, I know there is a Dump Block (or something like that), but… once I have the Block, how are the parameters assigned to their specific value in the modulators? a Lua script to decode byte by byte of the dump block and put a value on each modulator? or instead of using dump block, use a lua script sending sysEx requests, one by one for each Modulator value?

                    I have download panels that apparently do that Load/Change/Save from the Synth, so I could try revers engineering, but I would like to have a more clear understanding of the workflow inside ctrlr panel.

                    Any recommendation?

                    #119144
                    Possemo
                    Participant
                      • Topics: 14
                      • Replies: 638
                      • Total: 652
                      • ★★★

                      My SuperJX-panel is using NRPN on more than 160 parameters and is working without probs. I guess it depends on how well it is implemented in the firmware of the synth. The SuperJX firmware v4 is a recent update/fix by Fred Vecoven, a skilled firmware specialist.

                      In the case of the SuperJX the amount of data is slightly smaller on NRPN even when always sending the CtrlrNr:

                      NRPN 9 Bytes:
                      b0 63 00
                      b0 62 00
                      b0 06 00

                      Sysex 10 Bytes:
                      F0 41 39 00 24 20 01 0B 00 F7

                      Well, it shouldn’t be that big of an advantage.

                      #119140
                      dnaldoog
                      Participant
                        • Topics: 4
                        • Replies: 480
                        • Total: 484
                        • ★★

                        @possemo I agree – that was actually my first and last foray into the world of NRPN. When it corrupted the PLG150-AN card I thought to leave well alone and go back to sysex. There seem to be many warnings about it even in manuals and usually sysex or CC is offered to do the same thing anyway. I wonder if the OP megasis will find this. Will be interesting to hear if it all works flawlessly with the m-VS1.



                        @megasis
                        I tried replying to your last question, but no matter what I do, it won’t let me post – so I am adding it on to this post 7/13/2020


                        Hi megasis,

                        I would find out from the manual which control each byte is to be assigned to in the dump message and make a table of your Ctrlr modulators uiSliders variable names etc in that exact order:

                        myList={
                        “VibratoRate”,
                        “VibratoDepth”,
                        “Vibreto Delay”, …
                        }

                        You would then in the Ctrlr program create a function that reacts to incoming MIDI LuaPanelMidiReceived eg myMidiReceived()

                        When you perform a patch dump from the machine it will be a certain size. You monitor for incoming messages of that size and then run code on it triggering the function only when the packet size is the appropriate one; I would pass the MIDI memory block as a parameter to that function updateInterface() and optionally the size of the message to avoid recalculating it.

                        
                        myMidiReceived = function(--[[ CtrlrMidiMessage --]] midi)
                        
                        local s = midi:getSize()
                        ---------------------------------------------------------
                        if s ==  129 then -- update controls 129 = size of dump
                        
                            updateInterface(midi,s)
                        end
                        
                        end
                        

                        in the updateInterface() function you would loop through the table assigning MIDI message bytes values to each control.

                        Usually there will be an offset of about 9 bytes before you get to the data.

                        The waveforms, of which there are 255. might be represented by two of the bytes in the message MSB and LSB, so you’d have to parse that and then maybe update a uiLabel with the name referenced from a table of waveform names.

                        Loop though each byte with the table.

                        For example

                        
                        local offset =9
                        for i,v in ipairs (myList) do
                        panel:getModulatorByname(v):setValue(midi:getData():getByte(i+offset,true)
                        end
                        

                        i+offset might be 10, so you’ll have to play around with that to get the correct byte position.

                        Something like that and it’s just off the top of my head.

                        There are many clues for this in my Roland JD-990 panel which incorporates the SR-JV80-04 card, but wading through someone else’s code is almost more difficult than writing it yourself!

                        Good luck!

                        • This reply was modified 3 years, 9 months ago by dnaldoog. Reason: couldn't post this for some reason as a new reply!
                        #119138
                        Possemo
                        Participant
                          • Topics: 14
                          • Replies: 638
                          • Total: 652
                          • ★★★

                          I see. I think in most cases NRPN has no advantage compared to Sysex. The numer of bytes transferred is about the same, that is if you always send the Controller-Number together with a value change. This probably was not the way it was meant to be done. With Lua you could do a very efficient method, only sending the MSB/LSB Ctrlr-Nr. when the Controller changes. Anyway when you automate parameters and you change several controllers at once with NRPN there could always be a risk that parameters collide and some CC6 will not edit the right Ctrlr-Nr. With Sysex this is not possible.

                          #119137
                          dnaldoog
                          Participant
                            • Topics: 4
                            • Replies: 480
                            • Total: 484
                            • ★★

                            Hi Megasis – I see the Midi Controller number value is split into MSB/LSB. In other words 136 will be MSB =1 LSB =8 as you wrote. I wrote a panel for the JD-990

                            • ctrlr.org/roland-jd990-super-editor/

                            that has a lot of sysex code for the SR-JV80-04 card (and a popup menu of all patch names) which is the same as the m-VS1 – maybe it could help you if you want to get into the sysex side of things.


                            @possemo
                            I tried using NRPN with my PLG-150-AN but it seemed to be corrupting the card, so I then discovered the NULL byte thing and added the end NULL(reset) bytes, but the problem persisted so I gave up on NRPN for that particular card itself.

                            #119135
                            megasis
                            Participant
                              • Topics: 1
                              • Replies: 4
                              • Total: 5

                              Sorry, the seconf half of my post was a mess, this is what is supposed to be:
                              ———————————————————
                              This is from my initial post related to Vibrato Range:
                              CC Byte1 Byte2 Byte3
                              ——–
                              NRPN MSB B0H 63H 01H <-- It has to be 01H NRPN LSB B0H 62H 08H DATA MSB B0H 06H mmH My first change was the LUA script I found when I open LUA editor: local valu=math.ceil(value/1.28+14) local v=string.format("%.2X",valu) local str="B"..channel.." 63 00\n" <-- So Here changed it to 01 str=str.."B"..channel.." 62 08\n" str=str.."B"..channel.." 06 "..v.."\n" str=str.."B"..channel.." 65 7F\n" str=str.."B"..channel.." 64 7F" panel:getLabel("d"):setText(str) This fixed the Display MIDI Out, but the real MIDI output sent to M-VS1 didn't change, on the Output Monitor continue showing 00 One hour later, I realize there was a MIDI Controller number in the Modulator panel, so when I changed it to 136 it fixed the problem and the M-VS1 responded to the change perfectly. This is still 90% black Box, I would love to find more reference documentation on what are all those parameters on the Modulator Panel, and also how to use LUA editor. Thanks you again and Best regards, Megasis

                              #119134
                              megasis
                              Participant
                                • Topics: 1
                                • Replies: 4
                                • Total: 5

                                dnaldoog,

                                First of all… Thanks you very much for the panel, that’s exactly how I envision the controls for my M-VS1 NRPN panel.

                                Just so you know, I’ve never used Cntrlr.exe in my life, so this is uncharted territory, I was planning on building a Arduino Controller with 8 knobs to send this via MIDI cable etc., but this is a faster and very flexible alternative. My background is Database Application Developer, so coding shouldn’t be difficult.

                                Testing:
                                I tested the panel you sent me (thanks!!) but i didn’t work out-of-the-box. The problem was, after trying to figure out for couple of hours how Ctrolr.exe works, the Controller Number, you set it to 8, but for Vibrato Rate it has to be 136 ( MSL=01, LSB=08 –> 128 + 8 = 136 ).

                                This is from my initial post related to Vibrato Range:
                                CC Byte1 Byte2 Byte3
                                ——–
                                NRPN MSB B0H 63H 01H <-- It has to be 01H NRPN LSB B0H 62H 08H DATA MSB B0H 06H mmH My first change was the LUA script I found when I open LUA editor: local valu=math.ceil(value/1.28+14) local v=string.format("%.2X",valu) local str="B"..channel.." 63 00\n" <-- So Here changed it to 01 str=str.."B"..channel.." 62 08\n" str=str.."B"..channel.." 06 "..v.."\n" str=str.."B"..channel.." 65 7F\n" str=str.."B"..channel.." 64 7F" panel:getLabel("d"):setText(str) This fixed the Display MIDI Out, but the real MIDI output sent to M-VS1 didn't change, on the Output Monitor continue showing 00 One hour later, I realize there was a MIDI Controller number in the Modulator panel, so when I changed it to 136 it fixed the problem and the M-VS1 responded to the change perfectly. This is still 90% black Box, I would love to find more reference documentation on what are all those parameters on the Modulator Panel, and also how to use LUA editor. Thanks you again and Best regards, Megasis

                                #119131
                                dnaldoog
                                Participant
                                  • Topics: 4
                                  • Replies: 480
                                  • Total: 484
                                  • ★★

                                  Hi Possemo,

                                  You’ve got me wondering.

                                  According to this page philrees.co.uk/nrpnq.htm a 101 and 100 shold follow an NRPN message. Other pages seem to imply it’s for RPN only, which would make sense. You would think that the addresses 99 and 98 should be nulled out not the RPN.

                                  I found this in a manual for a Roland FP-30 (I have never heard of). It seems to imply the message should be RPN as in the Phil Rees website.



                                  *NRPN**
                                  The NRPN (Non Registered Parameter Number) message allows an extended range
                                  of control changes to be used.
                                  To use these messages, you must first use NRPN MSB and NRPN LSB messages to
                                  specify the parameter to be controlled, and then use Data Entry messages to
                                  specify the value of the specified parameter. Once an NRPN parameter has been
                                  specified, all Data Entry messages received on that channel will modify the value of
                                  that parameter. To prevent accidents, it is recommended that you set RPN Null (RPN
                                  Number = 7FH 7FH) when you have finished setting the value of the desired
                                  parameter. Refer to Section 4. Supplementary Material “Examples of actual MIDI
                                  messages” . On the GS devices, Data entry LSB (llH) of NRPN (controller
                                  number 38) is ignored, so it is no problem to send Data entry MSB (mmH) only
                                  without Data entry LSB (controller number 6).
                                  On this instrument, NRPN can be used to modify the following parameters

                                  • This reply was modified 3 years, 9 months ago by dnaldoog. Reason: edit
                                  #119130
                                  Possemo
                                  Participant
                                    • Topics: 14
                                    • Replies: 638
                                    • Total: 652
                                    • ★★★

                                    Hey dnaldoog, you seem to have mixed up NPN and NRPN. You use either CC99 and CC98 (NRPN) or CC101 and CC100 (RPN) but not both together.

                                    NRPN for Vibrato Rate would be like this:

                                    CC,ByteValue,MSB7bitValue,99,-2
                                    CC,ByteValue,LSB7bitValue,98,-2
                                    CC,Default,Default,6,-1

                                    No need to add the LSB-Part as the VS1 only seem to need MSB (CC6 at the end).
                                    As Vibrato goes from -50 to +50 I would use an uiFixedSlider and enter the values like this:

                                    According to the manual range is from 14 to 114 (Hex 0E to 72)

                                    -50=14
                                    -49=15

                                    0=65

                                    +50=114

                                    This way WYSIWYG (what you see is what you get).

                                    #119128
                                    dnaldoog
                                    Participant
                                      • Topics: 4
                                      • Replies: 480
                                      • Total: 484
                                      • ★★

                                      Hi megasis,

                                      Here is an example panel for the Vibrato Rate. Does it work?

                                      I used a formula value=math.ceil(value/1.28+14) to calculate the necessary CC value, but this would be in lua. I calculated a fixed list of values of 128 values ranging from -50 ~ +50 (starting at 0EH or 14) and then just have those static values in a uiFixedSlider control.

                                      The NRPN code in Ctrlr looks something like:

                                      
                                      CC,ByteValue,MSB7bitValue,99,-2
                                      CC,ByteValue,LSB7bitValue,98,-2
                                      CC,Default,Default,6,-1
                                      CC,ByteValue,MSB7bitValue,101,16384
                                      CC,ByteValue,LSB7bitValue,100,127
                                      

                                      The manual says you need the terminating NULL bytes.

                                      In MIDI Controller Number (in this case) set the number to 8.

                                      Let me know if this works.

                                      Attachments:
                                      You must be logged in to view attached files.
                                      #119126
                                      megasis
                                      Participant
                                        • Topics: 1
                                        • Replies: 4
                                        • Total: 5

                                        Since the panel for Roland M-VS1 seems to be lost or unavailable, I would like to create a very simple panel, with just 8 Slides or Pots (see list below), to send a combination of CCs (needed to form a NRPN message ) to change those parameters. Using this method, there is no SysEx (and calculate Check Sum).

                                        These are the parameters I want to control:
                                        Vibrato Rate
                                        Vibrato Depth
                                        Vibreto Delay
                                        TVF Cutoff Freq
                                        TVF Resonance
                                        TVF&TVA Attack
                                        TVF&TVA Decay
                                        TVF&TVA Release

                                        But for now, I would be happy with creating just one.
                                        For example:
                                        To change the Vibrato Rate parameter on Performance 1 (Ch 1), sing the Roland M-VS1 manual, MIDI Implementation, I can change the Vibrato Rate (Range -50 – 0 – +50), sending 4 CC messages NRPN MSB, NRPN LSB, DATA MSB and DATA LSB.

                                        CC Name Byte1 Byte2 Byte3
                                        ——–
                                        NRPN MSB B0H 63H 01H
                                        NRPN LSB B0H 62H 08H
                                        DATA MSB B0H 06H mmH <-- Values from 0-127 (actually just from 14-114) DATA LSB B0H 26H 00H <-- Always 0 This is a table to show how values change when turn full to the Left, Center and fill to the right: Display -50 0 +50 Decimal 1792 8192 14592 HEX 0E00H 4000H 7200H I've been looking on all the DEMO samples and existing Panels, but all seams to be mostly SysEx. Is it possible to do this simple Pot in Ctrlr.exe to send these 4 CCs when pot is turn? Thanks in advance for all your help on this. Megasis The real value range for the Pot would bebetween

                                        Attachments:
                                        You must be logged in to view attached files.
                                        #118732

                                        In reply to: Sysex Math

                                        Tedjuh
                                        Participant
                                          • Topics: 9
                                          • Replies: 97
                                          • Total: 106
                                          • ★★

                                          The device ID for the Roland JD XI is “00 00 00 0E”.

                                          So he is trying to get at:
                                          (19 00 00 00) temporary tone (Digital Synth Part 1)
                                          ( 01 00 00) Temporary SuperNatural Synth Tone
                                          ( 00 22 00) SuperNatural Synth Tone Partial (3))
                                          ( 00 0A) Filter Mode

                                          Which goes from 0-7, to swith Bypass, lpf, hpf, bpf and so on. If this is the right parameter, the sysex from the op doesn’t make that much sense to me. Or it must send/ set the LFO Depth at the same time.

                                          To make it more confusing there is also:
                                          LFO Filter Depth (00 23) -63/ +63 (1-127)

                                          But also in the CC Message List (Knob operation)
                                          LFO Filter Depth/ partial 1-3/ controller number NRPN MSB:0, LSB:18-20/ Value 0-127

                                          LSB 18-20 could explain the 3 messages if it sends the lfo depth for the three partials at once.

                                          And yes, the checksum is also missing.

                                          #118715
                                          smees
                                          Participant
                                            • Topics: 1
                                            • Replies: 5
                                            • Total: 6

                                            It is not working, still stuck with the same problem. Everything works but when I change from one parameter to another one it send a value to the one I was on.
                                            I also tried to put null message before the NRPN chain but always the same.

                                            I try to make first going to the parameter without touching the value then modulate it but can’t understand how to do that…

                                            Maybe I should do it with a sysex command but I catch nothing to it…

                                          Viewing 20 results - 1 through 20 (of 278 total)
                                          Ctrlr