exponenta event banner

midicallback

Дескриптор функции вызова при изменении значения элементов управления MIDI

Описание

пример

oldFunctionHandle = midicallback(midicontrolsObject,functionHandle) наборы functionHandle как дескриптор функции, вызываемый при midicontrolsObject изменяет значение и возвращает предыдущий дескриптор функции, oldFunctionHandle.

пример

oldFunctionHandle = midicallback(midicontrolsObject,[]) очищает дескриптор функции.

пример

currentFunctionHandle = midicallback(midicontrolsObject) возвращает текущий дескриптор функции.

Примеры

свернуть все

Создайте объект управления MIDI по умолчанию. Использовать midicallback чтобы связать анонимную функцию с объектом элементов управления MIDI, mc.

mc = midicontrols; 
midicallback(mc,@(x)disp(midiread(x)));

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

    0.5079

    0.5000

    0.4921

    0.4841

    0.4762

    0.4683

    0.4603

    0.4683

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

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

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

midicontrolsObject = midicontrols(controlNumber);

Определите функцию, отображающую синусоиду с амплитудой, заданной вашим MIDI-контролем. Сделать ось постоянной.

axis([0,2*pi,-1,1]);
axis manual
hold on
sinePlotter = @(obj) plot(0:0.1:2*pi,midiread(obj).*sin(0:0.1:2*pi));

Используйте midicallback функция, чтобы связать sinePlotter функция с элементом управления, указанным midicontrolsObject. Переместите указанный элемент управления MIDI. График автоматически обновляется с амплитудой синусоиды, заданной вашим MIDI-контролем.

midicallback(midicontrolsObject,sinePlotter)

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

midicontrolsObject = midicontrols; 

Определите анонимную функцию для отображения текущего значения элемента управления MIDI. Использовать midicallback чтобы связать объект управления MIDI с созданной функцией. Убедитесь, что объект связан с функцией.

displayControlValue = @(object) disp(midiread(object));
midicallback(midicontrolsObject,displayControlValue);
currentFunctionHandle = midicallback(midicontrolsObject)
currentFunctionHandle = 

    @(object)disp(midiread(object))

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

    0.3095

    0.4603

    0.6746

    0.7381

    0.8175

    0.8571

    0.9048

Определите анонимную функцию для печати текущего значения элемента управления MIDI, округленного до двух значащих цифр. Использовать midicallback чтобы связать объект элементов управления MIDI с созданной функцией. Верните старый дескриптор функции.

displayRoundedControlValue = @(object) fprintf('%.2f\n',midiread(object));
oldFunctionHandle = midicallback(midicontrolsObject,displayRoundedControlValue)
oldFunctionHandle = 

    @(object)disp(midiread(object))

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

0.91
0.83
0.67
0.49
0.29
0.18
0.05

Удалите связь между объектом и функцией. Верните старый дескриптор функции.

oldFunctionHandle = midicallback(midicontrolsObject,[])
oldFunctionHandle = 

    @(object)fprintf('%.2f\n',midiread(object))

Убедитесь, что ни одна функция не связана с объектом элементов управления MIDI.

currentFunctionHandle = midicallback(midicontrolsObject)
currentFunctionHandle =

     []

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

function plotSine(midicontrolsObject)

frequency = midiread(midicontrolsObject);

x = 0:0.01:10;

sinusoid = sin(2*pi*frequency.*x);

plot(x,sinusoid)
axis([0,10,-1.1,1.1]);
ylabel('Amplitude');
xlabel('Time (s)');
title('Sine Plot')
legend(sprintf('Frequency = %0.2f Hz',frequency));

end

Создать midicontrols объект. Создайте дескриптор функции для plotSine функция. Использовать midicallback чтобы связать midicontrolsObject с plotSineHandle.

Переместите любой контроллер на устройстве MIDI для построения графика синусоиды. Частота синусоиды обновляется при перемещении элементов управления MIDI.

midicontrolsObject = midicontrols;
plotSineHandle = @plotSine;
midicallback(midicontrolsObject,plotSineHandle);

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

свернуть все

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

Новый дескриптор функции, указанный как дескриптор функции, содержащий один входной аргумент. Новый дескриптор функции вызывается при midicontrolsObject изменяет значение. Сведения о том, что такое дескрипторы функций, см. в разделе Дескрипторы функций.

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

свернуть все

Старый дескриптор функции, установленный предыдущим вызовом midicallback, возвращается как дескриптор функции.

Дескриптор функции, установленный последним вызовом midicallback, возвращается как дескриптор функции.

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