unpackDsiData question

Home Forums General Programming unpackDsiData question

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #410
    netchose
    Participant
      • Topics: 15
      • Replies: 70
      • Total: 85

      hi,

      i try to read an evolver/polyevolver program dump request (228bytes)

      in the synth manual :[i:2rscle1l]220 bytes in “packed MS bit” format (see page 54). Includes 128 bytes of
      Program parameters and 64 bytes of Sequence data[/i:2rscle1l]

      and in the CTRL documentation :
      [i:2rscle1l]the data to unpack (this must not include the MIDI SysEx prefix or suffix, and must be a multiple of 8) [/i:2rscle1l]

      a multiple 8 => i think number of Bytes => but : 220 is not a multiple of 8.
      What range do i have to use

      [code:2rscle1l]programData = midiMessage:getLuaData():getRange(7,220)
      unpackedData = utils.unpackDsiData(programData)[/code:2rscle1l]

      i’ve tested with various ranges, and it doesn’t give me a good result.

      thanks

      #3120
      netchose
      Participant
        • Topics: 15
        • Replies: 70
        • Total: 85

        something strange

        [code:1kopo6z5]programData = midiMessage:getLuaData():getRange(7,8)
        unpackedData = utils.unpackDsiData(programData)[/code:1kopo6z5]

        unpackedData and utils.unpackDsiData(programData ) to HexString doesn’t give the same result

        #3121
        atom
        Keymaster
          • Topics: 159
          • Replies: 2945
          • Total: 3104
          • ★★★★★

          I don’t know how the implementation works in all DSI devices, the unpack/pack routines were taken from the prophet forums (my old code from Ctrlrv4 got lost and i can’t find it), i can assume that the data does not have to come in 8 byte packets, but that’s what the manual says for the Evolver and the Mopho, it might be different for some other devices.

          #3122
          netchose
          Participant
            • Topics: 15
            • Replies: 70
            • Total: 85

            for the evolver it ‘s some thing like that : for a serie of 8 bytes :

            if the real value of byte 1 is > to 127 then byte 0 =1
            if the real value of byte 3 is > to 127 then byte 0 =4
            if the real value of byte 4 is > to 127 then byte 0 =8
            if the real value of byte 3 and 4 are > 127 then byte 0 =0C (12)

            so now i ‘m trying to make a own function

            #3123
            atom
            Keymaster
              • Topics: 159
              • Replies: 2945
              • Total: 3104
              • ★★★★★

              from what i understand it’s in 8 bytes packets, last 7 bytes are the values of parameters with the msb bit stripped and put in the first byte at the beginning of the packet.

              most important, it’s a programming language if something is not working the way i did it, do it yourself, and if possible share with others, that’s the whole point.

              #3124
              netchose
              Participant
                • Topics: 15
                • Replies: 70
                • Total: 85

                i’ts exact
                i don’t know if i will be able to do this algorithm myself
                i will try

                thanks

              Viewing 6 posts - 1 through 6 (of 6 total)
              • The forum ‘Programming’ is closed to new topics and replies.
              There is currently 0 users and 77 guests online
              No users are currently active
              Forum Statistics
              Threads: 2,495, Posts: 17,374, Members: 77,605
              Most users ever online was 12 on January 22, 2019 3:47 pm
              Ctrlr