четвер, 2 грудня 2010 р.

СПО в российских школах

BASIC-256. Глава 3 Методические материалы

Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Сергей Ирюпин.

Предыдущие главы:

Глава 1: Знакомство с BASIC-256 – cкажи «Привет» Глава 2: Рисуем основные фигуры

Теперь, когда у нас есть цвет и графика, давайте добавим звук и немного музыки. В этой главе вы узнаете основные понятия акустики и музыкальной нотации, познакомитесь с понятием числовой переменной, научитесь переводить мелодию в частоты и длительности для того, чтобы компьютер синтезировал музыку.

Звук возникает благодаря колебаниям воздуха, воздействующим на барабанную перепонку. Эти колебания называются звуковыми волнами. Когда воздух колеблется быстро, вы слышите высокую ноту, а когда воздух колеблется медленно — низкую ноту. Уровень колебаний называют частотой.

Частота измеряется в единицах, которые называются герц (Гц). Она показывает, как много циклов колебаний (вверх и вниз) в секунду совершает звуковая волна. Обычный человек может слышать очень низкие звуки частотой 20 Гц и очень высокие звуки частотой 20000 Гц. BASIC-256 может воспроизводить звуки в диапазоне от 50 до 7000 Гц.

Другое свойство звука — его длительность. Компьютеры работают очень быстро и позволяют измерять время с точностью до миллисекунд (мс). Миллисекунда составляет 1/1000 (одну тысячную) долю секунды.

Давайте создадим некоторые звуки.

Возможно, вы услышали щелкающий звук в колонках между звуками, сыгранными в этом примере. Это вызвано тем, что компьютер создает звук и ему необходимо остановиться и «подумать» примерно миллисекунду. Оператор sound может быть также записан с указанием списка частот и длительностей, чтобы сгладить переход от одной ноты к другой.

Эта вторая звуковая программа воспроизводит те же самые три тона той же длительности, но компьютер создает и проигрывает все звуки сразу, делая их более гладкими.

Как же BASIC-256 воспроизводит мелодию? Первое, что мы должны сделать — преобразовать ноты на нотном стане в частоты. На рисунке 8 показаны две октавы нот, их названия и приблизительная частота, которая их создает. В музыке есть ещё особое понятие – пауза. Пауза означает — «не воспроизводить музыку в определенный интервал времени». Если вы используете список звуков, то можете вставить паузу, указав частоту нуль (0) и необходимое время паузы.

Возьмите небольшой музыкальный фрагмент, а затем посмотрите значения частоты для каждой ноты. Почему бы нам не попросить компьютер сыграть «Атака!» (смотрите рисунок 9). Вы наверное заметили, что нота «соль» (G) второй октавы находится выше нотного стана. Если нота располагается не на нотном стане, ее частоту можно удвоить, чтобы сделать выше, или уменьшить наполовину, чтобы сделать ниже. Получается та же самая нота, только на октаву выше или ниже.2

Рисунок 9. Атака!

Теперь, когда у нас есть частоты, нам нужны ещё длительности звучания для каждой из нот. Таблица 2 показывает наиболее распространенные длительности нот и пауз, насколько они продолжительны в сравнении друг с другом, и несколько типовых длительностей.

Продолжительность в миллисекундах (мс) можно вычислить, если вы знаете скорость музыки в битах в минуту (BPM – beats per minute), используя формулу 1.

Длительность ноты = 1000∗60/ BPM∗Относительная длина

Теперь с формулой и таблицей для расчета длительности, мы можем написать программу, чтобы сыграть сигнал «Атака!».

Компьютеры действительно хорошо запоминают разные вещи, в то время как у нас, людей, с этим бывают проблемы. Язык BASIC-256 позволяет нам давать названия областям компьютерной памяти, а затем хранить в них информацию. Эти именованные области называются переменными.

Есть четыре типа переменных: числовые переменные, строковые, числовые массивы и массивы строк. В этой главе вы узнаете, как использовать числовые переменные, а другие — в остальных главах.

Программа 19 – это пример программы, использующей числовые переменные.

Программа использует три переменные. В строке 2 значение 30 сохраняется в переменной под названием «numerator». В строке 3 значение 5 сохраняется в переменную «denominator». В строке 4 значение из «numerator» делится на значение из переменной «denominator» и сохраняет результат в переменной с именем «result»4.

Теперь, когда мы увидели переменные в действии, мы можем переписать программу «Атака!», используя переменные и формулу для расчета длительности (Формула 1).

2 # играем сигнал атаки, используя переменные

Рис. 10. Первая строка Маленькой Фуги И.С. Баха в соль-мажор

2 # Музыка И.С. Баха - XVIII Фуга в соль-мажор.

4 milimin = 1000 * 60 # количество миллисекунд в минуте

5 q = milimin / tempo # ритм задается четвертями (целая = 4 четверти) - это четверть

7 e = q / 2 # это восьмая - половинка от четверти

8 s = q / 4 # шестнадцатая = 1/4 от четверти

9 de = e + s # восьмая с точкой = восьмая + шестнадцатая

10 dq = q + e # четверть с точкой = четверть + восьмая

Программа 21: Маленькая Фуга в соль-мажор. Скачать

1Латинские названия нот можно посмотреть в википедии. За эталон частоты ноты берётся нота ля (A) первой октавы, частота которой должна быть равной 440 Гц, что и видно на рисунке (прим. редактора).

2Отношение частот одинаковых нот из соседних октав равно двум или 1/2. (прим. редактора).

3В именах переменных можно использовать только латинские буквы (A..Z,a..z), использование русских букв недопустимо (прим. переводчика)

4Имена переменныем выбирают в соответствии со смыслом хранимых данных, поэтому автор использует: numerator (англ) – числитель, denominator (англ) – знаменатель, result (англ)- результат. В итоге программа вычисляет: результат = числитель / знаменатель (прим. редактора).

Где скачать BASIC-256:

http://basic256.org (http://www.sourceforge.net/projects/kidbasic)

Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt

Немає коментарів:

Дописати коментар