{"id":18144,"date":"2022-09-13T14:26:00","date_gmt":"2022-09-13T12:26:00","guid":{"rendered":"https:\/\/demdlx704as001.ad.harman.com\/?post_type=documentor-sections&#038;p=18144"},"modified":"2022-09-13T15:30:56","modified_gmt":"2022-09-13T13:30:56","slug":"preset-loading-configurability-overrides","status":"publish","type":"post","link":"https:\/\/audioworx.transfunnel.co\/old\/?p=18144","title":{"rendered":"Preset Loading Configurability \/ Overrides"},"content":{"rendered":"<p>For this release (s+2) &#8211; the way master preset controller has been implemented has changed a good bit.\u00a0 Much of the code that was required to be implemented by the platform team is now internal to the xTPInterpreter.\u00a0 There are two primary reasons for this.<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>We want less wasted work on the platform side (easier implementation and maintenance)<\/li>\n<li>We&#8217;ve changed process for loading slots so that the xTPInterpreter has the ability to respond to each phase of the process.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>At the same time we have added the ability for a preset to request not to ramp before its load.<\/p>\n<p>Previously the setup was more of a fire and forget &#8211; the ramping data and preset data was sent out to each core, which took care of everything and then sent a status message after the ramp up was complete.<\/p>\n<p>Now the process is as follows:<\/p>\n<ol>\n<li>for each instance with a preset that requires muting, the state switch command is sent (ramp time is set for the entire slot)<\/li>\n<li>after the instance is muted it returns to the master core (xTPInterpreter) to get the next step (onStateChange)\n<ol>\n<li>This method is virtual and the platform can use it to provide custom scenario handling<\/li>\n<\/ol>\n<\/li>\n<li>each preset load command is sent<\/li>\n<li>likewise after each load is completed there is a callback to the xTPInterpreter class which is virtual and can be modified (onSlotLoaded)<\/li>\n<li>Each instance which was muted in the first step is now unmuted &#8211; and once again there is a callback to the onStateChange method<\/li>\n<\/ol>\n<p>The idea here is to enable synchronization between cores, and enable the platform to respond to custom scenarios where the functionality provided in the slot map through GTT is not meeting a specific requirement.<\/p>\n<p>If you&#8217;re responsible for integration &#8211; you will need to:<\/p>\n<ol>\n<li>utilize the provided methods which were moved from your child xTPInterpreter implementation into xTPInterpreter itself.\n<ol>\n<li>You may or may not have used these methods from our winpc code which were moved:\n<ol>\n<li>onSlotLoaded<\/li>\n<li>onStateChange<\/li>\n<li>groupPresetBasedOnInstance (deleted)<\/li>\n<li>loadPresets &#8211; this is still the entry point to the whole process<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>xTPInterpreter now utilizes allocators &#8211; so your initialize function call will need to be updated.<\/li>\n<li>master preset control API was changed to use the correct sized primitives in some cases (mostly going from uint to uchar) &#8211; probably not relevant unless you&#8217;re using these API&#8217;s for a different purpose<\/li>\n<li>The method &#8216;handleSlotUpdate&#8217; is now returns an xAF_Error as status and has specific requirements:\n<ol>\n<li><code data-application=\"com.atlassian.bitbucket-server\" data-language=\"c\"> \/*! \/\/xTPInterpreter.h<br \/>\n*   Abstract method to fire when a new preset map is received<br \/>\n*   The implementer should deinit (if req) load and init master preset controller (m_MasterPresetControl) in this method<br \/>\n*   \\return     status of the operation [xAF_SUCCESS]\n*\/<br \/>\nvirtual xAF_Error handleSlotUpdate() = 0;<\/code><\/li>\n<\/ol>\n<\/li>\n<li>Whatever memory you allocated to keep track of presets can be deleted now<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For this release (s+2) &#8211; the way master preset controller has been implemented has changed a good bit.\u00a0 Much of the code that was required to be implemented by the platform team is now internal to the xTPInterpreter.\u00a0 There are two primary reasons for this. We want less wasted work on the platform side (easier [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","footnotes":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[]},"categories":[1],"tags":[],"coauthors":[172],"_links":{"self":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/18144"}],"collection":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18144"}],"version-history":[{"count":5,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/18144\/revisions"}],"predecessor-version":[{"id":18149,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/18144\/revisions\/18149"}],"wp:attachment":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18144"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcoauthors&post=18144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}