PythonでRaspberryPi用のシンプルなSound2Lightアプリケーションを開発しようとしています。Ian Halpern(https://github.com/ianhalpern/Impulse)によって作成されたImpulseライブラリを使用しています
しかし、私は最初にオーディオアレイインパルスから3つの値(Sub、Mid、Hi)を抽出しようとしました。
これはコードです:
#!/usr/bin/env python
import sys, os, time
import impulse
def draw ( ):
fft = True
audio_sample_array = impulse.getSnapshot( fft )
if fft:
ffted_array = list( audio_sample_array )
# start drawing spectrum
red = 0
green = 0
blue = 0
for i in range(0,20):
blue += ffted_array[i]
for i in range(21,41):
green += ffted_array[i]
for i in range(42,62):
red += ffted_array[i]
print red,
print blue,
print green
return False
def main(args):
try:
while True:
draw()
time.sleep(1)
except KeyboardInterrupt:
pass
return True
if __name__ == '__main__':
try:
import ctypes
libc = ctypes.CDLL('libc.so.6')
libc.prctl(15, os.path.split( sys.argv[ 0 ] )[ 1 ], 0, 0, 0)
except:
pass
sys.exit( main( sys.argv ) )
main( sys.argv )
ただし、このコードは私のラップトップ(archlinux x64 python 2.7)で問題なく実行されています
[felix@felix-think impulse]$ python2 --version
Python 2.7.3
しかし、私のRapsberry Pi(Running Raspbian)で実行できません
pi@raspberrypi ~/music2light $ python --version
Python 2.7.3
これはErrorMessageです
pi@raspberrypi ~/music2light $ python main.py
Traceback (most recent call last):
File "main.py", line 56, in <module>
sys.exit( main( sys.argv ) )
File "main.py", line 40, in main
draw()
File "main.py", line 21, in draw
for i in range(0,20):
RuntimeError: More keyword list entries (5) than format specifiers (1)
私はそれをグーグルで試しましたが、何も見つかりませんでした...私が見つけた唯一のことは、エラーがgetargs.cファイル(http://svn.python.org/projects/python/branches/ )によってスローされることです。 release27-maint / Python / getargs.c)
if (IS_END_OF_FORMAT(*format)) {
PyErr_Format(PyExc_RuntimeError,
"More keyword list entries (%d) than "
"format specifiers (%d)", len, i);
return cleanreturn(0, freelist);
}
よろしくお願いします:)フェリックス