exponenta event banner

midisync

Отправка значений в элементы управления MIDI для синхронизации

Описание

пример

midisync(midicontrolsObject) отправляет начальные значения элементов управления на устройство MIDI, как указано объектом элементов управления MIDI. Чтобы создать этот объект, используйте midicontrols функция. Если устройство MIDI может получать сообщения и отвечать на них, оно корректирует свои элементы управления в соответствии с указанными параметрами.

Примечание

Многие устройства MIDI не являются двунаправленными. Запрос midisync с однонаправленным устройством не имеет эффекта. midisync не может определить, было ли значение успешно отправлено устройству или даже является ли устройство двунаправленным. При сбое отправки значения ошибки или предупреждения не генерируются.

пример

midisync(midicontrolsObject,controlValues) посылает controlValues в элементы управления MIDI, связанные с указанным midicontrolsObject.

Примеры

свернуть все

Использовать midiid для определения элемента управления на устройстве MIDI по умолчанию.

[controlNumber,~] = midiid;
Move the control you wish to identify; type ^C to abort.
Waiting for control message... done

Создайте объект управления MIDI. Укажите начальное значение для элемента управления. Звонить midisync для установки указанного элемента управления на устройстве в исходное значение.

initialValue = 0.5;
midicontrolsObject = midicontrols(controlNumber,initialValue);
midisync(midicontrolsObject);

Использовать midiid для определения трех элементов управления на устройстве MIDI по умолчанию.

[controlNumber1,~] = midiid;
[controlNumber2,~] = midiid;
[controlNumber3,~] = midiid;
controlNumbers = [controlNumber1,controlNumber2,controlNumber3];
Move the control you wish to identify; type ^C to abort.
Waiting for control message... done
Move the control you wish to identify; type ^C to abort.
Waiting for control message... done
Move the control you wish to identify; type ^C to abort.
Waiting for control message... done

Создайте объект управления MIDI. Укажите начальные значения для элементов управления. Звонить midisync для установки указанного элемента управления на устройстве в исходное значение.

controlValues = [0,0,1];
midicontrolsObject = midicontrols(controlNumbers,controlValues);
midisync(midicontrolsObject);

Создайте цикл обновления управляющих значений и синхронизации этих значений с физическими элементами управления на устройстве.

for i = 1:100
    controlValues = controlValues + [0.006,0.008,-0.008];
    midisync(midicontrolsObject,controlValues);
    pause(0.1)
end

Определите эту функцию и сохраните ее в текущей папке.

function trivialmidigui(controlNumber,deviceName)

    slider = uicontrol('Style','slider');
    mc = midicontrols(controlNumber,'MIDIDevice',deviceName);
    midisync(mc);
    set(slider,'Callback',@slidercb);
    midicallback(mc, @mccb);
    
    function slidercb(slider,~)
        val = get(slider,'Value');
        midisync(mc, val);
        disp(val);
    end

    function mccb(mc)
        val = midiread(mc);
        set(slider,'Value',val);
        disp(val);
    end

end

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

[controlNumber,deviceName] = midiid;
trivialmidigui(controlNumber,deviceName)

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

Входные аргументы

свернуть все

Объект, прослушивающий элементы управления на устройстве MIDI, указанный как объект, созданный midicontrols.

Значения, отправленные на устройство MIDI, указаны как скаляр или массив того же размера, что и controlNumbers связанных midicontrols объект. Если не указать controlValues, значением по умолчанию является initialValues связанных midicontrols объект.

Возможный диапазон для controlValues зависит от OutputMode связанных midicontrols объект.

  • Если OutputMode указывается как 'normalized', то controlValues должен состоять из значений в диапазоне [0,1]. Дефолт OutputMode является 'normalized'.

  • Если OutputMode указывается как 'rawmidi', то controlValues должен состоять из целых значений в диапазоне [0,127].

Пример: 0.3

Пример: [0,0.3,0.6]

Пример: 5

Пример: [5;15;20]

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Представлен в R2016a