{"id":7006,"date":"2024-03-14T07:05:38","date_gmt":"2024-03-14T07:05:38","guid":{"rendered":"https:\/\/tsugi-studio.com\/blog\/?p=7006"},"modified":"2024-04-12T06:40:58","modified_gmt":"2024-04-12T06:40:58","slug":"controlling-gamesynth-with-metaplanes","status":"publish","type":"post","link":"https:\/\/tsugi-studio.com\/blog\/2024\/03\/14\/controlling-gamesynth-with-metaplanes\/","title":{"rendered":"Control sounds with MetaPlanes"},"content":{"rendered":"<p>The <a href=\"https:\/\/www.tsugi-studio.com\/Software\/GameSynth\/API\/en\/index.html\">GameSynth Tool API<\/a> offers an easy way to integrate GameSynth with your favorite creative tools, improving your sound design workflow with procedural audio generation. This is usually done by writing a simple script in Python or a similar language.<\/p>\n<p>However, you can also write your own standalone applications that control GameSynth remotely. In this post, we did exactly this with MetaPlanes, a small control surface for GameSynth that you can <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/examples.html#metaplanes\">download here<\/a>.<\/p>\n<p><a class=\"litymp3\" href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/video\/MetaPlanes.mp4\" data-lity=\"\"><img decoding=\"async\" src=\"https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2024\/03\/meta_planes\/video-thumbnail.png\" alt=\"\"><\/a><\/p>\n<h2 class=\"tsugiblog-blackheader\" style=\"margin-top: 40px; padding: 22px 18px; max-width: 670px; background-position: right center; background-repeat: no-repeat; background-size: contain; letter-spacing: 0.05em; color: #ffffff; background-color: #5c919f; background-image: url('https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2024\/03\/meta_planes\/header-bg1.png');\">Using MetaPlanes<\/h2>\n<p>MetaPlanes offers 4 planes on which you can move your mouse to control the meta-parameters of the current patch in GameSynth.<\/p>\n<p>There are 2 playback modes. You can click directly on one of the planes to start the patch&#8217;s playback. Then, the position of the mouse, its angle and distance from the center, and the speed of the movement can all be used to send values to the patch\u2019s meta-parameters. As soon as you release the mouse, the playback will stop. This is ideal for short sounds with a limited number of meta-parameters (e.g., hits on various surfaces).<\/p>\n<p>For longer sounds, such as ambiences, press the Play button and then adjust the meta-parameters using all 4 surfaces while the patch is playing. When you are done, press the Play button again to stop the patch.<\/p>\n<p><a class=\"blog-picture-lity\" href=\"https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2024\/03\/meta_planes\/overview-en.png\" data-lity=\"\" style=\"width: 80%; display: block; margin: 0 auto;\"><img decoding=\"async\" src=\"https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2024\/03\/meta_planes\/overview-en.png\" alt=\"\"><\/a><\/p>\n<p>Various modes can be selected, offering different mappings and backgrounds. For instance, the \u201ccircular\u201d mode allows you to map the angle and distance to the center to the meta-parameters, while the \u201c4-way mixer\u201d mode lets you adjust meta-parameter values based on the distance of the mouse from the 4 corners.<\/p>\n<p>It is also possible to automate the movements on some of the planes while you move your mouse on others, allowing for the creation of more complex modulations.<\/p>\n<p>The GameSynth Tool API currently does not send a notification when a new patch has been loaded in GameSynth and the meta-parameters potentially changed (this will be added to the API in the next version). Therefore, press the Sync button in MetaPlanes if the meta-parameters list has changed in GameSynth.<\/p>\n<h2 class=\"tsugiblog-blackheader\" style=\"margin-top: 40px; padding: 22px 18px; max-width: 670px; background-position: right center; background-repeat: no-repeat; background-size: contain; letter-spacing: 0.05em; color: #ffffff; background-color: #5c919f; background-image: url('https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2024\/03\/meta_planes\/header-bg2.png');\">Under the hood<\/h2>\n<p>Since the GameSynth Tool API uses TCP to send <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/commands.html\">commands<\/a> to remotely control GameSynth, you can write your application in any language. Here, we developed MetaPlanes in C# using WinForms. It only uses 4 of the commands of the GameSynth Tool API.<\/p>\n<p>When the program starts (and when you press the Refresh button), \u00a0the list of meta-parameters in the current GameSynth patch is retrieved via the <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/commands.html#get_metanames\">get_metanames<\/a> command.<\/p>\n<p>Then, when the user clicks on a plane or on the Play button, the patch\u2019s playback is initiated with the <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/commands.html#play\">play<\/a> command. \u00a0When the mouse moves, the <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/commands.html#set_metavalue\">set_metavalue<\/a> command is called to update the values of the meta-parameters based on their mappings<\/p>\n<p>The playback will stop naturally when the patch\u2019s duration has been reached, when the mouse button is released, or when the Play button is pressed again, in which case the <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/commands.html#stop\">stop<\/a> function is called.<\/p>\n<p>You can download MetaPlanes from the <a href=\"https:\/\/www.tsugi-studio.com\/web\/gamesynth\/api\/en\/examples.html\">GameSynth Tool API\u2019s examples<\/a> page. Please refer to the documentation for the full list of features and keyboard shortcuts. Let us know how you are using it, and if you are also developing your own scripts or tools that use the GameSynth Tool API!<br \/>\n&nbsp;<\/p>\n<p><a class=\"gs-learn-more\" href=\"https:\/\/tsugi-studio.com\/web\/en\/products-gamesynth.html\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2020\/06\/2020_06_Introducing-Modular-Weapons-Modules-banner-1.png\" alt=\"GameSynth\"><\/a><\/p>\n<p><a class=\"gs-learn-more\" href=\"https:\/\/discord.com\/invite\/hacFY2EmgF\"><img decoding=\"async\" src=\"https:\/\/tsugi-studio.com\/blog\/wp-content\/uploads\/2023\/04\/discord.png\" alt=\"discord\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The GameSynth Tool API offers an easy way to integrate GameSynth with your favorite creative tools, improving your sound design workflow with procedural audio<\/p>\n","protected":false},"author":1,"featured_media":7072,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,6],"tags":[],"class_list":["post-7006","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-procedural-audio","category-gamesynth"],"_links":{"self":[{"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/posts\/7006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/comments?post=7006"}],"version-history":[{"count":26,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/posts\/7006\/revisions"}],"predecessor-version":[{"id":7076,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/posts\/7006\/revisions\/7076"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/media\/7072"}],"wp:attachment":[{"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/media?parent=7006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/categories?post=7006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tsugi-studio.com\/blog\/wp-json\/wp\/v2\/tags?post=7006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}