#!/bin/bash awk ' function wl() { rate = 64000; return (rate/160)*(0.87055^(int(rand()*10))); } BEGIN { srand(); wla = wl(); while (1) { wlb = wla; wla = wl(); if (wla == wlb) { wla *= 2; } d = (rand() * 10 + 5) * rate / 4; a = 0; b = 0; c = 128; ca = 40 / wla; cb = 20 / wlb; de = rate / 10; di = 0; for (i = 0; i < d; i++) { a++; b++; di++; c += ca + cb; if (a > wla) { a = 0; ca *= -1; } if (b > wlb) { b = 0; cb *= -1; } if (di > de) { di = 0; ca *= 0.9; cb *= 0.9; } printf("%c", c); } c = int(c); while (c != 128) { (c < 128) ? c++ : c--; printf("%c", c); } } }' | sox -t raw -r 64k -c 1 -e unsigned -b 8 - -d