Використання аудіоданих
у програмах мовою Python
ПРАКТИЧНА РОБОТА 8
Завдання: створити програму Колекція звуків для доступу до звукових файлів та їх прослуховування; перегляд колекції має здійснюватися через систему текстових меню.
Обладнання: комп’ютер із середовищем програмування IDLE; папка sounds зі збірками звукових файлів формату MP3, кожна збірка — в окремій папці.
Теоретичні відомості
Засоби мови Python, необхідні для створення програми, вже розглянуті в 7 і 8 класах. Для роботи знадобляться:
• модуль playsound (див. § 18);
• списки, в яких зберігатимемо інформацію про окремі папки зі збірками звукових файлів, у такому форматі:
<Назва змінної> = ['<Назва збірки>', '<Шлях до файлів>', "<ім'я файлу1>",
"<ім'я файлу2>", ...]
• власні функції (§ 39, 40, 7 клас) для доступу й програвання файлів; розгалуження, цикли, відомі вам елементи мови.
Хід роботи
Під час роботи за комп’ютером дотримуйтеся правил безпеки.
1. Імпортуйте функцію для відтворення звуків із файлів:
from playsound import playsound
2. Створіть списки для кожної зі збірок файлів (у нас їх дві):
album1 = ['Абетка Морзе', './sounds/morse/', 'A.mp3', 'B.mp3', 'C.mp3']
album2 = ['Ноти', './sounds/notes/', 'do.mp3', 're.mp3', 'mi.mp3']
3. Створіть функцію для відтворення файлу зі збірки.
Аргументи функції: album — список з описом збірки; number — номер файлу в збірці.
def play_from_album(album,number):
playsound(album[1]+album[number+1])
4. Створіть функцію для виведення на екран інформації про збірку у вигляді нумерованого списку.
Аргумент функції: album — список з описом збірки.
def show_album(album):
print('\nНазва колекції: ', album[0])
for i in range(2, len(album)):
print(i–1, album[i])
5. Створіть функцію для введення з клавіатури номера файлу та перевірки його правильності.
Аргумент функції: maxN — найбільший допустимий номер.
def select_file(maxN):
n = int(input('Введіть номер файлу: '))
while n<1 or n>maxN:
n = int(input('Хибний номер. Спробуйте ще раз: '))
return n
6. Створіть функцію для опрацювання вибраної збірки за допомогою створених раніше функцій: виведення списку, вибору номера й відтворення вибраного файлу.
def process_album(album):
show_album(album)
number = select_file(len(album)–2)
play_from_album(album,number)
7. Створіть основну програму, в якій виводиться список збірок, а після вибору однієї з них — викликається функція для її опрацювання.
Введення замість номера збірки значення 0 має закінчувати роботу програми.
Хибні номери мають спричиняти повторне введення номера.
section = –1
while section != 0:
while section<0 or section>2:
print('\n-=#[ КОЛЕКЦІЯ ЗВУКІВ ]#=-\n')
print('1. Звуки англійської абетки Морзе')
print('2. Основні звуки першої октави (піаніно)')
print('\n0. Закінчити роботу')
section = int(input('\nВведіть номер колекції: '))
if section>0:
if section == 1:
process_album(album1)
elif section == 2:
process_album(album2)
section = –1
print('Бажаю успіхів! :)')
8. Запустіть програму, виправте за потреби помилки, і збережіть у файлі Практична робота 7.
Перевірте роботу в різних ситуаціях: введення неправильних номерів збірки або файлу тощо.
9. Доповніть списки іменами файлів, які є в папках morse і notes, але відсутні в програмі.
Перевірте роботу програми.
10. Додайте до програми ще одну збірку — з папки notes_b, яка містить записи звучання на баяні всіх звуків (основних і альтерованих) першої октави.
Перевірте роботу програми.
Зробіть висновок: які можливості відкриває винайдення способу кодування й зберігання звукових файлів.