juke 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  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. Gustav Mahler
  182. (1860 — 1911)
  183. work {
  184. path {classic/mahler}
  185. class = symphonic
  186. orchestra = rfo
  187. conductor = Waart,~Edo~de
  188. Symphony Nº 5 in c♯ (RFO, Vienna)
  189. performance{
  190. Radio Filharmonisch Orkest Holland
  191. Edo de Waart, conductor
  192. recorded: Musikverein, Vienna, May 6, 1996
  193. }
  194. command {number}
  195. track {
  196. Trauermarsch (In gemessenem Schritt. Streng. Wie ein Kondukt)
  197. time {13:55}
  198. file {034.pac}
  199. }
  200. track {
  201. Stürmisch bewegt, mit größter Vehemenz
  202. time {15:34}
  203. file {035.pac}
  204. }
  205. track {
  206. Scherzo (Kräftig, nicht zu schnell)
  207. time {18:54}
  208. file {036.pac}
  209. }
  210. track {
  211. Adagietto (Sehr Langsam)
  212. time {10:01}
  213. file {037.pac}
  214. }
  215. track {
  216. Rondo–Finale (Allegro)
  217. time {15:44}
  218. file {038.pac}
  219. }
  220. }
  221. }
  222. .EE
  223. .LP
  224. This example shows a
  225. .I category
  226. object for the composer Gustav Mahler (the value consists of the two
  227. lines `Gustav Mahler' and `(1860 — 1911)') with one subobject, a
  228. .I work
  229. object whose value is `Symphony Nº 5 in c♯ (RFO, Vienna)'. The work object
  230. contains six subobjects: one
  231. .I performance
  232. object and five
  233. .I track
  234. objects.
  235. .PP
  236. .I Category
  237. objects must contain exactly one attribute-value pair. The attribute
  238. names a subobject of the root under which this category object will
  239. be placed. Gustav Mahler, thus, will be placed in
  240. Root→composer.
  241. .IR Work ,
  242. .IR Recording ,
  243. .IR Part ,
  244. and
  245. .IR Track ,
  246. objects all describe named containers for subunits.
  247. A
  248. .IR Lyrics ,
  249. .IR Performance ,
  250. or
  251. .IR Soloists
  252. object adds information to a
  253. .IR Work ,
  254. .IR Recording ,
  255. .IR Part ,
  256. or
  257. .IR Track ,
  258. object. It should only contain text.
  259. The same is true for a
  260. .I Time
  261. object; however, it should only be used adjacent to
  262. .I File
  263. objects and it should contain the running time of that file (this
  264. is for future use).
  265. .PP
  266. A
  267. .I File
  268. object specifies a file to be played. When the
  269. .I Select
  270. button is pressed, all file objects contained hierarchically in the
  271. selected object are added to the playlist.
  272. .PP
  273. There are a number of pseudo objects:
  274. .I Command
  275. may contain either
  276. .I sort
  277. or
  278. .IR number .
  279. The
  280. .I sort
  281. command sorts the subobjects of the object it appears in by
  282. .I key
  283. or textual content.
  284. The
  285. .I number
  286. commands prepends numbers to the texts of its subobjects
  287. (e.g., for the parts in a symphony)
  288. .PP
  289. An
  290. .I Include
  291. object is replaced by the contents of the named file.
  292. .PP
  293. A
  294. .I Key
  295. object specifies a key for sorting subobjects.
  296. .PP
  297. Finally, a
  298. .I Path
  299. object specifies a path to be prepended to the files named in
  300. hierarchically contained
  301. .I File
  302. objects.
  303. .PP
  304. The attribute-value value pairs arrange for entries to be made of the
  305. current object in a
  306. .I Category
  307. object named by the attribute directly under the root.
  308. .sp
  309. .LP
  310. The interface to the browsing database is through a file system
  311. implemented by
  312. .BR jukefs .
  313. The file system synthesises a directory per object. Each directory contains a set of files
  314. describing the object's attributes:
  315. .TP
  316. .B children
  317. contains a new-line separated list of subobject names. For each name,
  318. .I x
  319. the directory
  320. .BI /mnt/juke/ x
  321. describes the subobject.
  322. .TP
  323. .B digest
  324. contains a one-line summary of the object
  325. .TP
  326. .B files
  327. is a new-line separated list of file objects contained in this object.
  328. Each line consists of object name and file name.
  329. .TP
  330. .B fulltext
  331. is the fulltextual value of the object.
  332. .TP
  333. .B key
  334. contains the key by which objects are sorted
  335. .TP
  336. .B miniparentage
  337. is a one-line summary of the objects and the path leading to it from the root.
  338. This is the line displayed in the playlist and bottom browse windows of
  339. .BR games/jukebox .
  340. .TP
  341. .B parent
  342. is the object reference to the parent of this object.
  343. .TP
  344. .B parentage
  345. is a full description of the path leading to this object and the object itself.
  346. This is the string displayed in the top of the Browse and Playing windows
  347. of
  348. .BR games/jukebox .
  349. .TP
  350. .B text
  351. is the text field of the object.
  352. .TP
  353. .B type
  354. is the type of the object
  355. .LP
  356. .SH FILES
  357. .BR /sys/lib/music/map :
  358. Default map file
  359. .BR /mnt/juke :
  360. Default mount point for the music database.
  361. .SH SOURCE
  362. .B /sys/src/games/music
  363. .SH SEE ALSO
  364. .IR playlistfs (7),
  365. .IR audio (7)