Exemple #1
0
    def testEncodeDecode(self):
        cmd = sysex.Command(sysex.Z48_ID, '\x20\x04', 'get_no_disks', (), (sysex_types.TYPEBYTE, sysex_types.BYTE,),
            userref_type=sysex_types.USERREF)
        request = sysex.Request(cmd, (), 0)
        bytes = z48._execute(request.get_bytes())
        length, request_id = sysex_types.USERREF.decode(bytes[3:])

        self.assertEquals(0, request_id)

        cmd = sysex.Command(sysex.S56K_ID, '\x10\x04', 'get_no_disks', (), (sysex_types.BYTE,),
            userref_type=sysex_types.S56K_USERREF)
        request = sysex.Request(cmd, (), 16000)

        bytes = z48._execute(request.get_bytes())
        length, request_id = sysex_types.USERREF.decode(bytes[3:])

        self.assertEquals(3, length)
        self.assertEquals(16000, request_id)

        cmd = sysex.Command(sysex.Z48_ID, '\x20\x04', 'get_no_disks', (), (sysex_types.TYPEBYTE, sysex_types.BYTE,),
            userref_type=sysex_types.Z48USERREF)

        request = sysex.Request(cmd, (), 126)
        bytes = z48._execute(request.get_bytes())
        result = sysex.Reply(bytes, cmd)
        request_id = result.get_request_id()
        self.assertEquals(126, request_id)

        request = sysex.Request(cmd, (), 16000)
        bytes = z48._execute(request.get_bytes())
        result = sysex.Reply(bytes, cmd)
        request_id = result.get_request_id()
        self.assertEquals(16000, request_id)
Exemple #2
0
 def testParseHandleNameArray(self):
     bytes = sysex.repr_bytes(['F0','47','5F','00','52','14','02','20','08','44',
         '72','79','20','4B','69','74','20','30','32','00','08','50','72','6F','67','72','61','6D','20','31','00',
         '08','53','79','6E','74','68','54','65','73','74','00','F7'])
     cmd = sysex.Command(sysex.Z48_ID, '\x14\x02\02', 'programtools', 'get_handles_names', (), None)
     reply = sysex.Reply(bytes, cmd)
     self.assertEquals(('Dry Kit 02', 'Program 1', 'SynthTest'), reply.get_return_value())
Exemple #3
0
 def testParseExtendedDisklist(self):
     bytes = sysex.repr_bytes(
         ['f0', '47', '5e', '20', '00', '00', '52', '10', '05', '01', '00', '00',
         '08', '00', '01', '4e', '6f', '20', '64', '69', '73', '6b', '00', '01', '01',
         '03', '08', '01', '00', '4e', '6f', '20', '64', '69', '73', '6b', '00', '01',
         '02', '03', '08', '02', '00', '4e', '6f', '20', '64', '69', '73', '6b', '00',
         '02', '03', '03', '01', '04', '01', '4e', '6f', '20', '44', '69', '73', '6b',
         '20', '4e', '61', '6d', '65', '00', 'f7'])
     cmd = sysex.Command(sysex.S56K_ID, '\x10\x05', 'dummy', 'dummy', (),(
         sysex_types.DISKLIST,), sysex_types.USERREF)
     reply = sysex.Reply(bytes, cmd)
     self.assertEquals(
         ((1, 0, 8, 0, 1, 'No disk'), (129, 3, 8, 1, 0, 'No disk'),
         (257, 3, 8, 2, 0, 'No disk'), (386, 3, 1, 4, 1, 'No Disk Name'))
         , reply.get_return_value())
