bsvplay — convert BASICA music files to PCM
bsvplay [−i part] [−q part] [−r rate] [file...] | aplay −f dat −c 1
bsvplay will convert BASICA binary music files 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 BASICA format is defined 6-byte tuples of divisor, duration and pause.
struct bsv_insn { |
|||
uint16_t divisor; |
|||
uint16_t duration; /* in ticks */ |
|||
uint16_t af_pause; /* in ticks */ |
|||
}; |
where divisor specifies the divisor value that it directly handed to the x86 PC speaker. The following formula holds:
frequency = 1193181 / divisor; |