コード例 #1
0
ファイル: file.py プロジェクト: redpola/g2ools
    def parse(self, patch, data):
        bitstream = BitStream(data)
        nknobs = bitstream.read_bits(16)
        patch.knobs = [Knob()
                       for i in xrange(nknobs)]  # G2Patch / G2Performance
        for knob in patch.knobs:
            knob.assigned = bitstream.read_bits(1)
            if not knob.assigned:
                continue
            area, index, knob.isled, param = bitstream.read_bitsa([2, 8, 2, 7])
            if type(patch) == Performance:
                knob.slot = bitstream.read_bits(2)
                perf = patch
                patch = perf.slots[knob.slot].patch
            else:
                knob.slot = 0

            if area == SETTINGS:
                knob.param = get_settings_param(patch, index, param)
            else:
                module = get_patch_area(patch, area).find_module(index)
                if module:
                    knob.param = module.params[param]
                else:
                    knob.assigned = 0
                    continue
            knob.param.knob = knob
コード例 #2
0
ファイル: file.py プロジェクト: msg/g2ools
  def parse(self, patch, data):
    bitstream = BitStream(data)
    nknobs = bitstream.read_bits(16)
    patch.knobs = [ Knob() for i in xrange(nknobs)] # G2Patch / G2Performance
    for knob in patch.knobs:
      knob.assigned = bitstream.read_bits(1)
      if not knob.assigned:
        continue
      area, index, knob.isled, param = bitstream.read_bitsa([2, 8, 2, 7])
      if type(patch) == Performance:
        knob.slot = bitstream.read_bits(2)
        perf = patch
        patch = perf.slots[knob.slot].patch
      else:
        knob.slot = 0

      if area == SETTINGS:
        knob.param = get_settings_param(patch, index, param)
      else:
        module = get_patch_area(patch, area).find_module(index)
        if module:
          knob.param = module.params[param]
        else:
          knob.assigned = 0
          continue
      knob.param.knob = knob
コード例 #3
0
ファイル: file.py プロジェクト: msg/g2ools
 def parse(self, patch, data):
   bitstream = BitStream(data)
   self.area = bitstream.read_bits(2)
   if self.area == SETTINGS:
     self.parse_morphs(patch.settings.morphs, bitstream)
   else:
     area = get_patch_area(patch, self.area)
     self.parse_area(area, bitstream)
コード例 #4
0
ファイル: file.py プロジェクト: redpola/g2ools
 def parse(self, patch, data):
     bitstream = BitStream(data)
     self.area = bitstream.read_bits(2)
     if self.area == SETTINGS:
         self.parse_morphs(patch.settings.morphs, bitstream)
     else:
         area = get_patch_area(patch, self.area)
         self.parse_area(area, bitstream)
コード例 #5
0
ファイル: file.py プロジェクト: msg/g2ools
 def parse(self, patch, data):
   bitstream = BitStream(data)
   self.area = bitstream.read_bits(2)
   if self.area == SETTINGS:
     patch.settings = Settings()  # G2Patch
     self.parse_settings(patch.settings, bitstream)
   else:
     area = get_patch_area(patch, self.area)
     self.parse_area(area, bitstream)
コード例 #6
0
ファイル: file.py プロジェクト: msg/g2ools
 def parse(self, patch, data):
   bitstream = BitStream(data)
   lastnote  = patch.lastnote = Note()  # G2Patch
   values    = bitstream.read_bitsa([7] * 3)
   lastnote.note, lastnote.attack, lastnote.release = values
   nnotes    = bitstream.read_bits(5) + 1
   notes     = patch.notes = [ Note() for i in xrange(nnotes) ]  # G2Patch
   for note in notes:
     note.note, note.attack, note.release = bitstream.read_bitsa([7, 7, 7]) 
コード例 #7
0
ファイル: file.py プロジェクト: redpola/g2ools
 def parse(self, patch, data):
     bitstream = BitStream(data)
     self.area = bitstream.read_bits(2)
     if self.area == SETTINGS:
         patch.settings = Settings()  # G2Patch
         self.parse_settings(patch.settings, bitstream)
     else:
         area = get_patch_area(patch, self.area)
         self.parse_area(area, bitstream)
コード例 #8
0
ファイル: file.py プロジェクト: redpola/g2ools
 def parse(self, patch, data):
     bitstream = BitStream(data)
     lastnote = patch.lastnote = Note()  # G2Patch
     values = bitstream.read_bitsa([7] * 3)
     lastnote.note, lastnote.attack, lastnote.release = values
     nnotes = bitstream.read_bits(5) + 1
     notes = patch.notes = [Note() for i in xrange(nnotes)]  # G2Patch
     for note in notes:
         note.note, note.attack, note.release = bitstream.read_bitsa(
             [7, 7, 7])
