summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/spkr.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/spkr.4')
-rw-r--r--static/freebsd/man4/spkr.4247
1 files changed, 247 insertions, 0 deletions
diff --git a/static/freebsd/man4/spkr.4 b/static/freebsd/man4/spkr.4
new file mode 100644
index 00000000..64dfee27
--- /dev/null
+++ b/static/freebsd/man4/spkr.4
@@ -0,0 +1,247 @@
+.\"
+.Dd November 10, 2005
+.Dt SPKR 4
+.Os
+.Sh NAME
+.Nm speaker ,
+.Nm spkr
+.Nd console speaker device driver
+.Sh SYNOPSIS
+.Cd device speaker
+.In dev/speaker/speaker.h
+.Sh DESCRIPTION
+The speaker device driver allows applications to control the PC console
+speaker on an
+.Tn IBM-PC Ns --compatible
+machine running
+.Fx .
+.Pp
+Only one process may have this device open at any given time;
+.Xr open 2
+and
+.Xr close 2
+are used to lock and relinquish it.
+An attempt to open when
+another process has the device locked will return -1 with an
+.Er EBUSY
+error
+indication.
+Writes to the device are interpreted as `play strings' in a
+simple ASCII melody notation.
+An
+.Xr ioctl 2
+request
+for tone generation at arbitrary
+frequencies is also supported.
+.Pp
+Sound-generation does not monopolize the processor; in fact, the driver
+spends most of its time sleeping while the PC hardware is emitting
+tones.
+Other processes may emit beeps while the driver is running.
+.Pp
+Applications may call
+.Xr ioctl 2
+on a speaker file descriptor to control the
+speaker driver directly; definitions for the
+.Xr ioctl 2
+interface are in
+.In dev/speaker/speaker.h .
+The
+.Li tone_t
+structure used in these calls has two fields,
+specifying a frequency (in Hz) and a duration (in 1/100ths of a second).
+A frequency of zero is interpreted as a rest.
+.Pp
+At present there are two such
+.Xr ioctl 2
+calls.
+.Dv SPKRTONE
+accepts a pointer to a
+single tone structure as third argument and plays it.
+.Dv SPKRTUNE
+accepts a
+pointer to the first of an array of tone structures and plays them in
+continuous sequence; this array must be terminated by a final member with
+a zero duration.
+.Pp
+The play-string language is modeled on the PLAY statement conventions of
+.Tn IBM
+Advanced BASIC 2.0.
+The
+.Li MB ,
+.Li MF ,
+and
+.Li X
+primitives of PLAY are not
+useful in a timesharing environment and are omitted.
+The `octave-tracking'
+feature and the slur mark are new.
+.Pp
+There are 84 accessible notes numbered 1-84 in 7 octaves, each running from
+C to B, numbered 0-6; the scale is equal-tempered A440 and octave 3 starts
+with middle C.
+By default, the play function emits half-second notes with the
+last 1/16th second being `rest time'.
+.Pp
+Play strings are interpreted left to right as a series of play command groups;
+letter case is ignored.
+Play command groups are as follows:
+.Bl -tag -width CDEFGABxx
+.It Li CDEFGAB
+Letters A through G cause the corresponding note to be played in the
+current octave.
+A note letter may optionally be followed by an
+.Dq Em "accidental sign" ,
+one of # + or -; the first two of these cause it to be sharped one
+half-tone, the last causes it to be flatted one half-tone.
+It may
+also be followed by a time value number and by sustain dots (see
+below).
+Time values are interpreted as for the L command below.
+.It Ns Li O Sy n
+If
+.Sy n
+is numeric, this sets the current octave.
+.Sy n
+may also be one of
+.Li L
+or
+.Li N
+to enable or disable octave-tracking (it is disabled by default).
+When octave-tracking is on, interpretation of a pair of letter notes
+will change octaves if necessary in order to make the smallest
+possible jump between notes.
+Thus ``olbc'' will be played as
+``olb>c'', and ``olcb'' as ``olc<b''.
+Octave locking is disabled for
+one letter note following >, < and O[0123456].
+(The octave-locking
+feature is not supported in
+.Tn IBM
+BASIC.)
+.It Li >
+Bump the current octave up one.
+.It Li <
+Drop the current octave down one.
+.It Ns Li N Sy n
+Play note
+.Sy n ,
+.Sy n
+being 1 to 84 or 0 for a rest of current time value.
+May be followed by sustain dots.
+.It Ns Li L Sy n
+Sets the current time value for notes.
+The default is
+.Li L4 ,
+quarter or crotchet notes.
+The lowest possible value is 1; values up
+to 64 are accepted.
+.Li L1
+sets whole notes,
+.Li L2
+sets half notes,
+.Li L4
+sets quarter notes, etc.
+.It Ns Li P Sy n
+Pause (rest), with
+.Sy n
+interpreted as for
+.Li L Sy n .
+May be followed by
+sustain dots.
+May also be written
+.Li ~ .
+.It Ns Li T Sy n
+Sets the number of quarter notes per minute; default is 120.
+Musical
+names for common tempi are:
+.Bd -literal -offset indent
+ Tempo Beats Per Minute
+very slow Larghissimo
+ Largo 40-60
+ Larghetto 60-66
+ Grave
+ Lento
+ Adagio 66-76
+slow Adagietto
+ Andante 76-108
+medium Andantino
+ Moderato 108-120
+fast Allegretto
+ Allegro 120-168
+ Vivace
+ Veloce
+ Presto 168-208
+very fast Prestissimo
+.Ed
+.It Li M[LNS]
+Set articulation.
+.Li MN
+.Li ( N
+for normal) is the default; the last 1/8th of
+the note's value is rest time.
+You can set
+.Li ML
+for legato (no rest space) or
+.Li MS
+for staccato (1/4 rest space).
+.El
+.Pp
+Notes (that is,
+.Li CDEFGAB
+or
+.Li N
+command character groups) may be followed by
+sustain dots.
+Each dot causes the note's value to be lengthened by one-half
+for each one.
+Thus, a note dotted once is held for 3/2 of its undotted value;
+dotted twice, it is held 9/4, and three times would give 27/8.
+.Pp
+A note and its sustain dots may also be followed by a slur mark (underscore).
+This causes the normal micro-rest after the note to be filled in, slurring it
+to the next one.
+(The slur feature is not supported in
+.Tn IBM
+BASIC.)
+.Pp
+Whitespace in play strings is simply skipped and may be used to separate
+melody sections.
+.Sh FILES
+.Bl -tag -width /dev/speakerxx
+.It Pa /dev/speaker
+speaker device file
+.El
+.Sh SEE ALSO
+.Xr spkrtest 8
+.Sh HISTORY
+The
+.Nm
+device appeared in
+.Fx 1.0 .
+.Sh AUTHORS
+.An Eric S. Raymond Aq Mt esr@snark.thyrsus.com ,
+June 1990
+.Sh PORTED BY
+.An Andrew A. Chernov Aq Mt ache@astral.msk.su
+.Sh BUGS
+Due to roundoff in the pitch tables and slop in the tone-generation and timer
+hardware (neither of which was designed for precision), neither pitch accuracy
+nor timings will be mathematically exact.
+There is no volume control.
+.Pp
+The action of two or more sustain dots does not reflect standard musical
+notation, in which each dot adds half the value of the previous dot
+modifier, not half the value of the note as modified.
+Thus, a note dotted
+once is held for 3/2 of its undotted value; dotted twice, it is held 7/4,
+and three times would give 15/8.
+The multiply-by-3/2 interpretation,
+however, is specified in the
+.Tn IBM
+BASIC manual and has been retained for
+compatibility.
+.Pp
+In play strings which are very long (longer than your system's physical I/O
+blocks) note suffixes or numbers may occasionally be parsed incorrectly due
+to crossing a block boundary.