MzxBox

catalogTestAction.json

{
	"label": "Test Action Plugin",
	"purpose": "Action",
	"kind": "",
	"ui": "http://127.0.0.1:8080/action/ui4.html",
	"evaluate": "",
	"script": ""
}

ui4.html

<html>

<head>
	<style>
		body {
			background: silver;
		}
	</style>
</head>

<body>
	<h1>Test Action Plugin</h1>
	<button onclick="transpose(+12);">Transpose Up</button>
	<button onclick="transpose(-12);">Transpose Down</button>
</body>
<script>
	let dialigId = '';
	let project = null;
	function transpose(nn) {
		if (project.tracks.length > 0) {
			let trackidx = 0;
			if (project.farorder.length > 0) {
				trackidx = project.farorder[0];
			}
			let track = project.tracks[trackidx];
			for (let mm = 0; mm < track.measures.length; mm++) {
				let measure = track.measures[mm];
				for (let cc = 0; cc < measure.chords.length; cc++) {
					let chord = measure.chords[cc];
					let transposed = [];
					for (let pp = 0; pp < chord.pitches.length; pp++) {
						transposed.push(chord.pitches[pp] + nn);
					}
					chord.pitches = transposed;
				}
			}
			postMessageToHost(true);
		}
	}

	function onHostMessage(messageEvent) {
		if (dialigId) {
			if (messageEvent.data.hostData) {
				project = messageEvent.data.hostData;
			}
		} else {
			dialigId = messageEvent.data.hostData;
		}
	}

	function postMessageToHost(done) {
		window.parent.postMessage({
			dialogID: dialigId,
			pluginData: project,
			done: done,
			screenWait: false
		}, '*');
	}
	window.addEventListener('message', onHostMessage, false);
	postMessageToHost(false);
</script>

</html>

Proudly powered by WordPress