Skip to content

Instantly share code, notes, and snippets.

@rounk-ctrl
Last active July 8, 2023 19:14
Show Gist options
  • Save rounk-ctrl/9e381a2709c11e8fb2ba0b881adcaef0 to your computer and use it in GitHub Desktop.
Save rounk-ctrl/9e381a2709c11e8fb2ba0b881adcaef0 to your computer and use it in GitHub Desktop.
dishery
using System.IO;
using System.Media;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
using (var stream = new MemoryStream())
{
var writer = new BinaryWriter(stream);
writer.Write("RIFF".ToCharArray()); // chunk id
writer.Write((uint)0); // chunk size
writer.Write("WAVE".ToCharArray()); // format
writer.Write("fmt ".ToCharArray()); // chunk id
writer.Write((uint)16); // chunk size
writer.Write((ushort)1); // audio format
var channels = 1;
var sample_rate = 8000;
var bits_per_sample = 8;
writer.Write((ushort)channels);
writer.Write((uint)sample_rate);
writer.Write((uint)(sample_rate * channels * bits_per_sample / 8)); // byte rate
writer.Write((ushort)(channels * bits_per_sample / 8)); // block align
writer.Write((ushort)bits_per_sample);
writer.Write("data".ToCharArray());
var seconds = 60;
var data = new byte[sample_rate * seconds];
for (var t = 0; t < data.Length; t++)
{
data[t] = (byte)((t << 3) * new[] { 8 / 9.0, 1.0, 9 / 8.0, 6 / 5.0, 4 / 3.0, 3 / 2.0, 0 }[new[] { 0xd2d2c8, 0xce4088, 0xca32c8, 0x8e4009 }[t >> 14 & 3] >> (0x3dbe4688 >> ((t >> 10 & 15) > 9 ? 18 : t >> 10 & 15) * 3 & 7) * 3 & 7]);
}
writer.Write((uint)(data.Length * channels * bits_per_sample / 8));
foreach (var elt in data) writer.Write(elt);
writer.Seek(4, SeekOrigin.Begin); // seek to header chunk size field
writer.Write((uint)(writer.BaseStream.Length - 8)); // chunk size
stream.Seek(0, SeekOrigin.Begin);
new SoundPlayer(stream).PlaySync();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment