]> git.lizzy.rs Git - plan9front.git/blob - sys/man/7/juke
Import sources from 2011-03-30 iso image - lib
[plan9front.git] / sys / man / 7 / juke
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 .BR /sys/lib/music/map :
362 Default map file
363 .BR /mnt/juke :
364 Default mount point for the music database.
365 .SH SOURCE
366 .B /sys/src/games/music
367 .SH SEE ALSO
368 .IR playlistfs (7),
369 .IR audio (7)