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
Для просмотра документации необходимо авторизоваться на сайте