{"id":3299,"date":"2025-04-17T12:17:54","date_gmt":"2025-04-17T12:17:54","guid":{"rendered":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?post_type=spl_knowledgebase&#038;p=3299"},"modified":"2025-06-10T08:56:13","modified_gmt":"2025-06-10T08:56:13","slug":"tutorial-multitrack","status":"publish","type":"spl_knowledgebase","link":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/","title":{"rendered":"Tutorial: MultiTrack"},"content":{"rendered":"\n<p>MultiTrack is a mechanism that allows you to very easily write SPLat programs that can do many things at once.<\/p>\n\n\n\n<p>MultiTrack makes it very easy to write several programs that can run simultaneously and independently of each other in one controller. You need to apply one or two simple rules and write a tiny bit of code to &#8220;glue&#8221; it all together, but once that&#8217;s done it&#8217;s a breeze. MultiTrack also provides an excellent foundation for libraries of re-usable code.<\/p>\n\n\n\n<p>With MultiTrack we have:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Extended the capabilities of the FastTrack instruction sub-set to provide true multitasking capability.<\/li>\n\n\n\n<li>Added a versatile timing mechanism, called SuperTimers, that covers the whole range from 10mS to 46 hours in a single unified way, and allows a large number of simultaneous timers (limited only by available\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o414\">RAM<\/a>\u00a0memory).<\/li>\n\n\n\n<li>Added an easy to use but very powerful mechanism for controlling several identical &#8220;channels&#8221; in a controller, say for a 4-head bottle capper.<\/li>\n\n\n\n<li>Expanded the FastTrack concept of instructions that wait for an event (like&nbsp;<code><a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/fasttrack-instructions\/waiton-ii\/\">WaitOn<\/a><\/code>) to cover a wide range of events.<\/li>\n\n\n\n<li>Extended the timing functions of&nbsp;<code><a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/fasttrack-instructions\/pause-tttt\/\">Pause<\/a>, <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/fasttrack-instructions\/waitont-iitttt\/\">WaitOnT<\/a>, <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/timing-instructions\/waitofft-iitttt\/\">WaitOffT<\/a> and <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/timing-instructions\/waitonkt-iitttt\/\">WaitOnKT<\/a><\/code>&nbsp;to a full 46 hour range.<\/li>\n\n\n\n<li>Added buffering to the&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-onboard-peripherals\/onboard-lcd\/oblcd-introduction\/\">OBLCD<\/a>&nbsp;device (LCD display) on the MMi201 to make it easier to share between multiple tasks.<\/li>\n<\/ul>\n\n\n\n<p>The end result is that SPLat becomes even easier to program, and allows less experienced users to write more sophisticated programs<\/p>\n\n\n\n<p>This tutorial is divided into 3 levels: Basic, Intermediate and Advanced, so you can work up to the level that suits your experience and needs.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Outcomes (what you will get out of this tutorial):<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">Basic:<\/h6>\n\n\n\n<p>Teaches you the basic mechanics of MultiTrack.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Extend the simplicity of&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/how-splat-works\/how-splat-works-programming\/how-splat-works-fasttrack-programming\/\">FastTrack programming<\/a>&nbsp;into programs with several things happening at once.<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Intermediate:<\/h6>\n\n\n\n<p>Let&#8217;s you start to structure programs to unlock the full power of MultiTrack<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use semaphores for inter-task synchronization. You will be able to have several tasks running at once, but able to coordinate between themselves.<\/li>\n\n\n\n<li>Extend beyond FastTrack timing using the new SuperTimers, allowing you to wait for several events, not just one, and up to 46 hours, not just 5 minutes. It&#8217;s only slightly more complicated to use than&nbsp;<code><a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/input-and-output-instructions-digital\/waitont-iitttt\/\">WaitOnT<\/a><\/code>,<\/li>\n\n\n\n<li>Understand the relationship between the MultiTrack mechanism and subroutines and registers.<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Advanced:<\/h6>\n\n\n\n<p>Gets into some of the more sophisticated stuff.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create multiple extended timers<\/li>\n\n\n\n<li>Measure intervals from 10mS to 46 hours.<\/li>\n\n\n\n<li>Speed up SuperTimers to simplify debugging of processes that take hours or days.<\/li>\n\n\n\n<li><a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms#o5366\">Build<\/a>&nbsp;multi-channel applications (the same code operating on several sets of data and I\/O)<\/li>\n\n\n\n<li>Use transient tasks (tasks that live just long enough to do their job, then fade away and release memory for other things)<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Prerequisites (what you should know before you start):<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">Basic:<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You should understand\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/fasttrack-instructions\/how-splat-works-fasttrack-programming\/\">FastTrack programming<\/a>\u00a0of SPLat. That is covered the mini-tutorials built into SPLat\/PC and in the older FastTrack tutorial in the SPLat\/PC help file. You will appreciate MultiTrack the most if you have been struggling to create programs that do several things at once (SPLat has always been capable of that, but MultiTrack makes it ever so much easier).<\/li>\n\n\n\n<li>You should know how to drive SPLat\/PC, including editing, single stepping and setting breakpoints.<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Intermediate:<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An understanding of&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/splat-pc-programming-software\/splat-pc-ram-allocation-schemes\/splat-pc-automatic-ram-allocation\/\">automatic RAM allocation<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-semaphores\/\">Semaphores<\/a><\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Advanced:<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Indexed addressing (or data arrays in other languages)<\/li>\n\n\n\n<li>Use of SPLat registers<\/li>\n\n\n\n<li>Floating point operations<\/li>\n<\/ul>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>MultiTrack is a mechanism that allows you to very easily write SPLat programs that can do many things at once. MultiTrack makes it very easy&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":886,"menu_order":1,"template":"","class_list":["post-3299","spl_knowledgebase","type-spl_knowledgebase","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tutorial: MultiTrack - SPLat Controls<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: MultiTrack - SPLat Controls\" \/>\n<meta property=\"og:description\" content=\"MultiTrack is a mechanism that allows you to very easily write SPLat programs that can do many things at once. MultiTrack makes it very easy...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/\" \/>\n<meta property=\"og:site_name\" content=\"SPLat Controls\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-10T08:56:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/\",\"name\":\"Tutorial: MultiTrack - SPLat Controls\",\"isPartOf\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\"},\"datePublished\":\"2025-04-17T12:17:54+00:00\",\"dateModified\":\"2025-06-10T08:56:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorials, application notes and white papers\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tutorial: MultiTrack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"name\":\"SPLat Controls\",\"description\":\"OEM Embedded Machine Controllers\",\"publisher\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\",\"name\":\"SPLat Controls\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"caption\":\"SPLat Controls\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: MultiTrack - SPLat Controls","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Tutorial: MultiTrack - SPLat Controls","og_description":"MultiTrack is a mechanism that allows you to very easily write SPLat programs that can do many things at once. MultiTrack makes it very easy...","og_url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/","og_site_name":"SPLat Controls","article_modified_time":"2025-06-10T08:56:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/","name":"Tutorial: MultiTrack - SPLat Controls","isPartOf":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website"},"datePublished":"2025-04-17T12:17:54+00:00","dateModified":"2025-06-10T08:56:13+00:00","breadcrumb":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/"},{"@type":"ListItem","position":2,"name":"Tutorials, application notes and white papers","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/"},{"@type":"ListItem","position":3,"name":"Tutorial: MultiTrack"}]},{"@type":"WebSite","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","name":"SPLat Controls","description":"OEM Embedded Machine Controllers","publisher":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization","name":"SPLat Controls","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","caption":"SPLat Controls"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/3299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase"}],"about":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/types\/spl_knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/886"}],"wp:attachment":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/media?parent=3299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}