# boolean logic or lua?

Home Forums General Programming boolean logic or lua?

Viewing 1 post (of 1 total)
• Author
Posts
• #71205
human fly
Participant
• Topics: 124
• Replies: 1070
• Total: 1194
• ★★★★

lua of course – i’m trying to resolve a problem with 4 buttons
selecting the value of a single MIDI sysex parameter. i’m
looking at the D-50 panel now, which must be more or less the
same thing – but it really is a terrible roland manual this time
(other ones are not actually as bad as people say)

the D-110 has a similar partial button array, selecting
0-15 (0000-1111) on ONE parameter which controls the on/off state
of the 4 partials. not easy to represent graphically unless it has
some extra programming. it looks like this:
—————————————————
(sorry, this doesn’t show up right/spacing)
0000 ALL OFF 0
0001 1 1 partial1 solo
0010 2 2 partial2 solo
0011 1+2 3
0100 3 4 partial3 solo
0101 3+1 5
0110 3+2 6
0111 2+3+4 7
1000 4 8 partial4 solo
1001 4+1 9
1010 4+2 10
1011 4+21 11
1100 4+3 12
1101 4+3+1 13
1110 4+3+2 14
1111 4+3+2+1 15
————————————————–
as you see, you cannot switch each one on/off
as 0/1, 0/2, 0/4, 0/8 because 0 is always ALL OFF.

so that looks like a boolean logic problem. don’t
know if it would be OR gates or XOR, or any other
combination of logic gates, and i’d have difficulty
figuring it out. i have to, because any other option
is going to look terrible represented graphically,
can’t be done unless loads of buttons are used.

so then i thought, have a look at the D-50 panel, and
see what he did, because it has to be a Lua anyway.
and this is what is there:
‘called when the modulator changes’:
————————————————————-

— Called when a modulator value changes
— @mod http://ctrlr.org/api/class_ctrlr_modulator.html
— @value new numeric value of the modulator

PartialsOnOff = function(value)

LowerP1 = panel:getModulatorByName(“LowerPartial1_OnOff”):getModulatorValue()
LowerP2 = panel:getModulatorByName(“LowerPartial2_OnOff”):getModulatorValue()
UpperP1 = panel:getModulatorByName(“UpperPartial1_OnOff”):getModulatorValue()
UpperP2 = panel:getModulatorByName(“UpperPartial2_OnOff”):getModulatorValue()

LowerPartial = (LowerP1 + LowerP2)
UpperPartial = (UpperP1 + UpperP2)

if LowerP1 == 1 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x02, 0x6e, 0x01, 0x0f, 0xf7})) end
if LowerP2 == 1 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x02, 0x6e, 0x02, 0x0e, 0xf7})) end
if LowerPartial == 2 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x02, 0x6e, 0x03, 0x0d, 0xf7}))
elseif LowerPartial == 0 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x02, 0x6e, 0x00, 0x10, 0xf7}))
end

if UpperP1 == 1 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x01, 0x2e, 0x01, 0x50, 0xf7})) end
if UpperP2 == 1 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x01, 0x2e, 0x02, 0x4f, 0xf7})) end
if UpperPartial == 2 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x01, 0x2e, 0x03, 0x4e, 0xf7}))
elseif UpperPartial == 0 then
panel:sendMidiMessageNow(CtrlrMidiMessage({0xf0, 0x41, 0x00, 0x14, 0x12, 0x00, 0x01, 0x2e, 0x00, 0x51, 0xf7}))
end

end
——————————————————————————-
i can’t tell yet from the D-50 manual what the parameter number is.
the D-110 manual is much better on this section. the parameter address
part of the message is <00 0C>

the thing is, the D-50 panel sends out FOUR sysex message, and i’m
sure this isn’t right for the D-110. it only needs a single message,
and single value, 0-15. the value range contains all possible combinations
of partials. here is what the D-50 panel sends out:
——————————————————————-
this is partial1 off, and 2,3,4 on:

F0 41 00 14 12 00 02 6E 02 0E F7
F0 41 00 14 12 00 01 2E 01 50 F7
F0 41 00 14 12 00 01 2E 02 4F F7
F0 41 00 14 12 00 01 2E 03 4E F7

-which makes no sense to me at all. and i don’t think i can just
copy this method. i can see 2 different adresses there, the main
one looks like <01 2E>, i don’t know why it needs the <02 6E> address.
(and the manual is real ****** to look at)

this was Anders Eriksson 2015

>edit>looking at the expression, it looks like it would work,
and makes sense, but it sends out 4 messages? i only want one.
looking at it more closely;

• This topic was modified 5 years, 3 months ago by human fly.
• This topic was modified 5 years, 3 months ago by human fly.
• This topic was modified 5 years, 3 months ago by human fly.
Viewing 1 post (of 1 total)
• The forum ‘Programming’ is closed to new topics and replies.
There is currently 0 users and 51 guests online
No users are currently active
Forum Statistics
Threads: 2,495, Posts: 17,374, Members: 77,605
Most users ever online was 12 on January 22, 2019 3:47 pm