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