예제 #1
0
def main():
    usage = """
Aksyfs: mount your sampler as a filesystem

""" + fuse.Fuse.fusage

    fs = AksyFS(version="%prog " + fuse.__version__,
                 usage=usage,
                 dash_s_do='setsingle')

    fs.parser.add_option(mountopt="sampler_type", metavar="SAMPLER_TYPE", default=fs.sampler_type,
                         help="use SAMPLER_TYPE (z48/mpc4k/s56k|mock_z48) [default: %default]")
    fs.parser.add_option(mountopt="connector", metavar="CONNECTOR", default=fs.connector,
                         help="use CONNECTOR (usb|osc) [default: %default]")
    fs.parser.add_option(mountopt="sample_file", metavar="SAMPLE_FILE", 
                         help="The wave file to be served when any wave file is accessed on the filesystem (only valid with mock_z48)")
    fs.parser.add_option(mountopt="program_file", metavar="PROGRAM_FILE", 
                         help="The program to be served when any program is accessed on the filesystem (only valid with mock_z48")

    fs.parse(values=fs, errex=1)

    if fs.sampler_type == "mock_z48":
        sampler = Devices.get_instance('mock_z48', 'mock')
        sampler.set_sample(fs.sample_file)
        sampler.set_program(fs.program_file)
    else:
        sampler = Devices.get_instance(fs.sampler_type, fs.connector)
    try:
        #sampler.start_osc_server()
        fs.main(sampler)
    finally:
        #sampler.stop_osc_server()
        sampler.close()
