News for hackers. Stuff that matters.
Re:8bit.js: Write music using 8bit oscillation sounds by przemoc on Thursday August 22, 2013 @05:35AM (#6256121)
I like the idea, but providing the notes is extremely tedious here. In my old PCSpk (PC-Speaker Server & Client) I made up following notation (excerpt from README):

  first 3-digit number is integer - tempo (bpm)
  next are space seperated values TOL, where:
  T is letter - tone: C,d(des),D,e(es),E,F,g(ges),G,a(as),A,B,H,P(pause)
  O is digit - octave: 0-9
  L is digit/letter - length: L=0-9,A-Z <=> 1/(L+1)
J.S.Bach - Fugue in D minor (fragment):

  240 A47 G47 A47 F47 A47 E47 A47 D47 A47 d47 A47 D47 A47 E47 A47 F47 A47 A37 A47 H37 A47 d47 A47 D47 A47 d47 A47 D47 A47 E47 A47 D43
I've written also Siemens ringtone converter to above format in gawk (GNU awk).

http://git.io/siemens.gawk

EDIT: I just realized that you may wonder what is H there. For conciseness I'll quote Wikipedia on that matter http://en.wikipedia.org/wiki/B_(musical_note)

> However, in Germany, Central and Eastern Europe, and Scandinavia, the label B is used for what, above, is called B-flat, and the note a semitone below C is called H.

Re:8bit.js: Write music using 8bit oscillation sounds by kamkha on Thursday August 22, 2013 @10:55AM (#6257505)
There's a fairly well-established notation similar to what you made up: ABC notation (http://en.wikipedia.org/wiki/ABC_notation).
Re:8bit.js: Write music using 8bit oscillation sounds by przemoc on Thursday August 22, 2013 @12:32PM (#6258162)
Yes, back then (2005) I didn't know about ABC nor Lilypond (which I've started using since end of 2011, month after end of my music prototyping Ask HN thing: https://news.ycombinator.com/item?id=3089259, which will hopefully get some follow-up in the future).

To be honest, today I would slightly change my notation, to make it more readable, consistent and friendlier for English-speaking people:

  OTD[.]
  O - octave: [0-9]
  T - tone: C,d(es),D,e(s),E,F,g(es),G,a(s),A,b(es),B,P(ause)
  D - duration: [0-9A-Z] meaning:
                breve (double whole note) // for D==0
                1/D note                  // for D!=0
  . - dotted note, changes duration to:   // d - duration
                d(2 - 1/2^n)              // n - number of dots
Same fugue would start like:

  4A8 4G8 4A8 4F8 4A8 4E8 4A8 4D8 4A8 4d8 4A8 4D8 4A8
which is so much more better...

Why I didn't do it like that from the beginning? No idea...