Last active
July 8, 2023 19:14
-
-
Save rounk-ctrl/9e381a2709c11e8fb2ba0b881adcaef0 to your computer and use it in GitHub Desktop.
dishery
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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