Touch screen isue with dragging panels

Hi,

I’m currently finishing an interactive installation that need a touchscreen. My main interaction is people dragging text into zones to create a sentence that will be send to Ableton live and play this sentence.

My issue is that I can move the text in the zones but when I remove my finger off the screen it is not register and I have to press again to confirm the position.

Everything was working last week and now I don’t know what changed but it is not working now.

I did try to used : .click() method and also interactMouse() and interactTouch() but nothing changes. If somebody can guide me to a solution that would help me a lot.

The touch screen that we use is a Dell P5524QT, we use Windows 10.

Thank you
Louis-Philippe

Hi @louislp19,

is it possible to share a simplified setup where that issue can be replicated?
Could be that the touch event starts but is not properly ended.

cheers
Markus

Hi, @snaut

Thank you for taking the time. I just made a simplify version with all the infos you need inside it. Hope it helps.
SSJB_Simplify.toe (19.4 KB)

I made a list of everything that I tried inside the file.

Thanks again
Louis-Philippe

Hi @louislp19,

is the issue only occurring when you are in Perform mode or is it always not working when using the touchscreen? I don’t have a touchscreen at hand so can’t easily replicate.

cheers
Markus

Both, I tried to directly in the network and the same thing is happening.

Hi @louislp19,

could you monitor the reposition and select channel of one of the Text COMPs to see if the panel value actually turns off on release? You can use a Panel CHOP and a trail to record the reposition and select channel over a period of time.

Just trying to narrow down the issue.

Cheers
Markus

Hi @louislp19,

we were able to test with a touchscreen and found that the inside panel value is not properly turning on or off - so the PanelExecute Script is not triggering but only on a second touch making the whole thing inconsistent. The Bug is logged and we are looking at fixing it.

The workaround is an adjustment to “panelexec_reposMot” where we don’t check the inside but actually take the words center position and compare it to the target zone’s position and size:

def onOnToOff(panelValue):

	mot = panelValue.owner
	motPos = [mot.x, mot.y]
	motSize = [mot.width, mot.height]
	motCenter = [motPos[0] + motSize[0]/2, motPos[1] + motSize[1]/2]
	for i in range(1,7):
		dropZone = op('Drop_zone{}'.format(i))
		dropZonePos = [dropZone.x, dropZone.y]
		dropZoneSize = [dropZone.width, dropZone.height]
		if motCenter[0] > dropZonePos[0] and motCenter[0] < dropZonePos[0] + dropZoneSize[0] and motCenter[1] > dropZonePos[1] and motCenter[1] < dropZonePos[1] + dropZoneSize[1]:
			op('index_motZone').par['const{}value'.format(mot.digits-1)] = i
			return
	op('index_motZone').par['const{}value'.format(mot.digits-1)] = 0
	return

it’s not as sleek but does the job.
I changed it in the attached file for the words but you would have to implement the same for the colored squares.

Additionally I couldn’t resist but build out the network for the midinotes for the words to be fully driven by the chop “index_motZone”. As we know with the index where each word is, we can utilize a Fan CHOP for each channel and create the midi channels that way. The Fan CHOP takes in the “Fan Out” mode an index channel and outputs n channels for which the channel of the input index is on. Sorry - I realize that explanation is not great but have a look at the wiki and the OP Snippets to learn more about it - super useful CHOP.
For the midi channels for each zone, i made use of the Pulse CHOP and a fairly recent addition that let’s you specify at what index a pulse should happen. This means with inputing the zone indexes I can create pulses at whatever zone is occupied.
With this there are no scripts necessary except for the initial Panel Execute to check which zone words are in.

Hope this helps
Best
Markus
SSJB_SimplifyMH.toe (20.7 KB)