diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
| commit | 6d8bdc65446a704d0750217efd05532fc641ea7d (patch) | |
| tree | 8ae6d698b3c9801750a8b117b3842fb369872a3a /static/openbsd/man4/speaker.4 | |
| parent | 2f467bd7ff8f8db0dafa40426166491d7f57f368 (diff) | |
docs: OpenBSD Man Pages Added
Diffstat (limited to 'static/openbsd/man4/speaker.4')
| -rw-r--r-- | static/openbsd/man4/speaker.4 | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/static/openbsd/man4/speaker.4 b/static/openbsd/man4/speaker.4 new file mode 100644 index 00000000..89add7b3 --- /dev/null +++ b/static/openbsd/man4/speaker.4 @@ -0,0 +1,231 @@ +.\" $OpenBSD: speaker.4,v 1.12 2024/07/18 05:44:46 jmc Exp $ +.\" $NetBSD: speaker.4,v 1.9 1998/08/18 08:16:56 augustss Exp $ +.\" +.\" Copyright (c) 1993 Christopher G. Demetriou +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by Christopher G. Demetriou. +.\" 3. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd $Mdocdate: July 18 2024 $ +.Dt SPKR 4 +.Os +.Sh NAME +.Nm speaker , +.Nm spkr +.Nd console speaker device driver +.Sh SYNOPSIS +.Cd "spkr0 at pcppi?" +.Sh DESCRIPTION +The +.Nm +device driver allows applications to control the built-in speaker on +machines providing a PCPPI speaker interface. +.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 +.Fn open +when another process has the device locked will return \-1 with an +.Er EBUSY +error indication. +Writes to the device are interpreted as +.Dq play strings +in a simple ASCII melody notation. +An +.Fn ioctl +for tone generation at arbitrary frequencies is also supported. +.Pp +Sound-generation does +.Em 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 +.Fn ioctl +on a speaker file descriptor to control the speaker driver directly; +definitions for the +.Fn ioctl +interface are in +.In dev/isa/spkrio.h . +The +.Vt 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 ioctls. +The +.Dv SPKRTONE +ioctl accepts a pointer to a single tone structure as a third argument and +plays it. +The +.Dv SPKRTUNE +ioctl 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 modelled on the PLAY statement conventions of +IBM BASIC 2.0. +The MB, MF and X primitives of PLAY are not useful in a UNIX environment and +are omitted. +The +.Dq octave-tracking +feature is also 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 +.Dq 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 xxx +.It 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 accidental sign , +one of +.Ql # , +.Ql + , +or +.Ql - ; +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 O Aq Ar n +If +.Ar n +is numeric, this sets the current octave. +.Ar n +may also be one of +.Sq L +or +.Sq 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 +.Qq olbc +will be played as +.Qq olb>c , +and +.Qq olcb +as +.Qq olc<b . +Octave locking is disabled for one letter note following by +.Ql > , +.Ql < , +and +.Ql O[0123456] . +.Bd -literal -offset indent +> -- bump the current octave up one. +< -- drop the current octave down one. +.Ed +.It N Aq Ar n +Play note +.Ar n , +.Ar n +being 1 to 84 or 0 for a rest of current time value. +May be followed by sustain dots. +.It L Aq Ar n +Sets the current time value for notes. +The default is L4, quarter notes. +The lowest possible value is 1; values up to 64 are accepted. +L1 sets whole notes, L2 sets half notes, L4 sets quarter notes, etc. +.It P Aq Ar n +Pause (rest), with +.Ar n +interpreted as for L. +May be followed by sustain dots. +May also be written +.Ql ~ . +.It T Aq Ar n +Sets the number of quarter notes per minute; default is 120. +Musical names for common tempi are: +.Bl -column "Description" "Larghissimo" "Beats per minute" -offset indent +.It Em "Description" Ta Em "Tempo" Ta Em "Beats per Minute" +.It "very slow" Ta Larghissimo Ta 40\(en60 +.It "very slow" Ta Largo Ta 40\(en60 +.It "very slow" Ta Larghetto Ta 60\(en66 +.It "very slow" Ta Grave Ta 60\(en66 +.It "very slow" Ta Lento Ta 60\(en66 +.It "slow" Ta Adagio Ta 66\(en76 +.It "slow" Ta Adagietto Ta 66\(en76 +.It "medium" Ta Andante Ta 76\(en108 +.It "medium" Ta Andantino Ta 76\(en108 +.It "fast" Ta Moderato Ta 108\(en120 +.It "fast" Ta Allegretto Ta 108\(en120 +.It "fast" Ta Allegro Ta 120\(en168 +.It "fast" Ta Vivace Ta 120\(en168 +.It "fast" Ta Veloce Ta 120\(en168 +.It "very fast" Ta Presto Ta 168\(en208 +.It "very fast" Ta Prestissimo Ta 168\(en208 +.El +.It M[LNS] +Set articulation. +MN (N for normal) is the default; the last 1/8th of the note's value is rest +time. +You can set ML for legato (no rest space) or MS (staccato) 1/4 rest space. +.El +.Pp +Notes (that is, CDEFGAB or 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 +Whitespace in play strings is simply skipped and may be used to separate +melody sections. +.Sh FILES +.Bl -tag -width Pa -compact +.It Pa /dev/speaker +.El +.Sh SEE ALSO +.Xr intro 4 , +.Xr pcppi 4 +.Sh AUTHORS +.An Eric S. Raymond Aq Mt esr@snark.thyrsus.com , +Feb 1990 +.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. +.Pp +There is no volume control. +.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. |
