Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Работа в окне Logical Editor





Работа над музыкальной композицией — это не только творчество. Приходится также выполнять массу рутинных операций, отнимающих много сил. Особо нудным занятием является редактирование однотипных параметров серии однотипных MIDI-сообщений. То нужно найти все ноты с определенным номером, чтобы затем отредактировать какой-либо из их параметров; то нужно, избавляясь от огрехов исполнения, удалить случайные ноты (как правило, очень короткие или очень тихие); то нужно транспонировать часть нот; то нужно отфильтровать из списка сообщения определенного типа. Композиций у вас много, да все они содержат не по одному десятку треков, а сообщений на них— не сосчитать! Сколько драгоценного времени тратится на подобную работу...

Нечто похожее наблюдается в математике, когда приходится, например, для получения графика тысячи раз повторять вычисления по одной и той же формуле, подставляя различные исходные данные. Математики давно изобрели способ облегчения своей и нашей жизни — программирование. Программист один раз пишет последовательность команд, а многократное их выполнение возлагает на вычислительную машину. В основе такого подхода лежит один из языков программирования, обеспечивающий перевод инструкций, формулируемых в удобном для человека виде, в код, понятный машине. Многие Windows-приложения содержат в себе встроенные языки программирования, позволяющие автоматизировать повторяющиеся операции и расширить функциональные возможности приложения. Так. например.

в программе Cakewalk SONAR, работу с которой мы рассмотрели в книгах [9, 11, 19, 22, 26], имеется встроенный язык CAL, позволяющий писать достаточно сложные программы обработки MIDI-данных. С нашей точки зрения, окно Logical Editor также можно рассматривать как графическое средство доступа к языку программирования последовательности операций с MIDI-сообщениями. Пожалуй, от типичных средств редактирования содержания компьютерных программ Logical Editor отличается лишь относительной простотой да еще формой составления программ. При работе с Logical Editor вам не потребуется вести посимвольную запись операторов программы. Вы их будете выбирать из числа тех, что предлагаются в меню и в списках.

В названии редактора слово "логический" присутствует не случайно. Ведь суть работы с Logical Editor состоит в следующем:

1. Вы задаете признаки, по которым программа должна выявить определенные MIDI-сообщения. Критерии поиска формулируются как совокупность логических условий. Например, на обычном человеческом языке это может выглядеть так: "Найти все MIDI-сообщения типа Note, для которых Velocity меньше 10".

2. Вы указываете программе последовательность действий, которые она должна выполнить по отношению к выявленным сообщениям. Например: "Удалить".

3. Вы определяете область, в пределах которой программа должна выполнять ваше задание. Например, выделяете часть на 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\х.    
     
     

Таблица 6.2. Функция OR

х2\х.    
     
     

В верхней строке каждой таблицы приведены значения первой логической переменной (xj). В левом столбце — значения второй логической переменной (jc 2). На пересечении строки и столбца записан результат операции. Например, (1 AND 0) = 0,(1 AND 1)= 1,(0 OR 1)= 1.

Словами табл. 6.1 можно описать так: в результате операции AND получится ИСТИНА только в том случае, если обе переменные ихгз) принимают значение ИСТИНА.

