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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
|
@c
@c This file is part of tk707.
@c
@c Copyright (C) 2000, 2001, 2002, 2003, 2004 Chris Willing and Pierre Saramito
@c
@c tk707 is free software; you can redistribute it and/or modify
@c it under the terms of the GNU General Public License as published by
@c the Free Software Foundation; either version 2 of the License, or
@c (at your option) any later version.
@c
@c Foobar is distributed in the hope that it will be useful,
@c but WITHOUT ANY WARRANTY; without even the implied warranty of
@c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@c GNU General Public License for more details.
@c
@c You should have received a copy of the GNU General Public License
@c along with Foobar; if not, write to the Free Software
@c Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@c
@c -------------------------------------------------------------
@c Installation
@c -------------------------------------------------------------
@node Installation,,, Top
@menu
* Building tk707::
* Configure options::
* Install::
* Running::
* Building the documentation::
* Comments and bugs corrections::
* My card has no midi render::
@end menu
@cindex Linux system
@cindex tcl/tk libraries
@cindex Alsa audio library
@cindex midi render
The TK-707 installation requires:
@itemize @bullet
@item C compiler: to compile the source code.
@item TCL/TK version 8.0 or later.
Tested up to TCL/TK 8.3. Available free from @url{http://www.scriptics.com}
@item Alsa: audio installation (at least version 0.5.0),
available free from @url{http://www.alsa-project.org}
@item a sound card supported by Alsa.
@end itemize
and, at least one of these MIDI renders:
@itemize @bullet
@item an internal MIDI render hardware in your card.
@item an external MIDI module with drum sounds (Tested Roland D-110 and TR-707).
@item or any Alsa supported basic
sound card together with the @code{timidity} or the @code{iiwusynth}
MIDI synthesis software installed.
@end itemize
Clearly, if you have neither a MIDI card nor an external MIDI module,
you can successfully manage MIDI files by a MIDI software sequencer.
See below.
So far tested on
@itemize @bullet
@item Linux - Debian 3.0 (kernel 2.4.18) with SB Live ! sound card
@item Linux - Slackware 7.0 (kernel 2.2.14) with ESS1868 sound card
@item Linux - Mandrak (kernel 2.2.13-7mdk)
@item Linux - Redhat 6.0 (kernel 2.2.5) with Ensonic 1370 sound card
@end itemize
@section Building @code{tk707}
@node Building tk707,,, Installation
@example
@cartouche
configure
make
@end cartouche
@end example
The program consists of Tcl/Tk for the gui and C code for outputting
the midi data.
The Tcl/Tk code is compiled with the C code.
The compiled target @code{tk707} is a self contained binary.
@c --------------------------------------------------------------------
@section Configure options
@node Configure options,,, Installation
@c --------------------------------------------------------------------
During the configuration step, you could also provide
to the @code{configure} script some
non-standard locations of the Alsa or Tcl/Tk libraries.
On my Debian 3.0 installation, I use:
@example
configure --with-tcl-includes=/usr/include/tcl8.3
@end example
A more general example writes:
@example
configure --with-alsa-prefix=/usr/sound/lib \
--with-alsa-inc-prefix=/usr/sound/include \
--with-tcl-includes=/new/include --with-tcl-libs=/usr/new/lib \
--with-tk-includes=/usr/new/include --with-tk-libs=/usr/new/lib
make
@end example
Enter @code{configure --help} for a complete list of available options.
@c In a previous method, the C code was compiled and becomes the interpreter for
@c the Tcl/Tk code which was left as the executable script.
@c
@c For normal execution there is little or no perceptible difference in
@c performance because since version 8.0 of Tcl/Tk the script is converted
@c to byte-code prior to execution. I have left the second method because during
@c development changes can be made to the Tcl/Tk script and then run without
@c a recompilation.
It could also be useful to send compiler options to the
@code{configure} script.
@example
CFLAGS="-O0" configure
make
@end example
Indeed, by default, @code{gcc} compiler
optimization flags are set to the maximum, i.e @code{-O9}. This
is not supported for old @code{gcc} versions, where this feature
failed on some combinations of Linux kernel versions and @code{gcc}
version (e.g. Mandrake with kernel @code{Linux-2.2.13-7mdk} and
@code{pgcc-2.91.66}). Either update our environment or use lower
optimization flags.
@c --------------------------------------------------------------------
@section Installation
@node Install,,, Installation
@c --------------------------------------------------------------------
@example
@cartouche
make install
@end cartouche
@end example
The default installation directory is @file{/usr/local/bin} but this can be
changed by using an extra configuration option:
@example
configure --prefix=/users/angela/music
make install
@end example
will build and install @code{tk707} into the installation directory
@file{/users/angela/music/bin} as @code{tk707}.
@section Running
@node Running,,, Installation
If installation was done as in previous step, and assuming the installation
directory is in your execution path, then the program is started with
@example
@cartouche
tk707
@end cartouche
@end example
@cindex demonstration file @file{demo.dat}
@cindex @code{File->Load} menu
A sample song is in @file{demo.dat} which can be
loaded from the @code{File->Load Demo} menu. After loading, click the @key{START}
button and you should hear something if your
hardware is set up correctly.
@cindex midi output port
When @code{tk707} is first started, a suitable output port needs to be selected.
A selection gui comes up before the main TK-707 window to make this choice.
The list on the right hand side should contain one or more entries from
which to choose (don't worry about the input port list on the left).
Double click on the available output port you want to use, and it should
be entered into the Selected Output box near the bottom. Now you can
click on the OK button to use the selected output port for this invocation
of TK-707. You can also click the SAVE button first to save this information
(in @file{~/.tk707rc}) so that you don't need to make the selection next time you
run TK-707. Note that @file{~/.tk707rc} is a plain text file which can be edited
by hand if you want to.
Alternatively, if you know what port you want to use, run @code{tk707} with
the @code{-p} option, e.g.
@example
tk707 -p 65:0
@end example
Use of the @code{-p} option overrides any setting in the @file{~/.tk707rc} file.
A list of suitable ports can also be obtained with the @code{-l} option, e.g.
@example
tk707 -l
@end example
@c --------------------------------------------------------------------
@section Building the documentation
@node Building the documentation,,, Installation
@c --------------------------------------------------------------------
@cindex file @file{tk707.info} documentation
The documentation in @file{.info} format, suitable for emacs,
is contained in the distribution. You can browse it:
@example
@cartouche
info -f tk707.info
@end cartouche
@end example
@cindex file @file{tk707.html} documentation
If you have the @code{texi2html} tool, the @code{html}
version has been generated during the installation:
@example
@cartouche
netscape tk707_toc.html
@end cartouche
@end example
@cindex file @file{tk707.dvi} documentation
If you have @TeX{} installed, a pretty version of the documentation
is available:
@example
@cartouche
make dvi
xdvi tk707.dvi
@end cartouche
@end example
@cindex file @file{tk707.ps} documentation
and also for printing:
@example
@cartouche
dvips tk707.dvi -o tk707.ps
lpr tk707.ps
@end cartouche
@end example
Now, read the documentation and enjoy @code{tk707}.
@c --------------------------------------------------------------------
@section Comments, bug corrections and future versions
@node Comments and bugs corrections,,, Installation
@c --------------------------------------------------------------------
We are keen for people to try it and send comments and suggestions.
Please, send comments,
corrections, additions, bugs etc.. to
@email{chris@@vislab.usyd.edu.au} and
@email{pierre.saramito@@imag.fr}
Future versions from the TK-707 home page:
@itemize @bullet
@item Australie: @url{http://www.vislab.usyd.edu.au/staff/chris/tk707}
@item Europe: @url{http://www-lmc.imag.fr/lmc-edp/Pierre.Saramito/tk707}
@end itemize
@c --------------------------------------------------------------------
@section My card has no midi render...
@node My card has no midi render,,, Installation
@c --------------------------------------------------------------------
@cindex midi render: @code{timidity} software
@cindex Alsa audio library
@cindex sound card without midi
Don't worry, you are able to hear midi file with
a basic audio sound card:
the @code{timidity} code is able to
provides an Alsa sequencer interface which receives
events and plays it in real-time.
@code{timidity} is a public domain code available
at @url{http://www.goice.co.jp/member/mo/timidity}.
On this mode, @code{timidity} works
purely as software (real-time) midi render.
There is no scheduling routine in this interface,
since all scheduling is done by Alsa sequencer core.
So, download @code{timidity} (at least version 2.10.0)
and install as follow:
@example
configure --enable-server --enable-alsaseq --enable-alsatest \
--enable-audio=alsa,wav,au,aiff,list,oss
make install
@end example
@cindex sound patch files (GUS)
@code{timidity} software emulates the best sound cards.
It requires some Gravis Ultra Sound (GUS) patches describing musical
instruments.
The public domain EAW sound patch suite can be downloaded at
@url{http://www.stardate.bc.ca/eawpatches/html/default.htm}
This his a complete and high quality library,
updated frequently.
Especially, download the @code{gsdrums} percussion instrument library.
Install these files in the @code{timidity} directory,
usually @code{/usr/share/timidity}.
For invoking Alsa sequencer interface, run @code{timidity} as follows:
@example
timidity -iA -B2,8 &
@end example
The fragment size can be adjustable. The smaller number gives
better real-time response. Then @code{timidity} shows new port numbers
which were newly created (128:0 and 128:1 below).
Finally, run @code{tk707}:
@example
tk707 -p 128:0
@end example
The @code{timidity} render is very flexible and rich, since you
can add any instrument in your library by using GUS patch files.
This modular approach is not always supported by all hardware
renders.
Thus, the software MIDI render solution is fruitful,
and could be installed, even if you have a hardware or
external MIDI solution.
@c TO BE TESTED !!!
@c ================
@c @c --------------------------------------------------------------------
@c @section I have no sound card at all...
@c @node I have no sound card at all,,, Installation
@c @c --------------------------------------------------------------------
@c
@c @cindex PC Speaker
@c
@c Don't worry, you are able to hear midi files generated by @code{tk707} !
@c Indeed, all computer have an internal PC Speaker, usually used for the beep,
@c and you will use it for more elaborated sounds.
@c
@c This procedure has been tested on a @code{2.2.8} kernel version.
@c Nevertheless, patches exists for others kernel versions.
@c @enumerate
@c @item Fist, download the additional PC Speaker module and kernel patch:
@c @itemize
@c @item @url{ftp.comunit.net/pub/soft/kernel/pcsndrv-1.2.tgz}
@c @item @url{ftp.comunit.net/pub/soft/kernel/patch-pcsp-soundcore-2.2.8.gz}
@c @end itemize
@c
@c @item Second, configure your kernel with modules, sound and
@c the @emph{Internal PC speaker support} (@code{CONFIG_PCSP}) as a module.
@c Install it as usual, and install modules too.
@c Reboot; then your new kernel is running,
@c and you are be able to hear @file{.au} and other audio files.
@c See the @code{INSTALL} file for details on the @code{pcsndrv-1.2}
@c tools, such as @code{vplay}.
@c
@c @item Current Alsa version @code{0.5.9c} at this date do not recognize
@c the PC Speaker as a sound card...
@c so, configure Alsa with the @code{--with-cards=snd-card-dummy} option
@c and install it.
@c
@c @item Next, configure and install @code{timidity} as a Alsa MIDI render
@c (See the previous paragraph).
@c This code will convert MIDI files to audio format, and then
@c send it to your Internal Speaker.
@c
@c @item Finally, configure and install @code{tk707} as usual.
@c
@c
@c @end enumerate
|