Exemple #4
0
    def testCreateReply(self):
        DEFAULT_USERREF = '\x00'
        bytes = (sysex.START_SYSEX, sysex.AKAI_ID, sysex.Z48_ID, DEFAULT_USERREF, 
                 sysex.REPLY_ID_REPLY, '\x20\x05', '\x01', sysex.END_SYSEX)
        dcmd = sysex.Command(sysex.Z48_ID, '\x20\x05', 'dummy', 'dummy', (), (sysex_types.BYTE,))
        reply = sysex.Reply(''.join(bytes), dcmd)
        self.assertEquals(1, reply.get_return_value())

        bytes =  (
            sysex.START_SYSEX, sysex.AKAI_ID, '\x5e\x20', '\x00',
            sysex.REPLY_ID_REPLY, '\x20\x05', '\x01', sysex.END_SYSEX)
        custom_cmd = sysex.Command('\x5e\x20', '\x20\x05', 'disktools', 'dummy', (),(sysex_types.BYTE,))
        reply = sysex.Reply(''.join(bytes), custom_cmd)
        self.assertEquals(1, reply.get_return_value())

        dcmd.reply_spec = (sysex_types.WORD, sysex_types.BYTE, sysex_types.BYTE, sysex_types.BYTE, sysex_types.BYTE, sysex_types.STRING)
        bytes = (
            sysex.START_SYSEX, sysex.AKAI_ID, sysex.Z48_ID, '\x00',
            sysex.REPLY_ID_REPLY, '\x20\x05', '\x00','\x02\x01\x02', '\x00',
            '\x01\x5a\x34\x38\x20\x26\x20\x4d\x50\x43\x34\x4b', '\x00', sysex.END_SYSEX)
        reply = sysex.Reply(''.join(bytes), dcmd)
        self.assertEquals((256, 1, 2, 0, 1, 'Z48 & MPC4K'), reply.get_return_value())

        # Future: should raise unknown disk error
        dcmd.id = '\x20\x05'
        dcmd.reply_spec = ()
        bytes = '\xf0G_\x00E \x00\x00\x03\xf7'
        self.assertRaises(model.SamplerException, sysex.Reply, bytes, dcmd)
        # using pad type if we encounter bytes not according to specification
        dcmd.id = '\x20\x10'
        dcmd.reply_spec = None
        bytes =  (
            sysex.START_SYSEX, sysex.AKAI_ID, sysex.Z48_ID,
            '\x00', sysex.REPLY_ID_REPLY, '\x20\x10', '\x02',
            '\x15', '\x00', '\xf7')
        reply = sysex.Reply(''.join(bytes), dcmd)
        self.assertEquals(21, reply.get_return_value())

        # not possible yet how to deal with the dump request replies
        dcmd.reply_spec = ()
        self.assertRaises(sysex.ParseException,  sysex.Reply, '\xf0G_ ' + '\x00' * 2 
                          + 'R\x10 i\x01\xf7', dcmd)

        # reply on 'bulk command 10 05' 10 0a 00 f0 47 5e 20 00 00 10 05 15 f7
        dcmd.id = '\x10\x05'
        dcmd.reply_spec = (sysex_types.WORD, sysex_types.BYTE, sysex_types.BYTE, sysex_types.BYTE, 
                           sysex_types.BYTE, sysex_types.STRING)
        bytes = '\xf0\x47\x5f\x00\x52\x10\x05\x00\x02\x01\x02\x00\x01\x5a\x34\x38\x20\x26\x20\x4d\x50\x43\x34\x4b\x00\xf7'
        reply = sysex.Reply(bytes, dcmd)
        self.assertEquals((256, 1, 2, 0, 1, 'Z48 & MPC4K'), reply.get_return_value())

        dcmd.id = '\x10\x22'
        bytes = '\xf0\x47\x5f\x00\x52\x10\x22\x4d\x65\x6c\x6c\x20\x53\x74\x72\x69\x6e\x67\x20\x41\x32\x2e\x77\x61\x76\x00\xf7'
        dcmd.reply_spec = (sysex_types.STRING,)
        reply = sysex.Reply(bytes, dcmd)
        self.assertEquals('Mell String A2.wav', reply.get_return_value())

        dcmd.id = '\x10\x22'
        bytes = '\xf0\x47\x5f\x00\x52\x10\x22\x4d\x65\x6c\x6c\x6f\x74\x72\x6f\x6e\x20\x53\x74\x72\x69\x6e\x67\x73\x2e\x61\x6b\x70\x00\xf7'
        dcmd.reply_spec = (sysex_types.STRING,)
        reply = sysex.Reply(bytes, dcmd)
        self.assertEquals('Mellotron Strings.akp', reply.get_return_value())

        dcmd.id = '\x07\x01'
        bytes = '\xf0\x47\x5f\x00\x52\x07\x01\x08\x5a\x38\x20\x53\x61\x6d\x70\x6c\x65\x72\x00\xf7'
        dcmd.reply_spec = (sysex_types.STRING,)
        reply = sysex.Reply(bytes, dcmd)
        self.assertEquals('Z8 Sampler', reply.get_return_value())

        bytes = '\xf0G_\x00E\x1eJ\x00\x00\xf7'
        self.assertRaises(NotImplementedError, sysex.Reply, bytes, self.createCommand())
Exemple #5
0
 def testParseEchoReply(self):
     bytes = sysex.repr_bytes(
         ['f0', '47', '5f', '00', '52', '00', '06', '0b', '01', '01', '01', '01', 'f7'])
     cmd = sysex.Command(sysex.Z48_ID, '\x00\x06', 'sysextools', 'query', (), None)
     reply = sysex.Reply(bytes, cmd)
     self.assertEquals((1,1,1,1), reply.get_return_value())
Exemple #6
0
 def testParseUserRef(self):
      cmd = sysex.Command(sysex.S56K_ID, '\x07\x01', 'dummy', 'dummy', (), (sysex_types.BYTE,), sysex_types.S56K_USERREF)
      bytes = '\xf0\x47\x5e\x20\x7e\x00\x52\x07\x01\x08\x5a\x38\x20\x53\x61\x6d\x70\x6c\x65\x72\x00\xf7'
      reply = sysex.Reply(bytes, cmd)
      self.assertEquals(126, reply.get_request_id())
Exemple #7
0
 def execute_alt_request(self, handle, commands, args, index=None):
     result_bytes = self.execute_request(
         sysex.AlternativeRequest(handle, commands, args, index))
     result = sysex.Reply(result_bytes, commands[0], True)
     return result.get_return_value()
Exemple #8
0
 def execute(self, command, args):
     request = sysex.Request(command, args)
     result_bytes = self.execute_request(request)
     result = sysex.Reply(result_bytes, request.command)
     return result.get_return_value()