Смысл табл. 6.2 иной: в результате операции OR получится ИСТИНА в том случае, если хотя бы одна из переменных (jci или х{) принимает значение ИСТИНА.

Возможно, некоторым музыкантам и это легкое прикосновение к математике покажется слишком сложным. Но если вы хотите научиться пользоваться окном Logical Editor, то ничего не поделаешь, без понимания хотя бы элементарных вещей не обойтись. Ведь именно путем построения цепочки логических операторов вам предстоит объяснять программе задачу, которую вы ей ставите. Известная программистская мудрость гласит: "Что запрограммируешь, то и получишь". Не хотелось бы, чтобы, применяя Logical Editor, вместо удовольствия от работы вы получали неожиданные неприятности.

Окно Logical Editor (рис. 6.31) открывается командой MIDI > Open Logical Editor.

С помощью окна Logical Editor определяются параметры поиска и преобразования MIDI-сообщений, записанных в части на MIDI-треке. Возможные варианты действий:

□ преобразование свойств найденных сообщений;

□ удаление найденных сообщений;

П вставка новых сообщений, параметры которых определенным образом связаны с найденными сообщениями.

В окне Logical Editor имеется два рабочих поля: в верхнем (столбцы (. Filter Target, Condition. Parameter 1, Parameter 2, Bar Range,), bool) определяются условия фильтрации.

В нижнем рабочем поле (столбцы Action Target, Operation. Parameter 1.

Parameter 2) определяются параметры преобразования MIDI-сообщения. Под каждым из рабочих полей имеется пара кнопок: + (добавить строку в список на рабочем поле) и - (удалить строку из списка на рабочем поле).

В строках верхнего рабочего поля вам предстоит ввести программу, согласно которой будут выявляться сообщения, характеризуемые определенными признаками. В строках нижнего рабочего поля предстоит формулировать конкретное задание для Logical Editor, т. е. указывать действия, которые должны быть выполнены в отношении выявленных сообщений.

Рабочие поля можно сравнить с двумя разграфленными листками обыкновенного блокнота. На первом вы составляете описание какого-либо объекта (например, "женщина, молодая, красивая"), а на втором пишете, что нужно будет с таким объектом сделать, если он вам встретится (например, "познакомиться").

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


Задача логическому редактору в общем виде формулируется путем выбора одной из строк в раскрывающемся списке Function, расположенном внизу по центру окна Logical Editor:

П Delete — удалить найденные сообщения;

□ Transform — преобразовать сообщения;

□ Insert— вставить сообщения, найденные в соответствии с заданными условиями;

□ Insert Exclusive — вставить сообщения за исключением найденных в соответствии с заданными условиями;

П Сору— копировать сообщения, преобразовать их согласно заданным условиям и вставить на другой трек;

□ Extract — извлечь найденные сообщения и вставить их на другой трек;

□ Select — выделить найденные сообщения, с тем чтобы вы могли продолжить работу с ними в другом редакторе.

Разработчики утверждают, что средствами Logical Editor можно выполнить преобразования любой сложности. И это очень похоже на правду. Во всяком случае, количество различных вариантов преобразований подсчитать очень трудно. Никому из нас не удалось бы перебрать их и за всю свою жизнь. Редактор Logical Editor, как и любое устройство, логика которого построена не по жесткой схеме, а программируется, сам может считаться объектом творчества. Поэтому бессмысленно пытаться обучать вас выполнению пяти, десяти, двадцати и т. д. конкретных преобразований. Все, чем мы можем вам помочь в освоении Logical Editor, так это разъяснить общие принципы его применения. Вот и продолжим это занятие.

Рассмотрим использование окна Logical Editor на примере одного из пресетов. Раскроем список Presets и выберем пресет standard set 2 > del patch changes. Судя по названию, пресет предназначен для удаления из списка сообщений о смене MIDl-инструмента.

Программа преобразований загрузилась в Logical Editor. Посмотрим, как это отразилось на содержании окна (рис. 6.32).

В раскрывающемся списке Function появилась надпись Delete. Значит, сообщения действительно будут удаляться. Справа от элементов управления пресетами в поле комментария содержится пояснение о том. что будут удалены все сообщения, о смене программ (MIDI-инструментов), в том числе и сообщения о выборе банков инструментов.

Условие фильтрации набрано в верхнем рабочем поле. Здесь трудно охватить запись взглядом. В данном случае компактно записанное условие должно было бы выглядеть так:

(Туре = Program OR (Type = Controller AND (Valuel = 0 OR Valuel = 32)))

Попробуем расшифровать эту запись. Начнем с пары внешних скобок — (и). Они служат признаками начала и конца логического оператора, определяющего условия фильтрации. Сообщения каких типов будут удалены? Или типа Program Change (см. выражение Type = Program), или типа Controller (см. выражение Туре = Controller). О том, что именно "или — или", свидетельствует первый слева оператор OR. Все ли сообщения типа Controller будут удалены? Нет, не все, а только те, которые, будучи сообщениями данного типа, одновременно удовлетворяют дополнительным условиям: значения их параметра Valuel равны или 0, или 32. Об этом свидетельствует выражение (Туре = Controller AND (Valuel = О OR Valuel = 32)). Как известно, контроллер № 0 — это BankSel LSB (младший байт сообщения о выборе банка), а контроллер № 32 — это BankSel MSB (старший байт сообщения о выборе банка). Итак, действительно, в рассмотренном условии запрограммировано удаление всех возможных сообщений, связанных со сменой MIDI-инструмента.


Даже предусмотрен тот факт, что в различных MIDI-спецификациях предусмотрены различные способы адресации банка.

Теперь рассмотрим внимательнее верхнее рабочее поле (рис. 6.33), с тем чтобы понять, каким образом только что проанализированное условие оказалось записанным там.

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

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

Получается следующее:

□ в одной строке можно записать некоторое выражение, заключенное в скобки. Количество скобок в пределах от 0 до 3 выбирается в ячейках (и). Cubase 5 автоматически проверяет выполнение правил синтаксиса, присущих данному языку программирования. Одно из них заключается в том, что количество закрывающих скобок должно быть равно количеству открывающих;

□ в ячейке столбца bool можно записать один из двух логических операторов (Or или And).

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

□ Filter Target — признак (объект) фильтрации. Выбор осуществляется из вариантов:

• Type Is (по типу сообщения);

• Position (по позиции сообщения);

• Length (по длине сообщения, только для сообщений типа Note);

• Value 1 (по значению первого параметра сообщения);

• Value 2 (по значению второго параметра сообщения);

• Channel (по MIDI-каналу);

• Property (по атрибуту сообщения — muted, selected, locked);

• Value 3 (по значению третьего параметра сообщения).

□ Condition— условие фильтрации (состояние признака фильтрации). Выбор осуществляется из вариантов, число и смысл которых зависят от объекта фильтрации, выбранного в столбце Filter Target. Например, для объекта Channel такими вариантами будут: Equal (Равно), Unequal (Неравно), Bigger (Больше), Bigger or Equal (Больше или равно). Less (Меньше), Less or Equal (Меньше или равно). Inside Range (Находится

в заданном диапазоне). Outside Range (Находится вне заданного диапазона).

□ Parameter 1, Parameter 2 — значения параметров.

□ Bar Range — временной диапазон поиска сообщений в пределах каждого такта. Столбец доступен только в том случае, когда в столбце Filter Target выбран объект Position, а в столбце Condition — признаки Inside Bar Range или Outside Bar Range.

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

Для применения Logical Editor нажмите кнопку Apply (см. рис. 6.32).

Не станем углубляться дальше. Не очень верится в то, что вы всерьез займетесь разработкой собственных алгоритмов для Logical Editor (особенно если не обладаете соответствующей подготовкой в области программирования). А вот разобраться в смысле преобразований, которые сохранены создателями Cubase 5 в виде пресетов, вам теперь вполне по силам. Там вы обнаружите очень полезные вещи. Советуем вам в свободное время поэкспериментировать с содержимым раскрывающегося списка Presets, применяя пресеты для обработки какого-либо несложного и хорошо знакомого вам материала. Кстати говоря, списки пресетов Logical Editor содержатся также в системе подменю, которые открываются командой MIDI > Logical Presets.

Напомним, что в гл. 4 рассмотрен пример применения для преобразования MIDI-сообщений окна Input Transformer, очень похожего на окно Logical Editor. Разница заключается в том, что окно Input Transformer предназначено для редактирования параметров фильтрации и преобразования MIDI-данных в реальном времени, а с помощью окна Logical Editor осуществляются фильтрация и преобразование MIDI-данных, уже сохраненных на треке. Кроме того, в Cubase 5 имеется работающий в режиме реального времени MIDI-плагин Transformer, который является полным аналогом Logical Editor.

Команды и функции, применяемые в процессе редактирования MIDI-сообщений, сосредоточены в меню MIDI. В предыдущих разделах текущей главы мы уже обращались к командам, открывающим различные MIDI-редакторы (за исключением окна Scores— этот редактор мы рассмотрим в гл. 7). С работой в окне Drum Map Setup, открываемом командой MIDI > Drum Map Setup, мы познакомили вас в гл. 4. За пределами нашего повествования пока остаются некоторые средства редактирования MIDI-сообщений, в частности, функции, доступные в подменю MIDI > Functions, и группа команд, связанных с квантизацией.







Date: 2015-08-06; view: 410; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.015 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию