Работа в Logical Editor
Работа над музыкальной композицией – это не только творчество. Приходится также выполнять массу рутинных операций, отнимающих много сил. Особо нудным занятием является редактирование однотипных параметров серии однотипных MIDI-сообщений. То нужно найти все ноты с определенным номером для того, чтобы затем отредактировать какой-либо из их параметров; то нужно, избавляясь от огрехов исполнения, удалить случайные ноты (как правило, очень короткие или очень тихие); то нужно транспонировать часть нот; то нужно удалить из списка сообщения определенного типа. Композиций у вас много, да все они содержат не по одному десятку треков, а сообщений на них – не сосчитать. Сколько драгоценного времени может уйти на подобную работу!
Нечто похожее наблюдается в математике, когда приходится, например, для получения графика тысячи раз повторять вычисления по одной и той же формуле, подставляя различные исходные данные. Математики давно изобрели способ облегчения своей и нашей жизни – программирование. Программист один раз пишет последовательность команд, а многократное их выполнение возлагает на вычислительную машину. В основе такого подхода лежит один из языков программирования, обеспечивающий перевод инструкций, формулируемых в удобном для человека виде, в код, понятный машине. Многие Windows-приложения содержат в себе встроенные языки программирования, позволяющие автоматизировать повторяющиеся операции и расширить функциональные возможности приложения. Так, например, в программе Cakewalk SONAR имеется встроенный язык CAL, позволяющий писать достаточно сложные программы обработки MIDI-данных. С нашей точки зрения, Logical Editor также можно рассматривать как графическое средство доступа к языку программирования последовательности операций с MIDI-сообще-ниями. Пожалуй, от типичных средств редактирования содержания компьютерных программ Logical Editor отличается лишь относительной простотой да еще формой составления программ. При работе с Logical Editor вам не потребуется вести посимвольную запись операторов программы. Вы их будете выбирать из числа тех, что предлагаются в меню и в списках.
В названии редактора слово "логический" присутствует не случайно. Ведь суть работы с Logical Editor состоит в следующем:
- Вы задаете признаки, по которым программа должна выявить определенные MIDl-сообщения. Критерии поиска формулируются как совокупность логических условий. Например, на обычном человеческом языке это может выглядеть так: "Найти все MIDl-сообщения типа Note, для которых Velocity < 10".
- Вы указываете программе последовательность действий, которые она должна выполнить по отношению к выявленным сообщениям. Например: "Удалить".
- Вы определяете область, в пределах которой программа должна выполнять ваше задание. Например, выделяете часть на MIDI-треке.
Иными словами, в работе с редактором вы постоянно используете логические условия.
Вообще говоря, в математике существует обширный раздел, который так и называется "Логика". Одной из задач логики является исследование эффективных способов построения сложных логических высказываний на основе элементарных логических операторов. Среди различных логических систем особое место занимает двоичная (булева) логика, в которой и исходные объекты и результаты их обработки принимают только два значения. Обычно эти значения обозначаются как 0 и 1, или как ЛОЖЬ (FALSE) и ИСТИНА (TRUE). В частности, доказано, что самые сложные отношения между объектами (условия) могут быть выражены на основе суперпозиции всего лишь двух элементарных логических функций (операторов). Разработчики Logical Editor выполнили это условие с избытком: в качестве таких операторов выбраны три функции: NOT, AND и OR. Функции AND и OR присутствуют в явном виде, они так и обозначены: AND и OR. Функции NOT в явном виде вы здесь не найдете, но фактически, выбирая одно из двух условий Equal или Unequal, вы будете иметь дело именно с ней.
NOT – функция одной переменной. Она принимает значение 1, когда переменная равна 0, и 0, когда переменная равна 1.
Остальные логические функции позволяют работать с различным числом логических переменных. Для функций AND и OR минимальное количество переменных равно двум. Логические функции задаются в виде таблиц истинности. В табл. 6.1 приведена таблица истинности функции AND, а в табл. 6.2 – функции OR.
Таблица 6.1. Функция AND.
Х2\Х, | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
Таблица 6.2. Функция OR.
Х2\Х, | 0 | 1 |
---|---|---|
1 | 1 | 1 |
1 | 1 | 1 |
В верхней строке каждой таблицы приведены значения первой логической переменной (\i). В левом столбце – значения второй логической переменной (х2). На пересечении строки и столбца записан результат операции. Например, (1 AND 0) = 0, (1 AND 1) = 1, (0 OR 1) = 1.
Словами табл. 6.1 можно описать так: в результате операции AND получится ИСТИНА, только в том случае, если обе переменные (х1 и х2) принимают значение ИСТИНА.
Смысл табл. 6.2 иной: в результате операции OR получится ИСТИНА, в том случае, если хотя бы одна из переменных (x1 или х2) принимает значение ИСТИНА.