GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
qplay(1) hxtools qplay(1)

qplay — convert QBASIC play strings to PCM

qplay [-i part] [-q part] [-r rate] [file...] | aplay -f dat -c 1

qplay will convert QBASIC-style strings for its "PLAY" command to linear 16-bit raw PCM. Normally, you will be wanting to pipe it into a raw PCM player like aplay(1) to actually output it to a sound device. Be sure to lower the volume beforehand to avoid nasty surprises that come with square waves. By default, bsvplay will mix 1:1 square:sine waves to give a medium tone hardness.

-q part
Part to mix square waves in (default: 1.0)
-i part
Part to mix sine waves in (default: 1.0). If -q2 -i1 is specified for example, the final PCM output will consist of 2/3*squarepcm + 1/3*sinpcm.
-r rate
PCM sample rate (default: 48000 Hz)

The file format qplay expects is of course not BASIC, but raw PLAY command strings. Lines that start with a leading hash mark ('#') are ignored.

Commands are case insensitive and whitespace is mostly ignored. The original QBasic manpage is slightly incorrect; below is what qplay supports.

on
Sets the current octave. There are seven octaves, n = 0-6.
>
Increases octave by 1. The upper octave limit in QBasic was 6; qplay has a limit of 9.
<
Decreases octave by 1. Octave cannot drop below 0.

A - G
Plays a note in the range A-G. The number sign (#) or the plus sign (+) after a note specifies sharp; a minus sign (-) specifies flat. N n Plays note n. The range for n is 0-84 (in the seven possible octaves, there are 84 notes); n = 0 means a rest.

# or +
Follows a specified note and turns it into a sharp.
-
Follows a specified note and turns it into a flat.

L n
Sets the length of each note. L4 is a quarter note, L1 is a whole note, etc. The range for n is 1-64. The length may also follow the note when a change of length only is desired for a particualr note. For example, A16 can be equivalent to L16A.
MN
Sets "music normal" so that each note will play 7/8 of the time determined by the length (L).
ML
Sets "music legato" so that each note will play the full period set by lengt (L).
MS
Sets "music staccato" so that each note will play 3/4 of the time determined by the length (L).

P n
Specifies a pause, ranging from 1-64. This option corresponds to the length of each note, set with L n. T n Sets the "tempo", or the number of L4 quarter notes in one minute. The range for n is 32-255. The default for n is 120.
.
A period after a note causes the note to play 3/2 times the length determined by L (length) times T (tempo). The period has the same meaning as in a musical score. Multiple periods can appear after a note. Each period adds a length equal to one-half the length of the previous period. For example, the command A. plays 1 + 1/2, or 3/2 times the length, and A.. plays 1 + 1/2 + 1/4, or 7/4 times the length. Periods can appear after a pause (P). In this case, the pause length is scaled in the same way notes are scaled.

X(var)
Play the string in the variable var.

Variable definitions in qplay syntax are for example:

	$var = "CDEF";

and they must stand on a single line.

	echo "L16O2CDEFGAB>CDEFGAB>L4C" | qplay - | aplay -fdat -c1

will play a tone ladder.

aplay(1), bsvplay(1), hxtools(7)
2008-02-06 hxtools

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.