#!/usr/bin/python3 import argparse import sys from synth import * parser = argparse.ArgumentParser(description="Generate sinwaves") parser.add_argument("--output-freq", "-f", type=int, default=48000) parser.add_argument("--bit-size", "-B", choices=['8','16','32'], default='8', help="Output numbers bit size") parser.add_argument("--endianess", "-e", choices=['big', 'little'], default='little') parser.add_argument("--signed", "-S", action="store_true", default=False) parser.add_argument("--float32", "-F", action="store_true", default=False) parser.add_argument("--samples", "-s", type=int, default=4096) parser.add_argument("--channels", "-c", type=int, default=2) parser.add_argument("--angle-step", "-a", type=float, default=.075) args = parser.parse_args() args.bit_size = int(args.bit_size) print(args, file=sys.stderr) if args.float32: samples = sinwave_float32(step=args.angle_step, endianess=args.endianess) buff = bytearray([0 for _ in range(args.samples*args.channels*4)]) while True: for i in range(0,args.samples*args.channels,4): buff[i:i+4] = next(samples) sys.stdout.buffer.write(buff) exit(0) wv0 = sinwave(args.angle_step, bitsz=args.bit_size, signed=args.signed) samples = output_sampler(wv0, channels=args.channels, samples=args.samples, freq=args.output_freq, bitsz=args.bit_size, endianess=args.endianess, signed=args.signed) while True: smpl = next(samples) sys.stdout.buffer.write(smpl) exit(0)