2016-01-16 2 views
2

Я студент-учредитель и новичок в кодировании. Я планирую сделать программу нотной записи, которую мы можем выбрать записку, которую мы хотим, и поставить на раб, и у меня есть кнопка воспроизведения, чтобы воспроизвести ее. Но я сталкиваюсь с проблемой, что использование pygame может воспроизводить только один mp3 за раз. Я пытаюсь проверить кодировку на основе учебника в Интернете, но все равно застрял.Смешивание музыки с использованием pygame

Есть ли какие-либо другие способы для меня сделать музыку для микширования?

Вот моя кодировка для части, которую я хочу попробовать, и микшировать звук вместе с разными mp3. Я получаю сообщение об ошибке с:

Traceback (most recent call last): File "C:/Users/User/Desktop/Python Sound 
Test/#def.py", line 23, in <module> 
    tk.Button(root, text=' C '.format(C), command=play).pack() 
NameError: name 'play' is not defined 

Код:

import pygame 
import Tkinter as tk 

pygame.mixer.init() 

C_NOTES = pygame.mixer.music.load("C.mp3") 
LC_NOTES = pygame.mixer.music.load("Lc.mp3") 
root=tk.Tk() 

def C(): 
    C_NOTES.play 

def LC(): 
    LC_NOTES.play 

def MiX(): 
    C_NOTES.play 
    LC_NOTES.play 




tk.Button(root, text=' C '.format(C), command=play).pack() 

tk.Button(root, text=' LC '.format(LC), command=play).pack() 

tk.Button(root, text=' MiX '.format(MiX), command=play).pack() 

root.mainloop() 
+0

Пожалуйста, задать конкретный вопрос. Это поможет вам и всем, кто может ответить на ваш вопрос. – mattsap

ответ

0

Попробуйте следующее:

import pygame 
    ... 
    sounds = [] 
    sounds.append(pygame.mixer.Sound('sound1')) 
    sounds.append(pygame.mixer.Sound('sound2')) 
    for sound in sounds: 
     sound.play() 
+0

Что вы подразумеваете под «...»? –

+0

введите здесь свой установочный код. – mattsap

0

.play не является действительным. Вы должны позвонить .play, используя .play().

play() является действительной командой pyagme, используемой для воспроизведения музыки в mp3 и wav файлах. Тем не менее, play кажется атрибутом класса, но его нет, поэтому он вызывает ошибку. Изменение кода:

C_NOTES = pygame.mixer.music.load("C.mp3") 
C_NOTES.play() 

играть несколько нот, просто положить их использовать все:

def play_all(): 
    C_NOTES.play() 
    #Enter rest of code here 

Теперь, если это по-прежнему недействителен, не забудьте инициализировать pygame с помощью:

pygame.init() 

В ответ на ваш комментарий: вы можете использовать pygame.mixer.music.play() и set_pos(), поскольку для mp3-песен используемая переменная может использоваться как количество секунд для воспроизведения:

C_NOTES.play(5) 
OTHERSONG.set_pos(5) 

Подробнее здесь: https://www.pygame.org/docs/ref/music.html

+0

Что делать, если я хочу, чтобы эти два mp3 начали играть в разное время? например: я играю первую музыку в начале и через 5 секунд. Я только хочу начать играть на другом? –

Смежные вопросы