1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #!/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)
|