{"id":14009,"date":"2026-05-18T07:01:41","date_gmt":"2026-05-18T05:01:41","guid":{"rendered":"https:\/\/store.algosyntax.com\/?post_type=download&#038;p=14009"},"modified":"2026-05-18T07:02:11","modified_gmt":"2026-05-18T05:02:11","slug":"umg-musical-grids","status":"publish","type":"download","link":"https:\/\/store.algosyntax.com\/marketplace\/unreal-engine\/umg-musical-grids\/","title":{"rendered":"UMG Musical Grids"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"14009\" class=\"elementor elementor-14009\" data-elementor-post-type=\"download\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a922b29 e-flex e-con-boxed e-con e-parent\" data-id=\"a922b29\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c1eccdf elementor-widget elementor-widget-heading\" data-id=\"c1eccdf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">UMG Musical Grids<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f1616e2 e-flex e-con-boxed e-con e-parent\" data-id=\"f1616e2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c23f701 elementor-widget elementor-widget-text-editor\" data-id=\"c23f701\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"9nigm1\" data-start=\"509\" data-end=\"545\">Musical grid UI for Unreal Engine<\/h2><p data-start=\"547\" data-end=\"668\">Build timeline, piano-roll, sequencer, and music-editor grids in UMG without rebuilding musical time layout from scratch.<\/p><p data-start=\"670\" data-end=\"992\">UMGMusicalGrids is a focused Unreal Engine plugin for creating music-aware grid widgets in UMG. It gives you a higher-level musical canvas built on top of LineGridCanvasPanel, with built-in support for bars, beats, subdivisions, quantization, playhead rendering, pointer-to-music conversion, and designer-friendly styling.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38b4ea3 elementor-widget__width-initial elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"38b4ea3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Image Carousel\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 4\"><figure class=\"swiper-slide-inner\"><img class=\"swiper-slide-image swiper-lazy\" data-src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/umg-musical-grids\/umg-musicgridsbanner1.jpg\" alt=\"UMG MusicGridsBanner1\" \/><div class=\"swiper-lazy-preloader\"><\/div><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 4\"><figure class=\"swiper-slide-inner\"><img class=\"swiper-slide-image swiper-lazy\" data-src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/umg-musical-grids\/musicalgridsumgstyling2.jpg\" alt=\"MusicalGridsUMGStyling2\" \/><div class=\"swiper-lazy-preloader\"><\/div><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 of 4\"><figure class=\"swiper-slide-inner\"><img class=\"swiper-slide-image swiper-lazy\" data-src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/umg-musical-grids\/musicalgridsinpianoroll1.jpg\" alt=\"MusicalGridsInPianoRoll1\" \/><div class=\"swiper-lazy-preloader\"><\/div><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 of 4\"><figure class=\"swiper-slide-inner\"><img class=\"swiper-slide-image swiper-lazy\" data-src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/umg-musical-grids\/musicalgridsusages.jpg\" alt=\"MusicalGridsUsages\" \/><div class=\"swiper-lazy-preloader\"><\/div><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-69ae44d e-flex e-con-boxed e-con e-parent\" data-id=\"69ae44d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-892cf86 elementor-widget elementor-widget-text-editor\" data-id=\"892cf86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"1gfhv8h\" data-start=\"994\" data-end=\"1023\">Build music grid UI faster<\/h2><p data-start=\"1025\" data-end=\"1076\">A musical grid needs more than evenly spaced lines.<\/p><p data-start=\"1078\" data-end=\"1291\">You usually need bars, beats, beat subdivisions, step divisions, time signatures, quantized pointer positions, snapping, scrolling, zooming, playhead rendering, and visual styling that still stays editable in UMG.<\/p><p data-start=\"1293\" data-end=\"1387\">UMGMusicalGrids handles that foundation for you, so you can focus on the music tool around it.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6b06881 e-flex e-con-boxed e-con e-parent\" data-id=\"6b06881\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5fb8cd7 elementor-widget elementor-widget-text-editor\" data-id=\"5fb8cd7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3 data-section-id=\"kznj3h\" data-start=\"1389\" data-end=\"1430\">Is UMGMusicalGrids a full piano roll?<\/h3><p data-start=\"1432\" data-end=\"1465\">No. It is the musical grid layer.<\/p><p data-start=\"1467\" data-end=\"1667\">It is designed to solve the time-grid part cleanly so it can fit into larger music UI systems such as piano rolls, clip editors, MIDI editors, sequencers, timeline tools, and runtime music interfaces.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f9ef73f e-flex e-con-boxed e-con e-parent\" data-id=\"f9ef73f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f32781c elementor-widget elementor-widget-text-editor\" data-id=\"f32781c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"iu1zzt\" data-start=\"1669\" data-end=\"1685\">Core features<\/h2><ul data-start=\"1687\" data-end=\"2436\"><li data-section-id=\"npsqfy\" data-start=\"1687\" data-end=\"1717\">Bar and beat grid generation<\/li><li data-section-id=\"1g4deb8\" data-start=\"1718\" data-end=\"1749\">Optional musical subdivisions<\/li><li data-section-id=\"1tmnrrz\" data-start=\"1750\" data-end=\"1813\">Half-beat, third-beat, quarter-beat, and sixth-beat divisions<\/li><li data-section-id=\"1a0usld\" data-start=\"1814\" data-end=\"1883\">Step, half-step, third-step, quarter-step, and sixth-step divisions<\/li><li data-section-id=\"2x4gfq\" data-start=\"1884\" data-end=\"1908\">Time signature support<\/li><li data-section-id=\"102wmy7\" data-start=\"1909\" data-end=\"1941\">Ticks-per-quarter-note support<\/li><li data-section-id=\"172oeba\" data-start=\"1942\" data-end=\"1991\">Horizontal or vertical musical time orientation<\/li><li data-section-id=\"b5beu7\" data-start=\"1992\" data-end=\"2018\">Configurable bar spacing<\/li><li data-section-id=\"1b8wyw4\" data-start=\"2019\" data-end=\"2047\">Musical axis size in beats<\/li><li data-section-id=\"uydrvc\" data-start=\"2048\" data-end=\"2068\">Grid density modes<\/li><li data-section-id=\"1l7pcsx\" data-start=\"2069\" data-end=\"2094\">Grid quantization modes<\/li><li data-section-id=\"kaa285\" data-start=\"2095\" data-end=\"2151\">Movement and resize snapping from musical quantization<\/li><li data-section-id=\"iygurw\" data-start=\"2152\" data-end=\"2195\">Pointer events reported in beats and bars<\/li><li data-section-id=\"16v6s09\" data-start=\"2196\" data-end=\"2241\">Quantized and unquantized pointer positions<\/li><li data-section-id=\"1vzse2w\" data-start=\"2242\" data-end=\"2282\">Primary-button and touch input support<\/li><li data-section-id=\"zj7b7o\" data-start=\"2283\" data-end=\"2310\">Playhead cursor rendering<\/li><li data-section-id=\"1sbxe8l\" data-start=\"2311\" data-end=\"2374\">Designer-editable line styles, labels, ticks, and backgrounds<\/li><li data-section-id=\"1mkcg40\" data-start=\"2375\" data-end=\"2407\">Blueprint and C++ friendly API<\/li><li data-section-id=\"1lgh7dt\" data-start=\"2408\" data-end=\"2436\">Based on Enhanced UI Grids<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-47167d2 e-flex e-con-boxed e-con e-parent\" data-id=\"47167d2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a5e2f8 elementor-widget elementor-widget-text-editor\" data-id=\"6a5e2f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The source currently exposes the main musical settings through <code data-start=\"2501\" data-end=\"2522\">MusicalTimeSettings<\/code>, <code data-start=\"2524\" data-end=\"2544\">MusicalLineGridIDs<\/code>, <code data-start=\"2546\" data-end=\"2559\">GridDensity<\/code>, <code data-start=\"2561\" data-end=\"2579\">GridQuantization<\/code>, playhead settings, pointer settings, and Blueprint events for pointer and geometry updates.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4adfd74 e-flex e-con-boxed e-con e-parent\" data-id=\"4adfd74\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-afc73bf elementor-widget elementor-widget-text-editor\" data-id=\"afc73bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"8hztkc\" data-start=\"2712\" data-end=\"2731\">Typical workflow<\/h2><h3 data-section-id=\"h6h51p\" data-start=\"2733\" data-end=\"2754\">1. Add the widget<\/h3><p data-start=\"2756\" data-end=\"2805\">Place the musical grid canvas in your UMG layout.<\/p><p data-start=\"2807\" data-end=\"2947\">Use it as the time-grid layer for a piano roll, sequencer, MIDI editor, clip editor, step sequencer, automation lane, or runtime music tool.<\/p><h3 data-section-id=\"1ptsudn\" data-start=\"2949\" data-end=\"2978\">2. Configure musical time<\/h3><p data-start=\"2980\" data-end=\"3083\">Set the time signature, ticks per quarter note, time orientation, bar spacing, and total size in beats.<\/p><p data-start=\"3085\" data-end=\"3178\">The widget uses these values to keep the musical grid aligned with your project\u2019s time model.<br \/><br \/><\/p><h3 data-section-id=\"ddkb2e\" data-start=\"3180\" data-end=\"3206\">3. Choose grid density<\/h3><p data-start=\"3208\" data-end=\"3321\">Use a minimal grid with bars and beats, or let the widget maintain the full built-in set of musical subdivisions.<\/p><p data-start=\"3323\" data-end=\"3487\">Bars and beats are treated as required musical grid entries. Optional lower divisions are controlled by the grid density mode.<\/p><h3 data-section-id=\"hvg2qk\" data-start=\"3489\" data-end=\"3513\">4. Pick quantization<\/h3><p data-start=\"3515\" data-end=\"3563\">Choose the active musical quantization division.<\/p><p data-start=\"3565\" data-end=\"3731\">The grid can use that quantization for pointer output, visual subdivision display, and movement or resize snapping when enabled.<\/p><h3 data-section-id=\"1tf1ngr\" data-start=\"3733\" data-end=\"3754\">5. Style the grid<\/h3><p data-start=\"3756\" data-end=\"3820\">Customize the underlying LineGrid entries to match your product.<\/p><p data-start=\"3822\" data-end=\"3982\">You can style bars, beats, subdivisions, labels, tick marks, backgrounds, line thickness, colors, and draw priority through the existing LineGrid styling model.<br \/><br \/><\/p><h3 data-section-id=\"1jf91cv\" data-start=\"3984\" data-end=\"4014\">6. Hook up your tool logic<\/h3><p data-start=\"4016\" data-end=\"4087\">Bind to musical pointer events and receive positions in beats and bars.<\/p><p data-start=\"4089\" data-end=\"4307\">Pointer events include physical position, exact beat position, quantized beat position, exact bar position, quantized bar position, active quantization, button, and validity state.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-06da32b e-flex e-con-boxed e-con e-parent\" data-id=\"06da32b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d055ad elementor-widget elementor-widget-text-editor\" data-id=\"4d055ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"mh4hqm\" data-start=\"4309\" data-end=\"4329\">Made for music UI<\/h2><p data-start=\"4331\" data-end=\"4355\">Use UMGMusicalGrids for:<\/p><ul data-start=\"4357\" data-end=\"4578\"><li data-section-id=\"17tmcnz\" data-start=\"4357\" data-end=\"4370\">piano rolls<\/li><li data-section-id=\"6e0leb\" data-start=\"4371\" data-end=\"4385\">MIDI editors<\/li><li data-section-id=\"19st1ms\" data-start=\"4386\" data-end=\"4403\">step sequencers<\/li><li data-section-id=\"85fix3\" data-start=\"4404\" data-end=\"4420\">clip launchers<\/li><li data-section-id=\"gwti5k\" data-start=\"4421\" data-end=\"4440\">arrangement views<\/li><li data-section-id=\"15c4yfw\" data-start=\"4441\" data-end=\"4458\">timeline rulers<\/li><li data-section-id=\"15ztdc5\" data-start=\"4459\" data-end=\"4479\">automation editors<\/li><li data-section-id=\"1ac7df5\" data-start=\"4480\" data-end=\"4494\">rhythm tools<\/li><li data-section-id=\"1uthkqz\" data-start=\"4495\" data-end=\"4522\">music learning interfaces<\/li><li data-section-id=\"mjpl24\" data-start=\"4523\" data-end=\"4551\">runtime music applications<\/li><li data-section-id=\"1kz76vi\" data-start=\"4552\" data-end=\"4578\">editor-style audio tools<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6fa1fe8 e-flex e-con-boxed e-con e-parent\" data-id=\"6fa1fe8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7a7759d elementor-widget elementor-widget-text-editor\" data-id=\"7a7759d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"14b3mgh\" data-start=\"4580\" data-end=\"4621\">High-level API, music-focused controls<\/h2><p data-start=\"4623\" data-end=\"4699\">UMGMusicalGrids hides the low-level grid setup behind music-domain settings.<\/p><p data-start=\"4701\" data-end=\"4729\">You work with concepts like:<\/p><ul data-start=\"4731\" data-end=\"4916\"><li data-section-id=\"vi7wjd\" data-start=\"4731\" data-end=\"4747\">time signature<\/li><li data-section-id=\"hvpnx\" data-start=\"4748\" data-end=\"4772\">ticks per quarter note<\/li><li data-section-id=\"1j3ew8a\" data-start=\"4773\" data-end=\"4779\">bars<\/li><li data-section-id=\"16cwvjd\" data-start=\"4780\" data-end=\"4787\">beats<\/li><li data-section-id=\"16n84zt\" data-start=\"4788\" data-end=\"4795\">steps<\/li><li data-section-id=\"1ltmk9w\" data-start=\"4796\" data-end=\"4815\">beat subdivisions<\/li><li data-section-id=\"c8uktk\" data-start=\"4816\" data-end=\"4830\">grid density<\/li><li data-section-id=\"qv3c9t\" data-start=\"4831\" data-end=\"4850\">grid quantization<\/li><li data-section-id=\"1b69v4b\" data-start=\"4851\" data-end=\"4866\">size in beats<\/li><li data-section-id=\"1a344un\" data-start=\"4867\" data-end=\"4891\">playhead beat position<\/li><li data-section-id=\"1a344un\" data-start=\"4867\" data-end=\"4891\">musical pointer events<\/li><\/ul><p>\u00a0<\/p><p data-start=\"4918\" data-end=\"4942\">Not generic layout math.<\/p><p data-start=\"4944\" data-end=\"5186\">The widget maps musical time divisions to LineGrid IDs internally, so callers can request musical concepts like bars, beats, or steps rather than manually resolving the correct LineGrid object every time.<\/p><p>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b5d6e3 e-flex e-con-boxed e-con e-parent\" data-id=\"4b5d6e3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c55b2ac elementor-widget elementor-widget-text-editor\" data-id=\"c55b2ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"1switn9\" data-start=\"5188\" data-end=\"5217\">What the system takes over<\/h2><p data-start=\"5219\" data-end=\"5314\">UMGMusicalGrids is designed to help without taking full styling control away from the designer.<\/p><p data-start=\"5316\" data-end=\"5419\">At design time and synchronization time, the system manages the parts that must stay musically correct:<\/p><ul data-start=\"5421\" data-end=\"5829\"><li data-section-id=\"twbk6a\" data-start=\"5421\" data-end=\"5452\">required Bars and Beats grids<\/li><li data-section-id=\"5joagg\" data-start=\"5453\" data-end=\"5503\">optional subdivision grids based on grid density<\/li><li data-section-id=\"1j7u5pg\" data-start=\"5504\" data-end=\"5531\">musical LineGrid identity<\/li><li data-section-id=\"g6jl3e\" data-start=\"5532\" data-end=\"5558\">musical grid orientation<\/li><li data-section-id=\"ncycdy\" data-start=\"5559\" data-end=\"5617\">line spacing derived from bar spacing and time signature<\/li><li data-section-id=\"kw6sqn\" data-start=\"5618\" data-end=\"5678\">parent relationships between bars, beats, and subdivisions<\/li><li data-section-id=\"czclsl\" data-start=\"5679\" data-end=\"5696\">logical offsets<\/li><li data-section-id=\"16zfq9r\" data-start=\"5697\" data-end=\"5740\">navigation size for the musical time axis<\/li><li data-section-id=\"t4ny2b\" data-start=\"5741\" data-end=\"5773\">active quantization visibility<\/li><li data-section-id=\"kjv3qc\" data-start=\"5774\" data-end=\"5829\">movement and resize snap grid assignment when enabled<br \/><br \/><\/li><\/ul><p>The class documentation states that the sync path only edits known musical LineGrids, never removes or modifies non-musical LineGrids, and preserves existing musical LineGrid styling while updating musical identity, orientation, line spacing, parent relationship, logical offset, navigation logical size, and quantization visibility.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-28f7685 e-flex e-con-boxed e-con e-parent\" data-id=\"28f7685\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3849d92 elementor-widget elementor-widget-text-editor\" data-id=\"3849d92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"1a6mh8c\" data-start=\"6204\" data-end=\"6239\">What designers can still control<\/h2><p data-start=\"6241\" data-end=\"6322\">Designers still have access to the visual and product-specific parts of the grid.<\/p><p data-start=\"6324\" data-end=\"6341\">They can control:<\/p><ul data-start=\"6343\" data-end=\"6670\"><li data-section-id=\"72l3e0\" data-start=\"6343\" data-end=\"6356\">line colors<\/li><li data-section-id=\"1ulllkg\" data-start=\"6357\" data-end=\"6373\">line thickness<\/li><li data-section-id=\"1czwfve\" data-start=\"6374\" data-end=\"6389\">draw priority<\/li><li data-section-id=\"12a7x57\" data-start=\"6390\" data-end=\"6406\">label settings<\/li><li data-section-id=\"188exx4\" data-start=\"6407\" data-end=\"6422\">tick settings<\/li><li data-section-id=\"1vogyhg\" data-start=\"6423\" data-end=\"6443\">background styling<\/li><li data-section-id=\"1w2tp20\" data-start=\"6444\" data-end=\"6457\">bar spacing<\/li><li data-section-id=\"150o1um\" data-start=\"6458\" data-end=\"6471\">orientation<\/li><li data-section-id=\"c8uktk\" data-start=\"6472\" data-end=\"6486\">grid density<\/li><li data-section-id=\"vzg5i1\" data-start=\"6487\" data-end=\"6501\">quantization<\/li><li data-section-id=\"168fndm\" data-start=\"6502\" data-end=\"6518\">playhead brush<\/li><li data-section-id=\"16g2f0i\" data-start=\"6519\" data-end=\"6535\">playhead width<\/li><\/ul><p>etc&#8230;<br \/><br \/>Normal lines, labels, ticks, backgrounds, and borders remain controlled by LineGridCanvasPanel and the configured LineGrid properties; the musical renderer only owns the extra musical overlay rendering such as the playhead cursor.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eb6c280 e-flex e-con-boxed e-con e-parent\" data-id=\"eb6c280\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69a875f elementor-widget elementor-widget-text-editor\" data-id=\"69a875f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"1iwg9u5\" data-start=\"6942\" data-end=\"6967\">Musical pointer events<\/h2><p data-start=\"6969\" data-end=\"7026\">UMGMusicalGrids converts pointer input into musical time.<\/p><p data-start=\"7028\" data-end=\"7063\">A click, drag, or touch can report:<\/p><ul data-start=\"7065\" data-end=\"7230\"><li data-section-id=\"12idyh0\" data-start=\"7065\" data-end=\"7084\">physical position<\/li><li data-section-id=\"1t27jnm\" data-start=\"7085\" data-end=\"7098\">exact beats<\/li><li data-section-id=\"16shy4k\" data-start=\"7099\" data-end=\"7116\">quantized beats<\/li><li data-section-id=\"16v9141\" data-start=\"7117\" data-end=\"7129\">exact bars<\/li><li data-section-id=\"7r5drb\" data-start=\"7130\" data-end=\"7146\">quantized bars<\/li><li data-section-id=\"xek32t\" data-start=\"7147\" data-end=\"7168\">active quantization<\/li><li data-section-id=\"3vpbpk\" data-start=\"7169\" data-end=\"7203\">whether quantization was applied<\/li><li data-section-id=\"o101gj\" data-start=\"7204\" data-end=\"7219\">source button<\/li><li data-section-id=\"1uzy2re\" data-start=\"7220\" data-end=\"7230\">validity<\/li><\/ul><p data-start=\"7232\" data-end=\"7373\">This makes it suitable for note creation, clip placement, playhead seeking, range selection, step editing, and other music-tool interactions.<br \/><br \/>The input module converts pointer positions through the Beats grid, applies the configured grid quantization when available, and falls back to exact beat positions when quantization is disabled or unavailable<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-248ece2 e-flex e-con-boxed e-con e-parent\" data-id=\"248ece2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d25d3f3 elementor-widget elementor-widget-text-editor\" data-id=\"d25d3f3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"e1f2j3\" data-start=\"7624\" data-end=\"7641\">Playhead-ready<\/h2><p data-start=\"7643\" data-end=\"7694\">UMGMusicalGrids includes a simple playhead overlay.<\/p><p data-start=\"7696\" data-end=\"7864\">Set the playhead beat time, brush, and width, and the grid renders the cursor in the correct orientation using the Beats LineGrid.<\/p><p data-start=\"7866\" data-end=\"7957\">Use it for playback indicators, edit cursors, preview positions, or timeline seek feedback.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a5b99d2 e-flex e-con-boxed e-con e-parent\" data-id=\"a5b99d2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-820305b elementor-widget elementor-widget-text-editor\" data-id=\"820305b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 data-section-id=\"mmcv7q\" data-start=\"7959\" data-end=\"7983\">Built for integration<\/h2><p data-start=\"7985\" data-end=\"8049\">UMGMusicalGrids is designed to fit into larger music UI systems.<\/p><p data-start=\"8051\" data-end=\"8205\">Use it as the grid foundation inside your own piano roll, MIDI editor, sequencer, clip editor, rhythm editor, automation tool, or runtime music interface.<\/p><p data-start=\"8207\" data-end=\"8348\">It provides the musical grid, timing, quantization, pointer conversion, and playhead layer while your product owns the higher-level workflow.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>UMG Musical Grids Musical grid UI for Unreal Engine Build timeline, piano-roll, sequencer, and music-editor grids in UMG without rebuilding musical time layout from scratch. UMGMusicalGrids is a focused Unreal Engine plugin for creating music-aware grid widgets in UMG. It gives you a higher-level musical canvas built on top of LineGridCanvasPanel, with built-in support for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":14043,"template":"elementor_header_footer","edd-categories":[11,4],"edd-tags":[108,139],"class_list":["post-14009","download","type-download","status-publish","has-post-thumbnail","hentry","download_category-code-plugins","download_category-unreal-engine","download_tag-unreal-engine","download_tag-userinterface","entry","has-media","edd-download","edd-download-cat-code-plugins","edd-download-cat-unreal-engine","edd-download-tag-unreal-engine","edd-download-tag-userinterface"],"acf":[],"_links":{"self":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/edd-downloads\/14009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/users\/1"}],"version-history":[{"count":2,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/edd-downloads\/14009\/revisions"}],"predecessor-version":[{"id":14049,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/edd-downloads\/14009\/revisions\/14049"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media\/14043"}],"wp:attachment":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media?parent=14009"}],"wp:term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/edd-categories?post=14009"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/edd-tags?post=14009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}