Skip to content

Instantly share code, notes, and snippets.

@gigaherz
Created November 26, 2015 04:32
Show Gist options
  • Save gigaherz/cecfd88994381320f213 to your computer and use it in GitHub Desktop.
Save gigaherz/cecfd88994381320f213 to your computer and use it in GitHub Desktop.
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <stdio.h>
#include <windows.h>
#include <math.h>
struct NoteInfo_t {
const char * note;
float freq;
} notes[] = {
{ "C0", 16.35 },
{ "C#0", 17.32 }, { "Db0", 17.32 },
{ "D0", 18.35 },
{ "D#0", 19.45 }, { "Eb0", 19.45 },
{ "E0", 20.60 },
{ "F0", 21.83 },
{ "F#0", 23.12 }, { "Gb0", 23.12 },
{ "G0", 24.50 },
{ "G#0", 25.96 }, { "Ab0", 25.96 },
{ "A0", 27.50 },
{ "A#0", 29.14 }, { "Bb0", 29.14 },
{ "B0", 30.87 },
{ "C1", 32.70 },
{ "C#1", 34.65 }, { "Db1", 34.65 },
{ "D1", 36.71 },
{ "D#1", 38.89 }, { "Eb1", 38.89 },
{ "E1", 41.20 },
{ "F1", 43.65 },
{ "F#1", 46.25 }, { "Gb1", 46.25 },
{ "G1", 49.00 },
{ "G#1", 51.91 }, { "Ab1", 51.91 },
{ "A1", 55.00 },
{ "A#1", 58.27 }, { "Bb1", 58.27 },
{ "B1", 61.74 },
{ "C2", 65.41 },
{ "C#2", 69.30 }, { "Db2", 69.30 },
{ "D2", 73.42 },
{ "D#2", 77.78 }, { "Eb2", 77.78 },
{ "E2", 82.41 },
{ "F2", 87.31 },
{ "F#2", 92.50 }, { "Gb2", 92.50 },
{ "G2", 98.00 },
{ "G#2", 103.83 }, { "Ab2", 103.83 },
{ "A2", 110.00 },
{ "A#2", 116.54 }, { "Bb2", 116.54 },
{ "B2", 123.47 },
{ "C3", 130.81 },
{ "C#3", 138.59 }, { "Db3", 138.59 },
{ "D3", 146.83 },
{ "D#3", 155.56 }, { "Eb3", 155.56 },
{ "E3", 164.81 },
{ "F3", 174.61 },
{ "F#3", 185.00 }, { "Gb3", 185.00 },
{ "G3", 196.00 },
{ "G#3", 207.65 }, { "Ab3", 207.65 },
{ "A3", 220.00 },
{ "A#3", 233.08 }, { "Bb3", 233.08 },
{ "B3", 246.94 },
{ "C4", 261.63 },
{ "C#4", 277.18 }, { "Db4", 277.18 },
{ "D4", 293.66 },
{ "D#4", 311.13 }, { "Eb4", 311.13 },
{ "E4", 329.63 },
{ "F4", 349.23 },
{ "F#4", 369.99 }, { "Gb4", 369.99 },
{ "G4", 392.00 },
{ "G#4", 415.30 }, { "Ab4", 415.30 },
{ "A4", 440.00 },
{ "A#4", 466.16 }, { "Bb4", 466.16 },
{ "B4", 493.88 },
{ "C5", 523.25 },
{ "C#5", 554.37 }, { "Db5", 554.37 },
{ "D5", 587.33 },
{ "D#5", 622.25 }, { "Eb5", 622.25 },
{ "E5", 659.25 },
{ "F5", 698.46 },
{ "F#5", 739.99 }, { "Gb5", 739.99 },
{ "G5", 783.99 },
{ "G#5", 830.61 }, { "Ab5", 830.61 },
{ "A5", 880.00 },
{ "A#5", 932.33 }, { "Bb5", 932.33 },
{ "B5", 987.77 },
{ "C6", 1046.50 },
{ "C#6", 1108.73 }, { "Db6", 1108.73 },
{ "D6", 1174.66 },
{ "D#6", 1244.51 }, { "Eb6", 1244.51 },
{ "E6", 1318.51 },
{ "F6", 1396.91 },
{ "F#6", 1479.98 }, { "Gb6", 1479.98 },
{ "G6", 1567.98 },
{ "G#6", 1661.22 }, { "Ab6", 1661.22 },
{ "A6", 1760.00 },
{ "A#6", 1864.66 }, { "Bb6", 1864.66 },
{ "B6", 1975.53 },
{ "C7", 2093.00 },
{ "C#7", 2217.46 }, { "Db7", 2217.46 },
{ "D7", 2349.32 },
{ "D#7", 2489.02 }, { "Eb7", 2489.02 },
{ "E7", 2637.02 },
{ "F7", 2793.83 },
{ "F#7", 2959.96 }, { "Gb7", 2959.96 },
{ "G7", 3135.96 },
{ "G#7", 3322.44 }, { "Ab7", 3322.44 },
{ "A7", 3520.00 },
{ "A#7", 3729.31 }, { "Bb7", 3729.31 },
{ "B7", 3951.07 },
{ "C8", 4186.01 },
{ "C#8", 4434.92 }, { "Db8", 4434.92 },
{ "D8", 4698.63 },
{ "D#8", 4978.03 }, { "Eb8", 4978.03 },
{ "E8", 5274.04 },
{ "F8", 5587.65 },
{ "F#8", 5919.91 }, { "Gb8", 5919.91 },
{ "G8", 6271.93 },
{ "G#8", 6644.88 }, { "Ab8", 6644.88 },
{ "A8", 7040.00 },
{ "A#8", 7458.62 }, { "Bb8", 7458.62 },
{ "B8", 7902.13 },
{ NULL, -1 }
};
int main(int argc, char* argv[])
{
int Freq, Len;
if (argc >= 2) sscanf(argv[1], "%d", &Len);
else Len = 100;
if (argc >= 3)
{
if (strcmp(argv[2], "-") == 0)
{
Freq = -1;
}
else
{
bool found = false;
for (NoteInfo_t * info = notes; info->note; info++)
{
if (stricmp(argv[2], info->note) == 0)
{
// round to closest
Freq = floorf(info->freq+0.5);
found = true;
break;
}
}
if (!found)
{
sscanf(argv[2], "%d", &Freq);
}
}
}
else Freq = 440;
if (Freq < 0) printf("Silence: %4d ms... ", Len);
else printf("%7d: %4d ms... ", Freq, Len);
if (Freq < 0) Sleep(Len);
else Beep(Freq, Len);
printf("Ok\n");
return 0;
}
@echo off
echo Playing sound
echo.
echo úúFreq.: Time.
beep 500 261
beep 250 261
beep 500 293
beep 500 261
beep 500 349
beep 500 329
beep 250 -
beep 500 261
beep 250 261
beep 500 293
beep 500 261
beep 500 391
beep 500 349
beep 250 -
beep 500 261
beep 250 261
beep 500 523
beep 500 440
beep 500 349
beep 500 329
beep 500 293
beep 250 -
beep 500 466
beep 250 466
beep 500 440
beep 500 349
beep 500 391
beep 750 349
echo Done!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment