Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.TH JUKE 7
2
.SH NAME
3
juke \- music jukebox
4
.SH SYNOPSIS
5
.B juke
6
[
7
.B \-t
8
]
9
[
10
.B \-w
11
]
12
[
13
.B \-h
14
.I srvhost
15
]
16
[
17
.B \-s
18
.I srvname
19
]
20
.ift .sp 0.5
21
.ifn .sp
22
.B games/jukebox
23
[
24
.B \-t
25
]
26
[
27
.B \-w
28
]
29
.ift .sp 0.5
30
.ifn .sp
31
.B games/jukefs
32
[
33
.B \-m
34
.I mountpoint
35
]
36
[
37
.B \-s
38
.I srvname
39
]
40
[
41
.I mapfile
42
]
43
.SH DESCRIPTION
44
.I Jukebox
45
controls a playlist server
46
(see
47
.IR playlistfs (7))
48
through a graphical user interface.  It connects to a music database server which reads a set of
49
.I map
50
files that describe recordings and their location.  Currently, there is
51
one set of maps, mostly for classical music, with some jazz and other stuff
52
thrown in.  These are served by
53
.BR jukefs ,
54
which presents a file system conventionally mounted at
55
.BR /mnt/juke .
56
The playlist, explained below, is managed by a file system implemented by
57
.IR playlistfs (7)
58
and normally mounted on
59
.BR /mnt .
60
.PP
61
.I Jukebox
62
is most easily started through the
63
.I juke
64
shell script.
65
.PP
66
.I Jukebox
67
has four windows, which can be selected by clicking the appropriate tab
68
at the top of the window.
69
.PP
70
Above the tab are nine buttons and a volume slider.  The
71
.ift buttons, shown below,
72
.ifn buttons
73
are named, from left to right,
74
.IR Exit ,
75
.IR Pause ,
76
.IR Play ,
77
.IR Halt ,
78
.IR Back ,
79
.IR Forward ,
80
.IR Root ,
81
.IR Delete ,
82
and
83
.IR Help .
84
The buttons are
85
.I active
86
when they are displayed in dark green (or red).  When they are pale blue
87
they are
88
.IR inactive .
89
The Exit button is always active; it exits the program (but leaves the playlist and music database
90
servers running).
91
.PP
92
The
93
.I browse
94
window is for browsing through the music and selecting music to play.
95
Browsing down in the music hierarchy is done by clicking button one on
96
an item.  Clicking button three goes back up.
97
Clicking button two recursively adds all files below the selected item to
98
the
99
.IR "play list" .
100
.PP
101
The selected music is displayed in the
102
.I playlist 
103
window.
104
The track currently playing is shown in the
105
.I playing
106
window.
107
.PP
108
The
109
.I Root
110
button browses back to the root.
111
.PP
112
The
113
.I Delete
114
button empties the playlist.
115
.PP
116
The
117
.I Help
118
displays a minimal on-line manual.
119
.PP
120
.I Play
121
starts playing at the beginning of the play list, or at the selected track in
122
the play list.
123
.PP
124
During play,
125
.IR Pause ,
126
.IR Stop ,
127
.IR Back ,
128
and
129
.I Forward
130
are active.
131
.I Back
132
and
133
.I Forward
134
go back or forward a track at a time.  The other buttons do the obvious thing.
135
.PP
136
The
137
.B \-t
138
flag chooses a tiny font, useful for handhelds.
139
.PP
140
The
141
.B \-w
142
flag creates the jukebox in a new window.  Normally, the jukebox takes over
143
the window in which it is invoked.
144
.PP
145
The
146
.B \-s
147
flag specifies the name under which the file descriptors of the playlist and databse servers are posted
148
in /srv.  This allows two or more play list servers to exist on one platform, e.g., when
149
there are several audio devices.  The default value of the flag is
150
.B $\f2user\fP
151
for a playlist server at
152
.B /srv/playlistfs.$\f2user\fP
153
and a database server at
154
.BR /srv/jukefs.$\f2user\fP .
155
.sp
156
.LP
157
.B Jukefs
158
reads a set of
159
.I maps
160
describing the music data, builds an in-memory database, and provides
161
lookup service to
162
.IR jukebox .
163
The default map is
164
.BR /sys/lib/music/map .
165
It consists of a hierarchical set of
166
.IR objects .
167
Each object has a type, a value, zero or more attribute-value
168
pairs and zero or more subobjects.    An object consists of the
169
type, followed by its contents between curly brackets.
170
Attribute value pairs consist
171
of a single line containing an attribute name, an equals sign, and
172
a value.
173
The value of an object is any text not containing curly brackets or equals
174
signs.  Here is an example:
175
.EX
176
.ps -2
177
.vs -2p
178
.sp
179
category {
180
	composer = mahler
181
 
182
	Gustav Mahler
183
	(1860 — 1911)
184
 
185
	work {
186
		path {classic/mahler}
187
		class = symphonic
188
		orchestra = rfo
189
		conductor = Waart,~Edo~de
190
 
191
		Symphony Nº 5 in c♯ (RFO, Vienna)
192
		performance{
193
			Radio Filharmonisch Orkest Holland
194
			Edo de Waart, conductor
195
 
196
			recorded: Musikverein, Vienna, May 6, 1996
197
		}
198
		command {number}
199
		track {
200
			Trauermarsch (In gemessenem Schritt. Streng. Wie ein Kondukt)
201
			time {13:55}
202
			file {034.pac}
203
		}
204
		track {
205
			Stürmisch bewegt, mit größter Vehemenz
206
			time {15:34}
207
			file {035.pac}
208
		}
209
		track {
210
			Scherzo (Kräftig, nicht zu schnell)
211
			time {18:54}
212
			file {036.pac}
213
		}
214
		track {
215
			Adagietto (Sehr Langsam)
216
			time {10:01}
217
			file {037.pac}
218
		}
219
		track {
220
			Rondo–Finale (Allegro)
221
			time {15:44}
222
			file {038.pac}
223
		}
224
	}
225
}
226
.EE
227
.LP
228
This example shows a
229
.I category
230
object for the composer Gustav Mahler (the value consists of the two
231
lines `Gustav Mahler' and `(1860 — 1911)') with one subobject, a
232
.I work
233
object whose value is `Symphony Nº 5 in c♯ (RFO, Vienna)'.  The work object
234
contains six subobjects: one
235
.I performance
236
object and five
237
.I track
238
objects.
239
.PP
240
.I Category
241
objects must contain exactly one attribute-value pair.  The attribute
242
names a subobject of the root under which this category object will
243
be placed.  Gustav Mahler, thus, will be placed in
244
Root→composer.
245
.IR Work ,
246
.IR Recording ,
247
.IR Part ,
248
and
249
.IR Track ,
250
objects all describe named containers for subunits.
251
A
252
.IR Lyrics ,
253
.IR Performance ,
254
or
255
.IR Soloists
256
object adds information to a
257
.IR Work ,
258
.IR Recording ,
259
.IR Part ,
260
or
261
.IR Track ,
262
object.  It should only contain text.
263
The same is true for a
264
.I Time
265
object; however, it should only be used adjacent to
266
.I File
267
objects and it should contain the running time of that file (this
268
is for future use).
269
.PP
270
A
271
.I File
272
object specifies a file to be played.  When the
273
.I Select
274
button is pressed, all file objects contained hierarchically in the
275
selected object are added to the playlist.
276
.PP
277
There are a number of pseudo objects:
278
.I Command
279
may contain either
280
.I sort
281
or
282
.IR number .
283
The
284
.I sort
285
command sorts the subobjects of the object it appears in by
286
.I key
287
or textual content.
288
The
289
.I number
290
commands prepends numbers to the texts of its subobjects
291
(e.g., for the parts in a symphony)
292
.PP
293
An
294
.I Include
295
object is replaced by the contents of the named file.
296
.PP
297
A
298
.I Key
299
object specifies a key for sorting subobjects.
300
.PP
301
Finally, a
302
.I Path
303
object specifies a path to be prepended to the files named in
304
hierarchically contained
305
.I File
306
objects.
307
.PP
308
The attribute-value value pairs arrange for entries to be made of the
309
current object in a
310
.I Category
311
object named by the attribute directly under the root.
312
.sp
313
.LP
314
The interface to the browsing database is through a file system
315
implemented by
316
.BR jukefs .
317
The file system synthesises a directory per object.  Each directory contains a set of files
318
describing the object's attributes:
319
.TP
320
.B children
321
contains a new-line separated list of subobject names.  For each name,
322
.I x
323
the directory
324
.BI /mnt/juke/ x
325
describes the subobject.
326
.TP
327
.B digest
328
contains a one-line summary of the object
329
.TP
330
.B files
331
is a new-line separated list of file objects contained in this object.
332
Each line consists of object name and file name.
333
.TP
334
.B fulltext
335
is the fulltextual value of the object.
336
.TP
337
.B key
338
contains the key by which objects are sorted
339
.TP
340
.B miniparentage
341
is a one-line summary of the objects and the path leading to it from the root.
342
This is the line displayed in the playlist and bottom browse windows of
343
.BR games/jukebox .
344
.TP
345
.B parent
346
is the object reference to the parent of this object.
347
.TP
348
.B parentage
349
is a full description of the path leading to this object and the object itself.
350
This is the string displayed in the top of the Browse and Playing windows
351
of
352
.BR games/jukebox .
353
.TP
354
.B text
355
is the text field of the object.
356
.TP
357
.B type
358
is the type of the object
359
.LP
360
.SH FILES
361
.TF /sys/lib/music/map
362
.TP
363
.B /sys/lib/music/map
364
Default map file
365
.TP
366
.B /mnt/juke
367
Default mount point for the music database.
368
.SH SOURCE
369
.B /sys/src/games/music
370
.SH SEE ALSO
371
.IR playlistfs (7),
372
.IR audio (7)