Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 14, 2017 22:02:38

Yuriy2038
Зарегистрирован: 2017-02-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Синтезатор Питон-Ардуино проект

Привет уважаемые программисты! Вдохновился видео на ютубе от Lucas Zanella {https://www.youtube.com/watch?v=Ttm62RBdOuo}, нашел выложенный им код на питоне, но с питоном почти не имел дел. Просьба помочь переделать код или объяснить мне как он работает и исправить ошибку: SyntaxError: multiple statements found while compiling a single statement.
Если можно, то прошу поставить комментарии для удобства восприятия в ключевых местах кода
Код:
#LAUNCHPAD V1.0 - lucaszanella.com - 13/06/2013
#
#

import _thread
import serial
import time
import pyaudio
import wave
import sys
version = ‘1.0’
#CLASS OF SAMPLES
class sample:
def __init__(self, bts, n_of_samples):
self.bts = bts
self.n_of_samples = n_of_samples
self.list =
self.stream =
self.pyList =
def load(self, list_of_samples):
if len(list_of_samples)==self.n_of_samples:
for self.a in range(0, self.n_of_samples):
self.list.append(self.a)
try:
self.list = wave.open(list_of_samples, ‘rb’)
except:
print (“Unexpected error:”, sys.exc_info())
raise
else:
print(“error: list_of_samples length is different from number os samples”)
def load_unic(self, index, lis_of_s):
self.list = wave.open(lis_of_s, ‘rb’)
def read(self, index):
return(self.list.readframes(self.bts))
def start(self):
for self.n in range(0, self.n_of_samples):
self.stream.append(“”)
self.pyList.append(“”)
self.pyList = pyaudio.PyAudio()
self.stream = (self.pyList.open(format=self.pyList.get_format_from_width(self.list.getsampwidth()),
channels=self.list.getnchannels(),
rate=self.list.getframerate(),
output=True))
def reload(self, n):
self.stream = (self.pyList.open(format=self.pyList.get_format_from_width(self.list.getsampwidth()),
channels=self.list.getnchannels(),
rate=self.list.getframerate(),
output=True))
def rewind(self, index):
self.list.rewind()
def close(self):
for self.h in range(0, self.n_of_samples):
self.stream.stop_stream()
self.stream.close()
self.pyList.terminate()

#DEFINITIONS
bt = 3400 #bytes to read per time
#sync strings
thet = ‘abcdefghijklmnop’
thef = ‘qrstuvxwyz-+*123’
#//
pack = 0
size_pack = 16
pasta =
objetos =
samples_in =
samples =
musicas =
to_play =
command =
restart =
playing =
permission =
block =
count = 0
pasta.append ('packs/coca/')
pasta.append ('packs/daft2/')
pasta.append ('packs/altj/')
pasta.append ('packs/sk/')
pasta.append ('packs/nyanc/')
pasta.append ('packs/loops/')
pasta.append ('packs/synth_notes/')
pasta.append ('packs/test/')
pasta.append ('packs/paradise/')
pasta.append ('packs/skrillex/')
pasta.append ('packs/dub1/')
pasta.append ('packs/parting2/')
pasta.append ('packs/krun/')
pasta.append ('packs/havoc/')
pasta.append ('packs/piano2/')
pasta.append ('packs/vaski/')

qtd_packs = len(pasta)

for y in range(0, size_pack):
playing.append(False)
permission.append(True)
to_play.append(False)
command.append(False)
restart.append(False)
block.append(False)
block = True
block = True

for k in range(0, qtd_packs):
for n in range(1, size_pack+1):
samples_in.append (pasta+str(n)+'.wav')
samples.append(samples_in)
samples_in =


print('opening packs…')
for t in range(0, qtd_packs):
objetos.append(sample(bt, len(samples)))
objetos.load(samples)
objetos.start()
ss =
waiter = sample(bt, 1)
waiter.load(ss)
waiter.start()
print('done')
#if you want to pause everything
def verify():
return(True)

#//
def stop_all():
for o in range(0, size_pack):
to_play = False
def plays():
while True:
while verify():
for g in range(0, size_pack):
tv = False
for q in range(0, size_pack):
if to_play:
tv = True
if to_play:
j = objetos.read(g)
if j!='':
if tv:
objetos.stream.write(j)
else:
to_play = False
playing = False
command = False
restart = True
else:
time.sleep(0.0001)
def hold(h):
key = 0
ser = serial.Serial('COM6', 115200)
global pack;
count = 0
countmode = 0
npacks = qtd_packs-1
print(“waiting serial…”)
time.sleep(2)
print(“lucaszanella.com - Version: ”+version+“ python launchpad”)
print(“number of packs: ”+str(qtd_packs))

while True:
count +=1
#ser.flushInput()
m = ser.readline()
buff = str(ser.read(ser.inWaiting()))
nlocal = buff.rfind('n')
if nlocal!=0:
u = buff
if len(u)==18:
for x in range(0, size_pack):
if u==thef:
command = False
if u==thet:
if permission==True:
if command==False:
if to_play==True:
objetos.rewind(x)
if restart:
objetos.rewind(x)
if block:
if key!=x:
to_play = False
key = x
to_play = True
playing = True
command = True
if count>10:
count = 0
if u=='@':
countmode+=1
if countmode>100:
pack+=1
stop_all()
if pack>npacks:
pack=0
countmode=0
print(“Now in pack: ”+str(pack))


_thread.start_new_thread(hold, (0,))

plays()
#close the objects here if needed

Офлайн

#2 Фев. 19, 2017 01:40:10

Tenebras
Зарегистрирован: 2016-07-05
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

Синтезатор Питон-Ардуино проект

Вставьте: пожалуйста, код как полагается! В окне редактора сверху есть такая опция. Так код ни кто читать не будет.
Нажимаете на свиток с <>, выбираете там Python и между тегами пихаете Ваш код.

Отредактировано Tenebras (Фев. 19, 2017 01:40:41)

Офлайн

#3 Фев. 19, 2017 22:13:07

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Синтезатор Питон-Ардуино проект

Tenebras
Так код ни кто читать не будет.
имхо и после тэгов никто читать не будет
http://ru.stackoverflow.com/questions/551710/ошибка-python-syntaxerror-multiple-statements-found-while-compiling-a-single-s

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version