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

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

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

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

Входные параметры

свернуть все

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

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

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

свернуть все

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

Указатель на функцию, установленный новым вызовом midicallback, возвращенный как указатель на функцию.

Введенный в R2016a