|
| 1 | +\input{include/settings.sty} |
| 2 | +\input{include/hyphenation.sty} |
| 3 | + |
| 4 | +\title{Python MCU} |
| 5 | +\author{Martin Zuther} |
| 6 | + |
| 7 | +\begin{document} |
| 8 | + |
| 9 | +\title{Python MCU} |
| 10 | + |
| 11 | +\subtitle{ |
| 12 | + \normalsize{\textrm{\textmd{ |
| 13 | + \vfill |
| 14 | + Mackie Host Controller written in Python |
| 15 | + \vfill |
| 16 | + \vspace{10em} |
| 17 | + \vfill |
| 18 | + }}} |
| 19 | +} |
| 20 | + |
| 21 | +\author{\normalsize\copyright{} 2011 |
| 22 | + \href{http://www.mzuther.de/}{Martin Zuther}} |
| 23 | + |
| 24 | +\date{\normalsize \emph{Last edited on \today}} |
| 25 | + |
| 26 | +\maketitle |
| 27 | + |
| 28 | +\tableofcontents |
| 29 | + |
| 30 | +\clearpage % layout |
| 31 | + |
| 32 | +\chapter{Mackie Control} |
| 33 | +\label{chap:mackie_control} |
| 34 | + |
| 35 | +\textbf{Mackie Control} (abbreviated to MCU), its predecessor |
| 36 | +\textbf{Logic Control} and their respective extension units |
| 37 | +(\textbf{XT}) are control surfaces that use a proprietary MIDI |
| 38 | +protocol to control digital audio workstations (DAWs), especially |
| 39 | +their mixing sections. However, these control surfaces have two |
| 40 | +drawbacks: they are definitely not cheap and require quite a bit of |
| 41 | +space. If these are no restrictions to you, by all means go and try |
| 42 | +them. But don't stop reading here, as this application might be |
| 43 | +useful for Mackie Control users as well. |
| 44 | + |
| 45 | +If, on the other hand, you have a certain lack of money or available |
| 46 | +space (or you have a controller that is simply too good to be |
| 47 | +exchanged for an MCU), you might have found just the application you |
| 48 | +need. It might not support your MIDI hardware controller yet, but if |
| 49 | +you know a bit of \textbf{Python} (or a programmer) it's pretty easy |
| 50 | +to change that. |
| 51 | + |
| 52 | + |
| 53 | +\chapter{Installation} |
| 54 | +\label{chap:python_mcu} |
| 55 | + |
| 56 | +Download and install the latest version of |
| 57 | +\href{http://www.python.org/}{Python 2.6} on your computer. As of |
| 58 | +August 2011, there is no installer of Python 2.6.7 for Microsoft |
| 59 | +Windows yet. Users of this operating system may download |
| 60 | +\href{http://www.python.org/download/releases/2.6.6/}{Python 2.6.6}, |
| 61 | +instead. |
| 62 | + |
| 63 | +Please also download and install these libraries: |
| 64 | + |
| 65 | +\begin{compactitem} |
| 66 | +\item \href{http://www.pyside.org//}{PySide} (version 1.0.5 or above) |
| 67 | +\item \href{http://www.pygame.org/}{pygame} (version 1.9.1 or above; |
| 68 | + please note that pygame's MIDI implementation is still in its |
| 69 | + infancy and may occasionally crash \application{Python MCU}) |
| 70 | +\end{compactitem} |
| 71 | + |
| 72 | +You'll also need virtual MIDI ports or cables to connect |
| 73 | +\application{Python MCU} to your DAW and hardware controller. I have |
| 74 | +successfully used \application{MidiYoke NT} (Microsoft Windows) and |
| 75 | +\application{JACK} (GNU/Linux), but others may work just as well. |
| 76 | + |
| 77 | +When you're done, simply run the file \path{PythonMcu.py} in the |
| 78 | +directory \path{src} by either double-clicking it or starting a |
| 79 | +console window, moving to the directory \path{src} and running |
| 80 | +\texttt{python PythonMcu.py}. |
| 81 | + |
| 82 | + |
| 83 | +\chapter{Tested configurations} |
| 84 | +\label{chap:tested_configurations} |
| 85 | + |
| 86 | +\section{Hardware controllers} |
| 87 | + |
| 88 | +\begin{compactitem} |
| 89 | +\item Novation ZeRO SL MkII |
| 90 | +\end{compactitem} |
| 91 | + |
| 92 | +\section{Microsoft Windows XP} |
| 93 | + |
| 94 | +\begin{compactitem} |
| 95 | +\item Ableton Live 8 |
| 96 | +\item Cockos Reaper 4 |
| 97 | +\item Emagic Logic 5 |
| 98 | +\end{compactitem} |
| 99 | + |
| 100 | +\section{Apple Mac} |
| 101 | + |
| 102 | +I haven't got a Mac, but things should work just as well. Please |
| 103 | +report working configurations to me. Thanks! |
| 104 | + |
| 105 | +\section{GNU/Linux} |
| 106 | + |
| 107 | +\begin{compactitem} |
| 108 | +\item ardour 2 \emph{(skipped a lot of commands, though)} |
| 109 | +\end{compactitem} |
| 110 | + |
| 111 | +\chapter{Extending Python MCU} |
| 112 | +\label{chap:extending_python_mcu} |
| 113 | + |
| 114 | +\application{Python MCU} consists of three parts: |
| 115 | + |
| 116 | +\begin{itemize} |
| 117 | + |
| 118 | +\item the \textbf{MackieHostControl} class communicates with a |
| 119 | + connected sequencer using the Mackie Control protocol, translating |
| 120 | + the raw protocol to something much easier to read and use |
| 121 | + |
| 122 | +\item the generalised \textbf{MidiControllerTemplate} class and its |
| 123 | + more specific relatives handle all the details of sending data to |
| 124 | + and receiving data from your hardware controller, again translating |
| 125 | + raw protocols to something easier to read and use |
| 126 | + |
| 127 | +\item finally, the \textbf{McuInterconnector} class connects the |
| 128 | + \textbf{MackieHostControl} and \textbf{MidiControllerTemplate} |
| 129 | + classes (and thus your DAW and hardware controller) with each other |
| 130 | + |
| 131 | +\end{itemize} |
| 132 | + |
| 133 | +This modular design means that the application happily works away with |
| 134 | +the irrelevant implementation details being effectively hidden from |
| 135 | +you. As long as you adhere to the internal protocol, you may easily |
| 136 | +extend \application{Python MCU} by deriving a class from |
| 137 | +\textbf{MidiControllerTemplate} to include your own controller. |
| 138 | + |
| 139 | +If all this means nothing to you, go find yourself a Python programmer |
| 140 | +(or learn Python yourself, it's rather easy and a lot of fun!). As |
| 141 | +long as you know the relevant MIDI implementation of your hardware |
| 142 | +controller and worked out a suitable layout of its buttons and |
| 143 | +controllers, hooking into \application{Python MCU} is pretty simple. |
| 144 | +If you don't believe me, just have a look into the \path{src/Hardware} |
| 145 | +directory. |
| 146 | + |
| 147 | +\input{include/gpl_v3.tex} |
| 148 | + |
| 149 | +\end{document} |
| 150 | + |
| 151 | + |
| 152 | +%%% Local Variables: |
| 153 | +%%% mode: latex |
| 154 | +%%% mode: outline-minor |
| 155 | +%%% TeX-command-default: "Rubber" |
| 156 | +%%% TeX-PDF-mode: t |
| 157 | +%%% ispell-local-dictionary: "british" |
| 158 | +%%% End: |
0 commit comments