Beispiel #1
0
#
#   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
Beispiel #2
0
#   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'))
Beispiel #3
0
#   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'))
Beispiel #9
0
#
#   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" \