Використання аудіоданих
у програмах мовою 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, яка містить записи звучання на баяні всіх звуків (основних і альтерованих) першої октави.
Перевірте роботу програми.


Зробіть висновок: які можливості відкриває винайдення способу кодування й зберігання звукових файлів.