midicallback

Вызовите указатель на функцию, когда MIDI будет управлять значением изменения

Синтаксис

oldFunctionHandle = midicallback(midicontrolsObject,functionHandle)
oldFunctionHandle = midicallback(midicontrolsObject,[])
currentFunctionHandle = midicallback(midicontrolsObject)

Описание

пример

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 изменяет значение. Для получения информации о том, каковы указатели на функцию, см. Указатели на функции (MATLAB).

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

свернуть все

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

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