# # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # synth = sequential.GenericSequential( name="DSI Pro 2", device_id=0b00101100, # See Page 134 of the Pro 2 manual banks=8, patches_per_bank=99, name_len=20, name_position=378, ).install(this_module) def setupHelp(): return "The DSI Pro 2 has two relevant global settings:\n\n" \ "1. You must set MIDI Sysex Enable to On\n" \ "2. You must choose the MIDI Sysex Cable.\n\n" \ "Options are DIN MIDI cable or the USB for sysex. USB is much faster.\n\n" \ "Both settings are accessible via the GLOBALS menu." # # If this is not loaded as a module, but called as a script, run our unit tests
# Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # synth = sequential.GenericSequential( name="Sequential Prophet X", device_id=0b00110000, # See Page 153 of the prophet X manual banks=8, patches_per_bank=128, name_len=20, name_position=418, blank_out_zones=[(2466, 20)] # Blank out Layer B name as well ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/PX_Programs_v2.0.syx") unittest.TextTestRunner().run( sequential.TestAdaptation.create_tests(this_module, program_dump=messages[2], program_name='Poly Super'))
# Copyright (c) 2021 Christof Ruch. All rights reserved. # # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # sequential.GenericSequential(name="DSI Tetra", device_id=0b00100110, banks=2, patches_per_bank=128, name_position=184, name_len=16 ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/Tetra_ProgramsCombos_1.0.syx") unittest.TextTestRunner().run(sequential.TestAdaptation.create_tests(this_module, program_dump=messages[1], program_name='Tom Sawyer'))
# # Copyright (c) 2021 Christof Ruch. All rights reserved. # # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # TODO - the Evolver has also a Waveshape Dump, that no other Sequential synth has. We need to support this # TODO - It also has the peculiar NameDataDump, as the name of the patch is not included in the patch data itself # TODO - currently all patches are listed with name "invalid" # # Configure the GenericSequential module # sequential.GenericSequential(name="DSI Evolver", device_id=0b00100000, banks=4, patches_per_bank=128, file_version=0x01).install(this_module) if __name__ == "__main__": import sys import unittest unittest.TextTestRunner().run( sequential.TestAdaptation.create_tests(sys.modules[__name__]))
import sequential import sys this_module = sys.modules[__name__] # TODO Support for the original Prophet 5 (Rev1-Rev3) sysex dumps. They started with F0 01 01, but lacked the F7 # # Configure the GenericSequential module # synth = sequential.GenericSequential( name="Sequential Prophet-5", device_id= 0b00110010, # This is the ID used in the factory programs available from the website banks=10, patches_per_bank=40, name_len=20, name_position=65, ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/P5_Factory_Programs_v1.02.syx") unittest.TextTestRunner().run( sequential.TestAdaptation.create_tests(this_module, program_dump=messages[2], program_name='Forever Keys'))
# # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # synth = sequential.GenericSequential(name="DSI Prophet 08", # DSI product name is Prophet '08 (for the year introduced) device_id=0b00100011, # See Page 82 of the prophet 12 manual banks=2, patches_per_bank=128, name_len=16, name_position=184, id_list=[0b00100011, 0b00100100], # Prophet 08 or special edition Prophet 08 ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/Prophet_08_Programs_v1.0.syx") unittest.TextTestRunner().run(sequential.TestAdaptation.create_tests(this_module, program_dump=messages[2], program_name='T8 Strings'))
# # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # synth = sequential.GenericSequential( name="Sequential Prophet 6", # Sequential product name is Prophet-6 device_id=0b00101101, banks=10, patches_per_bank=100, name_len=20, name_position=107, ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/P6_Programs_v1.01.syx") unittest.TextTestRunner().run( sequential.TestAdaptation.create_tests(this_module, program_dump=messages[2], program_name='Thick Low Brass'))
# # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # synth = sequential.GenericSequential( name="Sequential Pro 3", device_id=0b00110001, # See Page 147 of the Pro 3 manual banks=8, patches_per_bank=128, name_len=20, name_position=321, ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/P3_Factory_Sounds_v1.01.syx") unittest.TextTestRunner().run( sequential.TestAdaptation.create_tests(this_module, program_dump=messages[2], program_name='Staircase'))
# # Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # sequential.GenericSequential( name="DSI Mopho", device_id=0x25, banks=3, patches_per_bank=128, name_position=184, name_len=16, id_list=[0x25, 0x27, 0x29] # this adds Mopho Keyboard, SE, and X4 ).install(this_module) # # If this is not loaded as a module, but called as a script, run our unit tests # if __name__ == "__main__": import unittest messages = sequential.load_sysex("testData/Mopho_Programs_v1.0.syx") unittest.TextTestRunner().run( sequential.TestAdaptation.create_tests(this_module, program_dump=messages[1], program_name='Wagnerian'))
# Dual licensed: Distributed under Affero GPL license by default, an MIT license is available for purchase # import sequential import sys this_module = sys.modules[__name__] # # Configure the GenericSequential module # synth = sequential.GenericSequential(name="DSI Prophet 12", device_id=0b00101010, # See Page 82 of the prophet 12 manual banks=8, patches_per_bank=99, name_len=20, name_position=402, id_list=[0b00101010, 0x2b], # The Pro12 Desktop module calls itself 0x2b, blank_out_zones=[(914, 20)] # Make sure to blank out the layer B name as well ).install(this_module) # # Synth specific functions # def setupHelp(): return "The DSI Prophet 12 has two relevant global settings:\n\n" \ "1. You must set MIDI Sysex Enable to On\n" \ "2. You must choose the MIDI Sysex Cable.\n\n" \