-
Notifications
You must be signed in to change notification settings - Fork 6
/
README.txt
137 lines (95 loc) · 4.28 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
1. Introduction
Originally conceived as a competitive cross-platform Ak.Sys, its author, Walco van Loon, got
realistic after a while - re-conceiving it as a complementary product for
Ak.Sys, focussing on batch functionality and scripting. Currently, it supports
~500 sysex functions and file transfers on the Z-Series/MPC4000 and some
functionality (disk functions, transfers and a bunch of untested modules) of
the S56K.
With Aksui included from 0.3 and onwards, the original goal of Aksy comes in
site again. Stay tuned.
And of 2017, this library seems to fulfill its promise: it still compiles and installs
on modern 64 bit systems, thanks to the stability of libusb and python.
Python 2.7 is now supported. Python 3 support is looked into.
2. Usage
Some simple examples:
from aksy.device import Devices
# initializes the sampler
sampler = Devices.get_instance('z48','usb')
# gets a file called "Noise.wav" from the sampler's memory
sampler.transfertools.get("Noise.wav")
# puts a file called "Pulse.wav" in the sampler's memory
sampler.transfertools.put("Pulse.wav")
# returns the number of disks
sampler.disktools.get_no_disks()
Besides disktools, the following modules are available for the Z-series:
multitools
songtools
programtools
keygrouptools
zonetools
sampletools
recordingtools
systemtools
multifxtools
frontpaneltools
sysextools
transfertools # wrapper around aksy extensions
See the examples/ directory for more interesting examples.
For an overview of the functions in a module, run pydoc:
pydoc src/aksy/devices/akai/z48/systemtools.py
3. Known issues and limitations in this release
3a. General
* Multiple samplers of the same product type are not supported; currently the
first found will be instantiated. Different samplers (eg. a combination of Z4,
MPC and a S5000) should work.
* Not all sampler methods have been tested extensively. Some are known to
not be implemented on the sampler itself, but there could be more methods
that are not supported by the sampler.
3b. Akai Sysex implementation pecularities
* set_current_by_name() and set_current_by_handle() don't complain about
invalid names or handles; the current item (if any) is unchanged.
* there is sysex support for manipulating EQ settings for Multis (Z48), but
they seem to have no audible effect.
* in the implementation of sample tools, a lot of documented commands are
actually not available. It's not possible to copy in-memory samples, and all
loop/region manipulation related commands are not implemented.
* if more than eight programtools.get_modulation_connection_cmd commands are
specified as an alternative operation, the system exclusive request times out.
4. Debugging and troubleshooting
Setting the USB_DEBUG environment variable can help to obtain more info from
the low level usb communication.
Common reasons for not being able to set up a USB connection are that the
device permissions are set too restrictive (read-only, root permissions). Eg.
Ubuntu mounts usb devices under /dev/bus/usb, so one should check
/dev/bus/usb/<bus id>/<device id> to verify. The output from lsusb can be used
to determine bus and device id. Highly likely the bus and device ids will
change when the sampler is reconnected; HAL can be used to automate the chown
on connect. See the config directory in the src distribution for an example
policy file (copy to /etc/hal/fdi/policy if you're using Ubuntu) and
permissions script (install in /usr/bin/set-permissions).
FUSE needs the string 'user_allow_other' in /etc/fuse.conf to be able to mount
as non-root user.
5. Developing
src/aksyx/
akaiusb library and python extension
src/aksy/
devices/akai/
common functionality for akai samplers.
akai/s56k
s56k specific code
akai/mock_z48
mock sampler implementation for testing
akai/z48
z48/mpc4000 specific code
src/aksyosc/
OSC support
src/aksyfs
filesystem implementations, currently FUSE and FTP
data
All *tools.py modules are generated from the data directory, which contains tab
delimited system exclusive descriptions from which they are generated.
The script which takes care of this is generate_module.py; but now the API
is stabilizing the code generation approach might be abandoned in the near
future.
data/z48
Contains the command specifications for the z48/mpc4000