Make chess puzzle level (Kasparov to F3) winnable.
[naja.git] / tools / gen_sound.py
1 #!/usr/bin/env python
2
3 from subprocess import Popen, PIPE
4 import os
5 import sys
6
7
8 def gen_raw(description):
9     for chunk in description:
10         for blob in chunk.raw():
11             yield blob
12
13
14 def encode(filename, data):
15     print "Writing %s" % filename
16     p = Popen(('oggenc', '-o', filename, '--raw', '--raw-chan=1',
17                '--quiet', '-'),
18               stdin=PIPE, cwd='data/sounds')
19     for blob in data:
20         p.stdin.write(blob)
21     p.stdin.close()
22     assert p.wait() == 0
23
24
25 def write(basename, description):
26     return encode('%s.ogg' % basename, gen_raw(description))
27
28
29 def main():
30     sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
31     from data.sounds import SOUNDS
32     from naja.gen_sound import Chunk
33
34     sounds = SOUNDS.keys()
35     if len(sys.argv) > 1:
36         sounds = sys.argv[1:]
37     for sound in sounds:
38         description = SOUNDS[sound]
39         if isinstance(description, Chunk):
40             description = (description,)
41         write(sound, description)
42
43
44 if __name__ == '__main__':
45     main()