コード例 #9
0
ファイル: file.py プロジェクト: msg/g2ools
 def parse(self, patch, data):
   bitstream = BitStream(data)
   nctrls = bitstream.read_bits(7)
   patch.ctrls = [ Ctrl() for i in xrange(nctrls)]  # G2Patch? / G2Ctrl?
   for ctrl in patch.ctrls:
     ctrl.midicc, area, index, param = bitstream.read_bitsa([7, 2, 8, 7])
     if area == SETTINGS:
       ctrl.param = get_settings_param(patch, index, param)
     else:
       module = get_patch_area(patch, area).find_module(index)
       ctrl.param = module.params[param]
     ctrl.param.ctrl = ctrl
コード例 #10
0
ファイル: file.py プロジェクト: redpola/g2ools
 def parse(self, patch, data):
     bitstream = BitStream(data)
     nctrls = bitstream.read_bits(7)
     patch.ctrls = [Ctrl() for i in xrange(nctrls)]  # G2Patch? / G2Ctrl?
     for ctrl in patch.ctrls:
         ctrl.midicc, area, index, param = bitstream.read_bitsa(
             [7, 2, 8, 7])
         if area == SETTINGS:
             ctrl.param = get_settings_param(patch, index, param)
         else:
             module = get_patch_area(patch, area).find_module(index)
             ctrl.param = module.params[param]
         ctrl.param.ctrl = ctrl
コード例 #11
0
def cmd_settings(command):
  g2usb.send_message([CMD_SYS, 0x41, 0x35, 0x04])
  syst = g2usb.send_message([CMD_SYS, 0x41, 0x02])
  synthname, syst = parse_name(syst[4:])
  printf('%s:\n', synthname)
  bitstream = BitStream(syst)
  mode = bitstream.read_bits(1)
  bitstream.seek_bit(8*5)
  midis = bitstream.read_bitsa([8]*5)
  sysex, local, _, prgch = bitstream.read_bitsa([8, 1, 7, 8])
  _, clkse, clkre, _ = bitstream.read_bitsa([1, 1, 1, 5])
  _, tune_cent, _, tune_semi = bitstream.read_bitsa([8, 8, 16, 8])
  _, pedal_polarity, _, pedal_gain = bitstream.read_bitsa([8, 1, 7, 8])
  printf(' mode: %s\n', ['Patch', 'Performance'][mode])
  printf(' midi:\n')
  printf('  slots: a:%d b:%d c:%d d:%d glob:%d\n', *midis)
  printf('  sysex: %d\n', sysex+1)
  printf('  local: %s\n', ['off','on'][local])
  printf('  prgch: %s\n', ['off','send','recv','send/recv'][prgch])
  printf('  clkse: %s\n', ['on','off'][clkse])
  printf('  clkre: %s\n', ['on','off'][clkre])
  printf(' tune semi: %d\n', struct.unpack('b',chr(tune_semi))[0])
  printf(' tune cent: %d\n', struct.unpack('b',chr(tune_cent))[0])
  printf(' pedal polarity: %s\n', ['open','closed'][pedal_polarity])
  printf(' pedal gain: %.2f\n', 1.0 + 0.5*pedal_gain/32)
  sels = g2usb.send_message([CMD_SYS, 0x41, 0x81])
  data = g2usb.send_message([CMD_SYS, sels[2], 0x10])
  perfname, data = parse_name(data[4:])
  bitstream = BitStream(data, 8*4)
  if mode:
    printf('Performance: %s\n', perfname)
  else:
    printf('Patches: %s\n', perfname)
  _, focus, _ = bitstream.read_bitsa([4, 2, 2])
  range_enable, bpm, split, clock = bitstream.read_bitsa([8, 8, 8, 8])
  printf(' focus: %s\n', 'abcd'[focus])
  printf(' range enable: %s\n', ['off','on'][range_enable])
  printf(' master clock: %d BPM: %s\n', bpm, ['stop','run'][clock])
  printf(' kb split: %s\n', ['off','on'][split])
  data = data[11:]
  for slot in range(4):
    name, data = parse_name(data)
    active, key, hold, bank, patch, low, high = data[:7]
    printf(' slot %s: %d:%d "%-16s"\n', 'abcd'[slot], bank+1, patch+1, name)
    printf('  active: %-3s, ', ['off','on'][active])
    printf('key: %-3s, ', ['off','on'][key])
    printf('hold: %-3s, ', ['off','on'][hold])
    printf('range: %d-%d\n', low, high)
    data = data[10:]
  return 0
コード例 #12
0
ファイル: file.py プロジェクト: msg/g2ools
 def parse(self, patch, data):
   bitstream = BitStream(data)
   self.area = bitstream.read_bits(2)
   area = get_patch_area(patch, self.area)
   self.parse_area(area, bitstream)
コード例 #13
0
ファイル: file.py プロジェクト: redpola/g2ools
 def parse(self, patch, data):
     bitstream = BitStream(data)
     self.area = bitstream.read_bits(2)
     area = get_patch_area(patch, self.area)
     self.parse_area(area, bitstream)