예제 #2
0
    def __init__(self,parent,title):
        wx.Frame.__init__(self,parent,wx.ID_ANY, title, size = ( 200,100),
                         style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
        self.action_map = {}
        filemenu= wx.Menu()
        filemenu.Append(wx.ID_EXIT, "E&xit\tCtrl+Q"," Exit the program")

        helpmenu = wx.Menu()
        helpmenu.Append(wx.ID_ABOUT, "&About"," Information about this program")

        menuBar = wx.MenuBar()
        menuBar.Append(filemenu, "&File")
        menuBar.Append(helpmenu, "&Help")
        self.SetMenuBar(menuBar)
        self.SetSize((800, 600))
        img_path = os.path.join(os.path.split(__file__)[0], 'img')
        self.SetIcon(wx.IconFromBitmap(wx.Image(os.path.join(img_path, 'aksy.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap()))
        self.Show(True)

        self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
        self.Bind(wx.EVT_MENU, self.OnAbout, id=wx.ID_ABOUT)
        self.Bind(wx.EVT_CLOSE, self.OnExit)
        
        try:
            self.sampler = Devices.get_instance('z48', 'osc')
        except USBException, e:
		    # if e[0] == "No sampler found":
            self.sampler = Devices.get_instance('mock_z48', 'mock')
예제 #3
0
 
def main(): 
    parser = config.create_option_parser(usage="%prog [options]")
    options = parser.parse_args()[0]

    sampler = Devices.get_instance(options.sampler_type, options.connector)

    try:
        m = Main(sampler)
        accel_group = gtk.AccelGroup()
        
        win = gtk.Window()
        win.add_accel_group(accel_group)
        setup_keybindings(m, accel_group)

        win.add(m.editor)

        m.set_window(win)
        win.show_all()
        # TODO: make edit menu functional
        m.w_edit_menu.hide()
        win.connect("delete-event", gtk.main_quit)

        gtk.main()
    finally:
예제 #4
0
def checkout(url, destdir=''):
    file = urllib.urlretrieve(url)[0]
    zip = zipfile.ZipFile(file)
    if zip.testzip() is not None:
        raise Exception('Corrupt zipfile')

    destfiles = []
    for name in zip.namelist():
        dest = os.path.join(destdir, os.path.dirname(name))
        filename = os.path.basename(name)
        if not os.path.exists(dest):
            os.makedirs(dest)
        destfile = os.path.join(dest, filename)
        file = open(destfile, 'wb')
        # XXX lazy but memory should be plenty...
        file.write(zip.read(name))
        file.close()
        destfiles.append(destfile)

    zip.close()

    # aksy stuff
    z48 = Devices.get_instance('z48', 'usb')
    try:
        for file in destfiles:
            process_file(z48, file)
    finally:
        z48.close()
예제 #5
0
파일: ftpd.py 프로젝트: svanzoest/aksy
def main():
    parser = create_option_parser(usage='%prog [options]')
    parser.add_option("--ftp_host", nargs=1, dest="ftp_host",
      help="Server host or IP address to bind on. Only change if running in an isolated network!", default='localhost')
    parser.add_option("--ftp_port", nargs=1, dest="ftp_port",
      help="Server port to bind on.", default=2121)

    options = parser.parse_args()[0]

    authorizer = ftpserver.DummyAuthorizer()
    authorizer.add_anonymous('/', perm=('r', 'w'))

    address = (options.ftp_host, options.ftp_port)
    if options.ftp_host != 'localhost':
        import warnings
        warnings.warn('Running aksyftpd on non-local address %s' % options.ftp_host, RuntimeWarning)
    
    sampler = Devices.get_instance(options.sampler_type, options.connector)

    try:    
        ftp_handler = ftpserver.FTPHandler
        ftp_handler.authorizer = authorizer
        ftp_handler.banner = "aksyftpd (pyftpd version %s) ready." % ftpserver.__ver__
        ftp_handler.abstracted_fs = AksyFtpFS(sampler)

        ftpd = ftpserver.FTPServer(address, ftp_handler)
        ftpd.max_cons = 256
        ftpd.max_cons_per_ip = ftpd.max_cons 
        ftpd.serve_forever()
    finally:
        sampler.close()
예제 #6
0
파일: checkout.py 프로젝트: svanzoest/aksy
def checkout(url, destdir=''):
    file = urllib.urlretrieve(url)[0]
    zip = zipfile.ZipFile(file)
    if zip.testzip() is not None:
        raise Exception('Corrupt zipfile')
        
    destfiles = []
    for name in zip.namelist():
        dest = os.path.join(destdir, os.path.dirname(name))
        filename = os.path.basename(name)
        if not os.path.exists(dest): 
            os.makedirs(dest)
        destfile = os.path.join(dest, filename)
        file = open(destfile, 'wb')
        # XXX lazy but memory should be plenty... 
        file.write(zip.read(name))
        file.close()
        destfiles.append(destfile)
   
    zip.close()

    # aksy stuff
    z48 = Devices.get_instance('z48', 'usb')
    try:
        for file in destfiles:
            process_file(z48, file)
    finally:
        z48.close()
예제 #7
0
def main():
    parser = create_option_parser()
    (options, filelist) = parser.parse_args()

    if len(filelist) == 0:
        parser.error(
            "At least one or more files/directories should be specified")

    to_upload = collect_files(filelist)

    if len(to_upload) == 0:
        parser.error("Nothing to upload: no supported files found")

    z48 = Devices.get_instance(options.sampler_type, options.connector)

    if options.programName is not None:
        print 'Uploading files.'
        upload_files(z48, to_upload, filterProgram=options.programName)
    elif options.drumProgramName:
        print 'Uploading files.'
        print 'Building drum program.', options.drumProgramName
        build_drum_program(z48, to_upload, options.drumProgramName)
        upload_files(z48, to_upload, filterProgram=options.drumProgramName)
    else:
        upload_files(z48, to_upload)
예제 #8
0
파일: test_ftpd.py 프로젝트: svanzoest/aksy
 def setUp(self):
     sampler = Devices.get_instance('mock_z48', 'mock', debug=0)
     sampler.set_sample(testutil.get_test_resource('test.wav'))
     sampler.set_program(testutil.get_test_resource('221 Angel.akp'))
     self.fs = ftpd.AksyFtpFS(sampler)
     self.fs.getattr('/')
     self.fs.getattr('/disks')
     self.fs.getattr('/memory')
예제 #9
0
파일: test_aksyfuse.py 프로젝트: jpuk/aksy
 def setUp(self):
     sampler = Devices.get_instance('mock_z48', 'mock', debug=0)
     sampler.set_sample(testutil.get_test_resource('test.wav'))
     sampler.set_program(testutil.get_test_resource('221 Angel.akp'))
     self.fs = aksyfuse.AksyFS()
     self.fs.init_sampler(sampler)
     self.fs.getattr('/')
     self.fs.getattr('/disks')
     self.fs.getattr('/memory')
예제 #10
0
파일: get.py 프로젝트: svanzoest/aksy
def main():
    parser = create_option_parser()
    (options, patterns) = parser.parse_args()

    if len(patterns) == 0:
        patterns.append("*.wav")

    options.destdir = os.path.abspath(options.destdir)

    sampler = Devices.get_instance(options.sampler_type, options.connector)
    try:
        execute_cmd(sampler, patterns, options)
    finally:
        sampler.close()
예제 #11
0
파일: get.py 프로젝트: svanzoest/aksy
def main():
    parser = create_option_parser()
    (options, patterns) = parser.parse_args()

    if len(patterns) == 0:
        patterns.append("*.wav")
    
    options.destdir = os.path.abspath(options.destdir)

    sampler = Devices.get_instance(options.sampler_type, options.connector)
    try:    
        execute_cmd(sampler, patterns, options)
    finally:
        sampler.close()
예제 #12
0
def main():
    parser = create_option_parser(usage='%prog [options]')
    parser.add_option(
        "--ftp_host",
        nargs=1,
        dest="ftp_host",
        help=
        "Server host or IP address to bind on. Only change if running in an isolated network!",
        default='localhost')
    parser.add_option("--ftp_port",
                      nargs=1,
                      dest="ftp_port",
                      help="Server port to bind on.",
                      default=2121)

    options = parser.parse_args()[0]

    authorizer = ftpserver.DummyAuthorizer()
    authorizer.add_anonymous('/', perm=('r', 'w'))

    address = (options.ftp_host, options.ftp_port)
    if options.ftp_host != 'localhost':
        import warnings
        warnings.warn(
            'Running aksyftpd on non-local address %s' % options.ftp_host,
            RuntimeWarning)

    sampler = Devices.get_instance(options.sampler_type, options.connector)

    try:
        ftp_handler = ftpserver.FTPHandler
        ftp_handler.authorizer = authorizer
        ftp_handler.banner = "aksyftpd (pyftpd version %s) ready." % ftpserver.__ver__
        ftp_handler.abstracted_fs = AksyFtpFS(sampler)

        ftpd = ftpserver.FTPServer(address, ftp_handler)
        ftpd.max_cons = 256
        ftpd.max_cons_per_ip = ftpd.max_cons
        ftpd.serve_forever()
    finally:
        sampler.close()
예제 #13
0
파일: put.py 프로젝트: svanzoest/aksy
def main():
    parser = create_option_parser()
    (options, filelist) = parser.parse_args()

    if len(filelist) == 0:
        parser.error("At least one or more files/directories should be specified")
  
    to_upload = collect_files(filelist)
    
    if len(to_upload) == 0:
        parser.error("Nothing to upload: no supported files found")
    
    z48 = Devices.get_instance(options.sampler_type, options.connector)    
    
    if options.programName is not None:
        print 'Uploading files.'
        upload_files(z48, to_upload, filterProgram=options.programName)
    elif options.drumProgramName:
        print 'Uploading files.'
        print 'Building drum program.', options.drumProgramName
        build_drum_program(z48, to_upload, options.drumProgramName)
        upload_files(z48, to_upload, filterProgram=options.drumProgramName)
    else:
        upload_files(z48, to_upload)
예제 #14
0
파일: aksyshell.py 프로젝트: svanzoest/aksy
                 InterpClass=None, *args, **kwds):
        wx.SplitterWindow.__init__(self, parent, id, pos, size, style, name)
        self.shell = py.shell.Shell(parent=self, introText=intro,
                           locals=locals, InterpClass=Interpreter,
                           *args, **kwds)

        self.editor = self.shell
        self.notebook = wx.Notebook(parent=self, id=-1)
        #self.filling = py.filling.Filling(parent=self.notebook,
        #                       rootObject=rootObject,
        #                       rootLabel=rootLabel,
        #                       rootIsNamespace=rootIsNamespace)
        # Add aksy vars
        self.shell.interp.introText = intro
        self.shell.interp.copyright = '' 
        self.shell.interp.locals['z48'] = rootObject
        
        # Add programs, samples, multis in memory
        # self.notebook.AddPage(page=self.filling, text='Namespace', select=True)
        self.SplitHorizontally(self.shell, self.notebook, 300)
        self.SetMinimumPaneSize(1)

if __name__ == '__main__':
    app = wxPySimpleApp()
    frame = Frame(None, "Aksy")
    root = Devices.get_instance('mock_z48')
    win = AksyShell(
            frame, intro=intro, rootLabel="Z48",
            rootIsNamespace=True, rootObject=root)
    app.MainLoop()
예제 #15
0
def main(): 
    z48 = Devices.get_instance("z48", "usb")
    #z48 = None
    win = MainProgramsWindow(z48)
    win.connect("delete-event", gtk.main_quit)
    gtk.main()
예제 #16
0
파일: aksyshell.py 프로젝트: svanzoest/aksy
                                    *args,
                                    **kwds)

        self.editor = self.shell
        self.notebook = wx.Notebook(parent=self, id=-1)
        #self.filling = py.filling.Filling(parent=self.notebook,
        #                       rootObject=rootObject,
        #                       rootLabel=rootLabel,
        #                       rootIsNamespace=rootIsNamespace)
        # Add aksy vars
        self.shell.interp.introText = intro
        self.shell.interp.copyright = ''
        self.shell.interp.locals['z48'] = rootObject

        # Add programs, samples, multis in memory
        # self.notebook.AddPage(page=self.filling, text='Namespace', select=True)
        self.SplitHorizontally(self.shell, self.notebook, 300)
        self.SetMinimumPaneSize(1)


if __name__ == '__main__':
    app = wxPySimpleApp()
    frame = Frame(None, "Aksy")
    root = Devices.get_instance('mock_z48')
    win = AksyShell(frame,
                    intro=intro,
                    rootLabel="Z48",
                    rootIsNamespace=True,
                    rootObject=root)
    app.MainLoop()
예제 #17
0
from unittest import TestCase, TestLoader
from aksyosc import connector
from aksy.device import Devices
from aksyosc.osc import decodeOSC

MOCK_SAMPLER = Devices.get_instance('mock_z48', 'mock')
CMDS = [MOCK_SAMPLER.sampletools.get_bit_depth_cmd]

class OSCConnectorTest(TestCase):
    def test_creat_alt_req_msg(self):
        msg = connector.OSCConnector.create_alt_req_msg(1, CMDS, (), None)
        expected = '#bundle\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18/altoperations\x00\x00,iN\x00\x00\x00\x00\x01\x00\x00\x00 /sampletools/get_bit_depth\x00\x00,\x00\x00\x00'
        self.assertEquals(str(expected), str(msg))

    def test_parse_alt_req_msg(self):
        msg = connector.OSCConnector.create_alt_req_msg(1, CMDS, (), None)
        self.assertEquals(['#bundle', 0L, ['/altoperations', ',iN', 1, None],
                          ['/sampletools/get_bit_depth', ',']], decodeOSC(msg))
            
def test_suite():
    testloader = TestLoader()
    return testloader.loadTestsFromName('tests.aksyosc.tests.test_connector')

예제 #18
0
파일: server.py 프로젝트: svanzoest/aksy
        self.bind((address, port))
        self.response = None 
        print '%s started at addr: %s:%i\n' % (
           self.__class__.__name__, address, port)

    def handle_connect(self):
        pass
        
    def writable(self):
        return self.response is not None

    def handle_write(self):
        self.sendto(self.response.get_message(), 0, self.response.get_address())
        self.response = None

    def handle_read(self):
        data, address = self.recvfrom(8192)
        resp_data = self._callbackMgr.handle(data)
        self.response = Envelope(address, resp_data)
    
if __name__ == "__main__":
    parser = create_option_parser()
    options = parser.parse_args()[0]
    from aksy.device import Devices
    z48 = Devices.get_instance('mock_z48', None)
    server = OSCServer(options.address, options.port,  SamplerCallbackManager(z48))
    try:
        asyncore.loop()
    except KeyboardInterrupt:
        asyncore.close_all()
예제 #19
0
from unittest import TestCase, TestLoader
import logging, time, os.path, os

from aksyx import AkaiSampler
from aksy.device import Devices
from aksy.devices.akai import sysex_types

TESTDIR = os.path.abspath(os.path.split(__file__)[0])
TESTFOLDER_NAME = "test%s" % time.time()
AKSY_RUN_SLOW_TESTS =  bool(os.environ.get("AKSY_RUN_SLOW_TESTS", False))
LOG = logging.getLogger('aksy')

z48 = Devices.get_instance('mock_z48', 'mock')

class TestDisktools(TestCase):
    def setUp(self):
        self.selectFirstDisk()
        z48.disktools.create_folder(TESTFOLDER_NAME)
        
    def tearDown(self):
        z48.disktools.open_folder("")
        z48.disktools.delete(TESTFOLDER_NAME)
        
    def selectFirstDisk(self):
        disks = z48.disktools.get_disklist()
        if len(disks) > 0:
            z48.disktools.select_disk(disks[0][0])
        else:
            LOG.error("selectFirstDisk: no disks found")

    def selectFirstFolder(self):