現在は理解しているが、習ったばかりの頃はとある理由で理解できなかった。
これがポインタを理解できない後輩や学生を教える人の参考になったらなぁという思いで書いてみる。
Continue reading
僕がC言語のポインタを理解できなかったけど理解できた理由
Leave a reply
現在は理解しているが、習ったばかりの頃はとある理由で理解できなかった。
これがポインタを理解できない後輩や学生を教える人の参考になったらなぁという思いで書いてみる。
Continue reading
bmpファイルのヘッダ以外のデータの部分をそのまんまwav化した.
wavファイルのチャンネル数は1, 量子化ビット数は8bitとした. サンプリング周波数は自由に決められるがとりあえず44100kHzにした.
言語はC#. 本体データの読み取りにBinaryReader.ReadBytes()を使った. リトルエンディアンとかはとりあえず気にしないこととした.
usingとかは省く.
static void Main(string[] args)
{
string name = "bitmap_name";
BinaryReader br = new BinaryReader(File.OpenRead(name + ".bmp"));
// ファイルヘッダ
ushort bfType = br.ReadUInt16();
uint bfSize = br.ReadUInt32();
ushort bfReserved1 = br.ReadUInt16();
ushort bfReserved2 = br.ReadUInt16();
uint bfOffBits = br.ReadUInt32();
// 情報ヘッダ
uint biSize = br.ReadUInt32(); // 今回は40前提でやる.
int biWidth = br.ReadInt32();
int biHeight = br.ReadInt32();
ushort biPlanes = br.ReadUInt16();
ushort biBitCount = br.ReadUInt16();
uint biCompression = br.ReadUInt32();
uint biSizeImage = br.ReadUInt32();
int biXPixPerMeter = br.ReadInt32(); // 水平解像度[ppm]
int biYPixPerMeter = br.ReadInt32(); // 垂直解像度[ppm]
uint biClrUsed = br.ReadUInt32();
uint biCirImportant = br.ReadUInt32();
byte[] bytemap = br.ReadBytes((int)bfSize);
double[] doublemap = new double[bytemap.Length];
for (int i = 0; i < bytemap.Length; i++ )
{
doublemap[i] = ((double)bytemap[i] / 255.0);
}
// 自作wav管理クラスと書き込み関数 つまりうまい具合にwavにしてください(投げやり)
// コンストラクタの引数は sampleRate, channels, bitDepth(Eight(8) or Sixteen(16)), sampleRate
// Write関数の引数は, filename, volume(0.0 ~ 1.0)
new WaveFile(44100, 1, BitDepthChoices.Eight, doublemap).Write(name + ".wav", 0.1);
br.Close();
}
(24bit Color)
(24bit Color)
(8bit モノクロ)
wav→bmpをしてみる.
頑張ってきれいな絵になる音を探してみると面白そう?
色の割り当てとかどうしようか.
周波数領域のお絵かき(参考 – サウンドスペクトログラムに画像を埋め込む – 人工知能に関する断創録)
があったのでやってみたのだが何とも言えなかった. でも音として聞こえただけマシだったとは思う
3枚目の画像みたいなモノクロだと意外とそれっぽくなる???
画像としても綺麗で, なおかつ, 音声としてもまともに聞こえるような画像は果たしてこの世にあるのか