1<!DOCTYPE html> 2<html lang="en-US"> 3 4<head> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta charset="utf-8"> 7 <link rel="stylesheet" href="/themes/serene/assets/css/styles.css?a19eaddb624b7505f16cc3c8d41531c7" /> 8 <title>Blog</title> 9<meta property="og:title" content="Blog"> 10<meta name="twitter:title" content="Blog"> 11<link rel="icon" href="/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/favicon.ico"> 12<link rel="apple-touch-icon" href="https://www.darkintervals.org/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/favicon.ico" /> 13<link rel="canonical" href="https://www.darkintervals.org/blog"> 14<meta property="og:url" content="https://www.darkintervals.org/blog"> 15<meta name="description" content="Dark Intervals creates boutique Kontakt instruments designed for composers and producers. Authentic sample libraries and inspiring virtual instruments for music creation."> 16<meta property="og:description" content="Dark Intervals creates boutique Kontakt instruments designed for composers and producers. Authentic sample libraries and inspiring virtual instruments for music creation."> 17<meta name="twitter:description" content="Dark Intervals creates boutique Kontakt instruments designed for composers and producers. Authentic sample libraries and inspiring virtual instruments for music creation."> 18<meta name="twitter:card" content="summary" /> 19<meta name="keywords" content="dark intervals, kontakt instruments, kontakt libraries, virtual instruments for composing, sample libraries for composers, kontakt plugins, scoring kontakt instruments, ambient kontakt libraries, music production kontakt, sound design, ethnic plugins"> 20<meta name="generator" content="Articulation - https://www.articulationsites.com"> 21<meta property="og:type" content="website"> 22 23<!-- Google tag (gtag.js) --> 24<!--
vendor: 64 bytes, lines 24-25
24 25<script async src="https://www.googletagmanager.com/gtag/js?id=
25AW-17927467598
vendor: 12 bytes, line 25
25"></script>
26<script> 27
vendor: 134 bytes, lines 27-31
27window.dataLayer = window.dataLayer || []; 28 function gtag(){dataLayer.push(arguments);} 29 gtag('js', new Date()); 30 31 gtag('config', '
31AW-17927467598
vendor: 4 bytes, line 31
31');
32</script>
32 33--> 34<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 34-35
34 35<script async src="https://www.googletagmanager.com/gtag/js?id=
35G-53X419Z11S
vendor: 12 bytes, line 35
35"></script>
36<script> 37
vendor: 134 bytes, lines 37-41
37window.dataLayer = window.dataLayer || []; 38 function gtag(){dataLayer.push(arguments);} 39 gtag('js', new Date()); 40 41 gtag('config', '
41G-53X419Z11S
vendor: 4 bytes, line 41
41');
42</script>
42 43 44 45<!-- Meta Pixel Code -->
46<script>
vendor: 399 bytes, lines 46-55
46 47!function(f,b,e,v,n,t,s) 48{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 49n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 50if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 51n.queue=[];t=b.createElement(e);t.async=!0; 52t.src=v;s=b.getElementsByTagName(e)[0]; 53s.parentNode.insertBefore(t,s)}(window, document,'script', 54'https://connect.facebook.net/en_US/fbevents.js'); 55fbq('init', '
55713649441039707
vendor: 30 bytes, lines 55-56
55'); 56fbq('track', 'PageView');
57</script>
57 58<noscript><img height="1" width="1" style="display:none" 59src="https://www.facebook.com/tr?id=713649441039707&ev=PageView&noscript=1" 60/></noscript> 61<!-- End Meta Pixel Code --> 62
63<script 64 id="fsc-api" 65 src="https://sbl.onfastspring.com/sbl/1.0.6/fastspring-builder.min.js" 66 type="text/javascript" 67 data-popup-closed="onFSPopupClosed" 68 data-storefront="badstringstudio.onfastspring.com/popup-badstringstudio" 69 data-continuous="true"> 70</script>
70 71
72<script> 73 function onFSPopupClosed(orderReference) { 74 if (orderReference) 75 { 76 console.log(orderReference.id); 77 fastspring.builder.reset(); 78 window.location.href = "https://www.darkintervals.org/thank-you.html"; 79 } else { 80 console.log("no order ID"); 81 } 82 } 83</script>
83 84 85<!-- MailerLite Universal -->
86<script> 87 (function(w,d,e,u,f,l,n){w[f]=w[f]||function(){(w[f].q=w[f].q||[]) 88 .push(arguments);},l=d.createElement(e),l.async=1,l.src=u, 89 n=d.getElementsByTagName(e)[0],n.parentNode.insertBefore(l,n);}) 90 (window,document,'script','https://assets.mailerlite.com/js/universal.js','ml'); 91 ml('account', '2423109'); 92</script>
92 93<!-- End MailerLite Universal --> 94 95<!-- ============================================================ 96 DARK INTERVALS â PRODUCTS COMPONENT (site-wide Header Code) 97 Paste this ENTIRE file into: 98 Site â Settings â Site-Wide Code Settings â Header Code 99 100 It holds the product data, CSS and renderer only. It draws nothing on 101 its own â each page decides what to show with a mount div placed in 102 that page's embed-code block (see page-mounts.html). 103 104 Generated from products.html (lines 68â1193) with the similar_products 105 lookup fix applied. Contains NO mount div on purpose: a div here would 106 be moved into <body> by the browser and render on every page. 107 ============================================================ --> 108
109<script> 110window.DI_PRODUCTS = [ 111 { 112 "name": "Ukulele", 113 "subtitle": "Cinematic Scoring Ukulele", 114 "product_type": "Kontakt", 115 "category": null, 116 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/ukulele.jpg", 117 "price": 45.00, 118 // "original_price": 45.00, 119 "path": "/ukulele", 120 "sale": false, 121 "featured": true, 122 "init_hidden": false, 123 "fsc_item_path_value": "ukulele", 124 "fsc_action": "Add,ViewCart", 125 "fbq_action": "InitiateCheckout", 126 "similar_products": ["Mandolin Textures", "Pocket Mandolin"] 127 }, 128 { 129 "name": "Arctica", 130 "subtitle": "Collection of Synth pads", 131 "product_type": "Kontakt", 132 "category": null, 133 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/arctica.jpg", 134 "price": 75.00, 135 "path": "/arctica", 136 "sale": false, 137 "featured": true, 138 "init_hidden": false, 139 "fsc_item_path_value": "arctica", 140 "fsc_action": "Add,ViewCart", 141 "fbq_action": "InitiateCheckout", 142 "similar_products": ["Deep Blue", "Artefact"] 143 }, 144 { 145 "name": "Rawa", 146 "subtitle": "Inspired by tribal grooves", 147 "product_type": "Kontakt", 148 "category": null, 149 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/rawa.jpg", 150 "price": 49.00, 151 "path": "/rawa", 152 "sale": false, 153 "featured": false, 154 "init_hidden": false, 155 "fsc_item_path_value": "rawa", 156 "fsc_action": "Add,ViewCart", 157 "fbq_action": "InitiateCheckout", 158 "similar_products": [] 159 }, 160 { 161 "name": "Deep Blue", 162 "subtitle": "Collection of Synth pads", 163 "product_type": "Kontakt", 164 "category": null, 165 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/deep-blue.jpg", 166 "price": 59.00, 167 "path": "/deep-blue", 168 "sale": false, 169 "featured": true, 170 "init_hidden": false, 171 "fsc_item_path_value": "deep-blue", 172 "fsc_action": "Add,ViewCart", 173 "fbq_action": "InitiateCheckout", 174 "similar_products": ["Arctica", "Artefact"] 175 }, 176 { 177 "name": "Pulsar", 178 "subtitle": "Vintage sounding polysynth", 179 "product_type": "Kontakt", 180 "category": null, 181 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/pulsar.jpg", 182 "price": 35.00, 183 "path": "/pulsar", 184 "sale": false, 185 "featured": false, 186 "init_hidden": false, 187 "fsc_item_path_value": "pulsar", 188 "fsc_action": "Add,ViewCart", 189 "fbq_action": "InitiateCheckout", 190 "similar_products": [] 191 }, 192 { 193 "name": "Pollux", 194 "subtitle": "Vintage sounding polysynth", 195 "product_type": "Kontakt", 196 "category": null, 197 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/pollux.jpeg", 198 "price": 39.00, 199 "path": "/pollux", 200 "sale": false, 201 "featured": false, 202 "init_hidden": false, 203 "fsc_item_path_value": "pollux", 204 "fsc_action": "Add,ViewCart", 205 "fbq_action": "InitiateCheckout", 206 "similar_products": [] 207 }, 208 { 209 "name": "Artefact", 210 "subtitle": "Ambient Cinematic Toolkit", 211 "product_type": "Kontakt", 212 "category": null, 213 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/artefact.jpg", 214 "price": 49.00, 215 "path": "/artefact", 216 "sale": false, 217 "featured": false, 218 "init_hidden": false, 219 "fsc_item_path_value": "artefact", 220 "fsc_action": "Add,ViewCart", 221 "fbq_action": "InitiateCheckout", 222 "similar_products": ["Deep Blue", "Arctica"] 223 }, 224 { 225 "name": "LDW-1973", 226 "subtitle": "1973 Ludwig Kit", 227 "product_type": "Kontakt", 228 "category": null, 229 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/ldw-1973.jpg", 230 "price": 35.00, 231 "path": "/ldw-1973", 232 "sale": false, 233 "featured": false, 234 "init_hidden": false, 235 "fsc_item_path_value": "ldw-1973", 236 "fsc_action": "Add,ViewCart", 237 "fbq_action": "InitiateCheckout", 238 "similar_products": [] 239 }, 240 { 241 "name": "Sonorous", 242 "subtitle": "Trailer Synth Basses", 243 "product_type": "Kontakt", 244 "category": null, 245 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/sonorous.jpg", 246 "price": 45.00, 247 "path": "/sonorous", 248 "sale": false, 249 "featured": false, 250 "init_hidden": false, 251 "fsc_item_path_value": "sonorous", 252 "fsc_action": "Add,ViewCart", 253 "fbq_action": "InitiateCheckout", 254 "similar_products": [] 255 }, 256 { 257 "name": "Mandolin Textures", 258 "subtitle": "Mandolin Series", 259 "product_type": "Kontakt", 260 "category": null, 261 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/mandolin.jpg", 262 "price": 29.00, 263 "path": "/mandolin-textures", 264 "sale": false, 265 "featured": false, 266 "init_hidden": false, 267 "fsc_item_path_value": "mandolin-textures", 268 "fsc_action": "Add,ViewCart", 269 "fbq_action": "InitiateCheckout", 270 "similar_products": ["Ukulele", "Pocket Mandolin"] 271 }, 272 { 273 "name": "Udu", 274 "subtitle": "World Percussion Series", 275 "product_type": "Kontakt", 276 "category": null, 277 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/udu.jpg", 278 "price": 20.00, 279 "path": "/udu", 280 "sale": false, 281 "featured": false, 282 "init_hidden": false, 283 "fsc_item_path_value": "udu", 284 "fsc_action": "Add,ViewCart", 285 "fbq_action": "InitiateCheckout", 286 "similar_products": [] 287 }, 288 { 289 "name": "Guitars In Space VOL 4", 290 "subtitle": "Cinematic Ambient Guitar Toolkit", 291 "product_type": "Kontakt", 292 "category": null, 293 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/gis-4.jpg", 294 "price": 35.00, 295 "path": "/guitars-in-space-vol-4", 296 "sale": false, 297 "featured": true, 298 "init_hidden": false, 299 "fsc_item_path_value": "guitars-in-space-vol-4", 300 "fsc_action": "Add,ViewCart", 301 "fbq_action": "InitiateCheckout", 302 "similar_products": ["Guitars In Space VOL 3", "Guitars In Space VOL 2", "Guitars In Space VOL 1", "Smooth Guitars VOL 2", "Smooth Guitars VOL 1"] 303 }, 304 { 305 "name": "Guitars In Space VOL 3", 306 "subtitle": "Cinematic Ambient Guitar Toolkit", 307 "product_type": "Kontakt", 308 "category": null, 309 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/gis-3.jpg", 310 "price": 29.00, 311 "path": "/guitars-in-space-vol-3", 312 "sale": false, 313 "featured": false, 314 "init_hidden": false, 315 "fsc_item_path_value": "guitars-in-space-vol-3", 316 "fsc_action": "Add,ViewCart", 317 "fbq_action": "InitiateCheckout", 318 "similar_products": ["Guitars In Space VOL 4", "Guitars In Space VOL 2", "Guitars In Space VOL 1", "Smooth Guitars VOL 2", "Smooth Guitars VOL 1"] 319 }, 320 { 321 "name": "Guitars In Space VOL 2", 322 "subtitle": "Cinematic Ambient Guitar Toolkit", 323 "product_type": "Kontakt", 324 "category": null, 325 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/gis-2.jpg", 326 "price": 29.00, 327 "path": "/guitars-in-space-vol-2", 328 "sale": false, 329 "featured": false, 330 "init_hidden": false, 331 "fsc_item_path_value": "guitars-in-space-vol-2", 332 "fsc_action": "Add,ViewCart", 333 "fbq_action": "InitiateCheckout", 334 "similar_products": ["Guitars In Space VOL 4", "Guitars In Space VOL 3", "Guitars In Space VOL 1", "Smooth Guitars VOL 2", "Smooth Guitars VOL 1"] 335 }, 336 { 337 "name": "Guitars In Space VOL 1", 338 "subtitle": "Cinematic Ambient Guitar Toolkit", 339 "product_type": "Kontakt", 340 "category": null, 341 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/gis-1.jpg", 342 "price": 29.00, 343 "path": "/guitars-in-space", 344 "sale": false, 345 "featured": false, 346 "init_hidden": false, 347 "fsc_item_path_value": "guitars-in-space", 348 "fsc_action": "Add,ViewCart", 349 "fbq_action": "InitiateCheckout", 350 "similar_products": ["Guitars In Space VOL 4", "Guitars In Space VOL 3", "Guitars In Space VOL 2", "Smooth Guitars VOL 2", "Smooth Guitars VOL 1"] 351 }, 352 { 353 "name": "Patmos", 354 "subtitle": "Pads and Atmospheres", 355 "product_type": "Kontakt", 356 "category": "free", 357 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/patmos.jpg", 358 "price": "FREE", 359 "path": "/patmos", 360 "sale": false, 361 "featured": false, 362 "init_hidden": true, 363 "fsc_item_path_value": "patmos", 364 "fsc_action": "Add,ViewCart", 365 "fbq_action": "InitiateCheckout", 366 "ml_form_id": "FBPUcr", 367 "similar_products": [] 368 }, 369 { 370 "name": "Smooth Guitars VOL 2", 371 "subtitle": "Funky and jazzy guitar loops and licks", 372 "product_type": "Kontakt", 373 "category": null, 374 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/smooth-guitars-2.jpg", 375 "price": 20.00, 376 "path": "/smooth-guitars-vol-2", 377 "sale": false, 378 "featured": false, 379 "init_hidden": false, 380 "fsc_item_path_value": "smooth-guitars-vol-2", 381 "fsc_action": "Add,ViewCart", 382 "fbq_action": "InitiateCheckout", 383 "similar_products": ["Smooth Guitars VOL 1"] 384 }, 385 { 386 "name": "Smooth Guitars VOL 1", 387 "subtitle": "Funky and jazzy guitar loops and licks", 388 "product_type": "Kontakt", 389 "category": null, 390 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/smooth-guitars-1.jpg", 391 "price": 20.00, 392 "path": "/smooth-guitars-vol-1", 393 "sale": false, 394 "featured": false, 395 "init_hidden": false, 396 "fsc_item_path_value": "smooth-guitars-vol-1", 397 "fsc_action": "Add,ViewCart", 398 "fbq_action": "InitiateCheckout", 399 "similar_products": ["Smooth Guitars VOL 2"] 400 }, 401 { 402 "name": "Irish Lyre Harp", 403 "subtitle": "Exotic sounding 10 string lyre harp", 404 "product_type": "Kontakt", 405 "category": "free", 406 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/irish-lyre-harp.jpg", 407 "price": "FREE", 408 "path": "/irish-lyre-harp", 409 "sale": false, 410 "featured": false, 411 "init_hidden": true, 412 "fsc_item_path_value": "irish-lyre-harp", 413 "fsc_action": "Add,ViewCart", 414 "fbq_action": "InitiateCheckout", 415 "ml_form_id": "030pvu", 416 "similar_products": [] 417 }, 418 { 419 "name": "Nocturnal", 420 "subtitle": "Textures and Pads", 421 "product_type": "Kontakt", 422 "category": "mosaic", 423 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/nocturnal_orig.jpg", 424 "price": 10.00, 425 "path": "/nocturnal", 426 "sale": false, 427 "featured": false, 428 "init_hidden": false, 429 "fsc_item_path_value": "nocturnal", 430 "fsc_action": "Add,ViewCart", 431 "fbq_action": "InitiateCheckout", 432 "similar_products": ["Pocket Mandolin", "Somnium", "Shaman Drum", "Red Room"] 433 }, 434 { 435 "name": "Pocket Mandolin", 436 "subtitle": "Compact A-style mandolin", 437 "product_type": "Kontakt", 438 "category": "mosaic", 439 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/pocket_mandolin_thumb.jpg", 440 "price": 10.00, 441 "path": "/pocket-mandolin", 442 "sale": false, 443 "featured": false, 444 "init_hidden": false, 445 "fsc_item_path_value": "pocket-mandolin", 446 "fsc_action": "Add,ViewCart", 447 "fbq_action": "InitiateCheckout", 448 "similar_products": ["Nocturnal", "Somnium", "Shaman Drum", "Red Room"] 449 }, 450 { 451 "name": "Somnium", 452 "subtitle": "Hyperreal Ambient Pads", 453 "product_type": "Kontakt", 454 "category": "mosaic", 455 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/somnium-thumbnail.jpg", 456 "price": 10.00, 457 "path": "/somnium", 458 "sale": false, 459 "featured": false, 460 "init_hidden": false, 461 "fsc_item_path_value": "somnium", 462 "fsc_action": "Add,ViewCart", 463 "fbq_action": "InitiateCheckout", 464 "similar_products": ["Nocturnal", "Pocket Mandolin", "Shaman Drum", "Red Room"] 465 }, 466 { 467 "name": "Shaman Drum", 468 "subtitle": "Ritual Skin Drum", 469 "product_type": "Kontakt", 470 "category": "mosaic", 471 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/shaman-drum.jpg", 472 "price": 10.00,
473 "path": "/shaman-drum", 474 "sale": false, 475 "featured": false, 476 "init_hidden": false, 477 "fsc_item_path_value": "shaman-drum", 478 "fsc_action": "Add,ViewCart", 479 "fbq_action": "InitiateCheckout", 480 "similar_products": ["Nocturnal", "Pocket Mandolin", "Somnium", "Red Room"] 481 }, 482 { 483 "name": "Red Room", 484 "subtitle": "Ominous Pads and Textures", 485 "product_type": "Kontakt", 486 "category": "mosaic", 487 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/red_room_-_thumbnail.jpg", 488 "price": 10.00, 489 "path": "/red-room", 490 "sale": false, 491 "featured": false, 492 "init_hidden": false, 493 "fsc_item_path_value": "red-room", 494 "fsc_action": "Add,ViewCart", 495 "fbq_action": "InitiateCheckout", 496 "similar_products": ["Nocturnal", "Pocket Mandolin", "Somnium", "Shaman Drum"] 497 }, 498 { 499 "name": "Complete Bundle", 500 "subtitle": " ", 501 "product_type": "Bundle", 502 "category": "bundle", 503 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/complete-bundle.png", 504 "price": 299.00, 505 "path": "/complete-bundle", 506 "sale": false, 507 "featured": false, 508 "init_hidden": true, 509 "fsc_item_path_value": "complete-bundle", 510 "fsc_action": "Add,ViewCart", 511 "fbq_action": "InitiateCheckout", 512 "similar_products": [] 513 }, 514 { 515 "name": "Ultimate Pad Collection 2", 516 "subtitle": " ", 517 "product_type": "Bundle", 518 "category": "bundle", 519 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/ultimate-pad-collection-2.png", 520 "price": 159.00, 521 "path": "/ultimate-pad-collection-2", 522 "sale": false, 523 "featured": false, 524 "init_hidden": true, 525 "fsc_item_path_value": "ultimate-pad-collection-2", 526 "fsc_action": "Add,ViewCart", 527 "fbq_action": "InitiateCheckout", 528 "similar_products": [] 529 }, 530 { 531 "name": "Ultimate Pad Collection", 532 "subtitle": " ", 533 "product_type": "Bundle", 534 "category": "bundle", 535 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/ultimate-pad-collection.png", 536 "price": 119.00, 537 "path": "/ultimate-pad-collection", 538 "sale": false, 539 "featured": false, 540 "init_hidden": true, 541 "fsc_item_path_value": "ultimate-pad-collection", 542 "fsc_action": "Add,ViewCart", 543 "fbq_action": "InitiateCheckout", 544 "similar_products": [] 545 }, 546 { 547 "name": "Ethnic Bundle", 548 "subtitle": " ", 549 "product_type": "Bundle", 550 "category": "bundle", 551 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/ethnic-bundle.png", 552 "price": 99.00, 553 "path": "/ethnic-bundle", 554 "sale": false, 555 "featured": false, 556 "init_hidden": true, 557 "fsc_item_path_value": "ethnic-bundle", 558 "fsc_action": "Add,ViewCart", 559 "fbq_action": "InitiateCheckout", 560 "similar_products": [] 561 }, 562 { 563 "name": "Burning Drums VOL 1", 564 "subtitle": " ", 565 "product_type": "Sample Pack", 566 "category": null, 567 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/burning-drums-1.jpg", 568 "price": 15.00, 569 "path": "/burning-drums-vol-1", 570 "sale": false, 571 "featured": false, 572 "init_hidden": false, 573 "fsc_item_path_value": "burning-drums-vol-1", 574 "fsc_action": "Add,ViewCart", 575 "fbq_action": "InitiateCheckout", 576 "similar_products": [] 577 }, 578 { 579 "name": "Burning Drums VOL 2", 580 "subtitle": " ", 581 "product_type": "Sample Pack", 582 "category": null, 583 "image": "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/burning-drums-2.jpg", 584 "price": 15.00, 585 "coming_soon": true, 586 "path": "/burning-drums-vol-2", 587 "sale": false, 588 "featured": false, 589 "init_hidden": false, 590 "fsc_item_path_value": "burning-drums-vol-2", 591 "fsc_action": "Add,ViewCart", 592 "fbq_action": "InitiateCheckout", 593 "similar_products": [] 594 } 595]; 596</script>
596 597 598 599<!-- ð¨ Styling â everything is scoped to .di-products so this block is safe 600 to embed inside an instrument page without restyling the rest of it. --> 601<style> 602 .di-products { 603 color: #ffffff; 604 font-family: Arial, sans-serif; 605 } 606 607 .di-products .di-section-title { 608 text-align: center; 609 font-size: 22px; 610 letter-spacing: 1px; 611 margin: 0 0 30px 0; 612 color: #ffffff; 613 } 614 615 /* Search box */ 616 .di-products .di-search-wrap { 617 text-align: center; 618 margin-bottom: 30px; 619 } 620 621 .di-products .di-search { 622 padding: 10px 15px; 623 width: 450px; 624 max-width: 90%; 625 border-radius: 25px; 626 border: 1px solid #444; 627 background: #1e1e1e; 628 color: #ffffff; 629 font-size: 14px; 630 outline: none; 631 } 632 633 .di-products .di-search::placeholder { 634 color: #888; 635 } 636 637 /* Filter buttons - minimal / transparent. 638 Two rows: the product GROUP (Kontakt / Sample Packs) on top, then the 639 sub-filters (All / Featured / ...) which only apply to the Kontakt group 640 and are hidden while Sample Packs is active. */ 641 .di-products .di-filters { 642 text-align: center; 643 margin-bottom: 40px; 644 } 645 646 .di-products .di-groups { 647 margin-bottom: 12px; 648 } 649 650 /* Base = the SUB-filter size: one step down from the old buttons. */ 651 .di-products .filter-btn { 652 background: transparent; 653 border: 1px solid #444; 654 color: #888; 655 padding: 8px 16px; 656 margin: 4px; 657 border-radius: 25px; 658 cursor: pointer; 659 font-size: 13px; 660 font-family: inherit; 661 transition: all 0.25s ease; 662 } 663 664 /* Group buttons keep the original button size. */ 665 .di-products .filter-btn-group { 666 padding: 10px 20px; 667 margin: 5px; 668 font-size: 14px; 669 letter-spacing: 1px; 670 } 671 672 .di-products .filter-btn:hover { 673 color: #ffffff; 674 border-color: #888; 675 } 676 677 /* The old rule was "border: 2px", which grew the button by 1px on every side 678 and nudged the whole row when the selection changed. An inset ring paints 679 the same 2px edge without touching the box size. */ 680 .di-products .filter-btn.active { 681 border-color: #ffffff; 682 color: #ffffff; 683 box-shadow: inset 0 0 0 1px #ffffff; 684 } 685 686 /* Grid Layout */ 687 .di-products .di-grid { 688 display: flex; 689 flex-wrap: wrap; 690 gap: 30px; 691 justify-content: center; 692 margin-bottom: 60px; 693 } 694 695 /* Cards */ 696 .di-products .instrument-card { 697 width: 295px; 698 color: #ffffff; 699 text-align: left; 700 border: 1px solid #2a2a2a; 701 transition: transform 0.25s ease, box-shadow 0.25s ease; 702 position: relative; /* anchors the SALE and Kontakt badges */ 703 } 704 705 .di-products .instrument-card:hover { 706 transform: translateY(-6px); 707 box-shadow: 0 10px 25px rgba(0,0,0,0.6); 708 } 709 710 .di-products .instrument-card a { 711 text-decoration: none; 712 display: block; 713 color: inherit; 714 } 715 716 /* Product artwork. Scoped to the artwork wrapper on purpose â a bare 717 ".instrument-card img" would also match the Kontakt badge and stretch it 718 across the whole card (it outranks a plain .badge-kontakt selector). 719 Unreleased products use .card-art instead of <a>, since their product page 720 does not exist yet. */ 721 .di-products .instrument-card > a img, 722 .di-products .instrument-card > .card-art img { 723 width: 100%; 724 aspect-ratio: 1/1; 725 object-fit: cover; 726 border-bottom: 1px solid #2a2a2a; 727 } 728 729 /* Kontakt badge â top-right, opposite the SALE badge. 730 The icon is a black squircle with a white "KT", so on dark artwork the 731 letters still read but the body would merge into the image; the 1px light 732 ring defines the shape, and the drop shadow lifts it off pale artwork. */ 733 .di-products .instrument-card img.badge-kontakt { 734 position: absolute; 735 top: 10px; 736 right: 10px; 737 width: 34px; 738 height: 34px; 739 max-width: 34px; /* beats any inherited width from the theme */ 740 aspect-ratio: auto; 741 object-fit: contain; 742 border: 0; 743 border-bottom: 0; 744 display: block; 745 border-radius: 23%; /* matches the icon's own squircle corners */ 746 box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.5), 747 0 2px 6px rgba(0, 0, 0, 0.55); 748 z-index: 2; 749 pointer-events: none; /* never steal the click from the card link */ 750 } 751 752 @media (max-width: 480px) { 753 .di-products .instrument-card img.badge-kontakt { 754 width: 30px; 755 height: 30px; 756 max-width: 30px; 757 } 758 } 759 760 /* Sale badge */ 761 .di-products .badge-sale { 762 position: absolute; 763 top: 10px; 764 left: 10px; 765 background: #c23b3b; 766 color: #fff; 767 font-size: 11px; 768 padding: 5px 8px; 769 letter-spacing: 1px; 770 font-weight: bold; 771 z-index: 2; 772 } 773 774 /* Coming soon â same corner and shape as SALE, but muted rather than red: 775 it is a status, not an offer. A card can never be both. */ 776 .di-products .badge-soon { 777 position: absolute; 778 top: 10px; 779 left: 10px; 780 background: rgba(0, 0, 0, 0.75); 781 border: 1px solid rgba(255, 255, 255, 0.6); 782 color: #fff; 783 font-size: 11px; 784 padding: 4px 8px; 785 letter-spacing: 1px; 786 font-weight: bold; 787 z-index: 2; 788 } 789 790 /* Unreleased: nothing on this card is clickable, so it should not behave like 791 the others â no hover lift, and the artwork sits back a little. */ 792 .di-products .instrument-card.is-coming-soon:hover { 793 transform: none; 794 box-shadow: none; 795 } 796 797 .di-products .instrument-card.is-coming-soon > .card-art img { 798 opacity: 0.7; 799 } 800 801 /* Info */ 802 .di-products .instrument-info { 803 padding: 10px 5px; 804 } 805 806 .di-products .instrument-info h3 { 807 font-size: 17px; 808 font-weight: bold; 809 margin: 5px 0 2px 0; 810 color: #ffffff; 811 } 812
813 .di-products .instrument-info .subtitle { 814 font-size: 14px; 815 color: #aaaaaa; 816 margin-bottom: 10px; 817 display: block; 818 } 819 820 /* Price table */ 821 .di-products .price-table { 822 width: 100%; 823 border-collapse: collapse; 824 font-size: 14px; 825 } 826 827 .di-products .price-table td { 828 padding: 6px 0; 829 } 830 831 .di-products .price-table td:first-child { 832 color: #999; 833 width: 30%; 834 } 835 836 .di-products .price-table td:nth-child(2) { 837 font-weight: bold; 838 width: 30%; 839 } 840 841 .di-products .price-table td:last-child { 842 width: 25%; 843 text-align: center; 844 } 845 846 .di-products .price-old { 847 color: #c23b3b; 848 } 849 850 /* Add to cart / download button */ 851 .di-products .cart-btn, 852 .di-products .subscribe-btn { 853 display: inline-block; 854 padding: 2px 6px; 855 border: 1px solid #ffffff; 856 border-radius: 15px; 857 color: #ffffff; 858 text-decoration: none; 859 font-size: 13px; 860 transition: all 0.2s ease; 861 background: transparent; 862 font-family: inherit; 863 cursor: pointer; 864 line-height: 1.4; 865 } 866 867 .di-products .cart-btn:hover, 868 .di-products .subscribe-btn:hover { 869 background: #ffffff; 870 color: #151515; 871 } 872 873 /* Empty search result */ 874 .di-products .di-empty { 875 text-align: center; 876 color: #888; 877 font-size: 14px; 878 padding: 20px 0 60px 0; 879 } 880 881 /* Responsive */ 882 @media (max-width: 768px) { 883 .di-products .instrument-card { 884 width: 45%; 885 } 886 } 887 888 @media (max-width: 480px) { 889 .di-products .instrument-card { 890 width: 100%; 891 } 892 } 893</style> 894 895 896<!-- âï¸ Renderer + Filtering + Search -->
897<script> 898(function () { 899 "use strict"; 900 901 // Top row: the product GROUP. Derived from product_type, not from a data 902 // field, so a new product only has to get its product_type right. 903 var GROUPS = [ 904 { label: "Kontakt", value: "kontakt" }, 905 { label: "Sample Packs", value: "sample-packs" } 906 ]; 907 908 // Second row: sub-filters. These only describe the Kontakt catalogue 909 // (a sample pack is never mosaic / a bundle / free), so the row is hidden 910 // while the Sample Packs group is selected. 911 var FILTERS = [ 912 { label: "All", value: "all" }, 913 { label: "Featured", value: "featured" }, 914 { label: "Mosaic", value: "mosaic" }, 915 { label: "Bundles", value: "bundle" }, 916 { label: "Free", value: "free" } 917 ]; 918 919 var GROUP_VALUES = GROUPS.map(function (g) { return g.value; }); 920 var FILTER_VALUES = FILTERS.map(function (f) { return f.value; }); 921 922 var DEFAULT_GROUP = "kontakt"; 923 924 // Kontakt app icon (Kontakt 8, symbol only â no wordmark), 96x96. 925 // 926 // LOCAL PREVIEW -> assets/kontakt-icon.png, next to this file. 927 // LIVE SITE -> /storage/... , same folder as the product artwork. 928 // 929 // BEFORE YOU UPLOAD: upload assets/kontakt-icon.png to the site storage 930 // folder so KONTAKT_ICON_LIVE resolves. If it is missing the badge simply 931 // hides itself (see the onerror below) rather than showing a broken image. 932 var KONTAKT_ICON_LOCAL = "assets/kontakt-icon.png"; 933 var KONTAKT_ICON_LIVE = "/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/kontakt-icon.png"; 934 935 var DI_IS_LOCAL = (window.location.protocol === "file:" || 936 window.location.hostname === "localhost" || 937 window.location.hostname === "127.0.0.1" || 938 window.location.hostname === ""); 939 940 var KONTAKT_ICON = DI_IS_LOCAL ? KONTAKT_ICON_LOCAL : KONTAKT_ICON_LIVE; 941 942 /* ---------- helpers ---------- */ 943 944 // Decision (b): "$29,00" 945 function money(value) { 946 if (typeof value !== "number") return String(value); // "FREE" 947 return "$" + value.toFixed(2).replace(".", ","); 948 } 949 950 function esc(str) { 951 return String(str).replace(/&(?!(?:[a-zA-Z]+|#\d+);)/g, "&") 952 .replace(/</g, "<") 953 .replace(/>/g, ">") 954 .replace(/"/g, """); 955 } 956 957 function groupOf(p) { 958 return p.product_type === "Sample Pack" ? "sample-packs" : "kontakt"; 959 } 960 961 // Accepts both spellings: the rest of the data uses snake_case, but 962 // "coming-soon" is easy to type by mistake and silently does nothing. 963 function isComingSoon(p) { 964 return p.coming_soon === true || p["coming-soon"] === true; 965 } 966 967 function byPath(pathValue) { 968 var list = window.DI_PRODUCTS || []; 969 for (var i = 0; i < list.length; i++) { 970 if (list[i].fsc_item_path_value === pathValue) return list[i]; 971 } 972 return null; 973 } 974 975 // similar_products entries are hand-written display names ("Deep Blue"), 976 // not slugs â slugs are not guessable ("Guitars In Space VOL 1" is 977 // "guitars-in-space"). Try the slug first, then the name (trimmed, 978 // case-insensitive), and warn about anything that matches neither. 979 function findProduct(ref) { 980 var hit = byPath(ref); 981 if (hit) return hit; 982 var wanted = String(ref).trim().toLowerCase(); 983 var list = window.DI_PRODUCTS || []; 984 for (var i = 0; i < list.length; i++) { 985 if (String(list[i].name).trim().toLowerCase() === wanted) return list[i]; 986 } 987 if (window.console) console.warn("[di-products] similar product not found: " + ref); 988 return null; 989 } 990 991 /* ---------- card markup ---------- */ 992 993 function priceCell(p) { 994 if (p.original_price) { 995 return '<s class="price-old">' + money(p.original_price) + "</s> " + money(p.price); 996 } 997 return money(p.price); 998 } 999 1000 function actionCell(p) { 1001 // Unreleased product: no add-to-cart, no MailerLite form, no dead control 1002 // to click. The COMING SOON badge on the artwork carries the message. 1003 if (isComingSoon(p)) return ""; 1004 if (p.ml_form_id) { 1005 return '<button type="button" class="cart-btn subscribe-btn ml-onclick-form" ' + 1006 "onclick=\"ml('show', '" + p.ml_form_id + "', true)\">Download</button>"; 1007 } 1008 return '<a onclick="fbq(\'track\', \'' + p.fbq_action + '\');" ' + 1009 'data-fsc-action="' + p.fsc_action + '" ' + 1010 'data-fsc-item-path-value="' + p.fsc_item_path_value + '" ' + 1011 'href="javascript:;" class="cart-btn">add to cart</a>'; 1012 } 1013 1014 function cardHTML(p) { 1015 var soon = isComingSoon(p); 1016 1017 var classes = ["instrument-card"];
1018 if (p.category) classes.push(p.category); 1019 if (p.featured) classes.push("featured"); 1020 if (p.sale) classes.push("sale"); 1021 if (p.init_hidden) classes.push("init-false"); 1022 if (soon) classes.push("is-coming-soon"); 1023 1024 // onerror: if the icon has not been uploaded yet, hide the badge instead of 1025 // leaving a broken-image glyph on every card. 1026 var kontaktBadge = (p.product_type === "Kontakt") 1027 ? '<img class="badge-kontakt" src="' + KONTAKT_ICON + 1028 '" alt="Requires Kontakt" title="Requires Kontakt"' + 1029 ' onerror="this.style.display=\'none\';">' 1030 : ""; 1031 1032 var artwork = '<img src="' + p.image + '" alt="' + esc(p.name) + '" loading="lazy">'; 1033 1034 // An unreleased product has no page to link to yet, so the artwork is a 1035 // plain div rather than a link that would 404. 1036 var artworkBlock = soon 1037 ? '<div class="card-art">' + artwork + "</div>" 1038 : '<a href="' + p.path + '">' + artwork + "</a>"; 1039 1040 return '' + 1041 '<div class="' + classes.join(" ") + '" data-group="' + groupOf(p) + '"' + 1042 ' data-product="' + p.fsc_item_path_value + '">' + 1043 (p.sale ? '<div class="badge-sale">SALE</div>' : "") + 1044 (soon ? '<div class="badge-soon">COMING SOON</div>' : "") + 1045 kontaktBadge + 1046 artworkBlock + 1047 '<div class="instrument-info">' + 1048 "<h3>" + esc(p.name) + "</h3>" + 1049 '<span class="subtitle">' + p.subtitle + "</span>" + 1050 '<table class="price-table"><tr>' + 1051 "<td>" + esc(p.product_type) + "</td>" + 1052 "<td>" + priceCell(p) + "</td>" + 1053 "<td>" + actionCell(p) + "</td>" + 1054 "</tr></table>" + 1055 "</div>" + 1056 "</div>"; 1057 } 1058 1059 /* ---------- which products for which mode ---------- */ 1060 1061 function selectProducts(root, mode) { 1062 var all = window.DI_PRODUCTS || []; 1063 var limit = parseInt(root.getAttribute("data-limit"), 10); 1064 1065 var list; 1066 if (mode === "featured") { 1067 list = all.filter(function (p) { return p.featured; }); 1068 } else if (mode === "similar") { 1069 var current = byPath(root.getAttribute("data-product")); 1070 var names = (current && current.similar_products) || []; 1071 list = names.map(function (ref) { return findProduct(ref); }).filter(function (p) { 1072 return p && p !== current; 1073 }); 1074 if (isNaN(limit)) limit = 4; 1075 } else { 1076 list = all.slice(); 1077 } 1078 1079 if (!isNaN(limit) && limit > 0) list = list.slice(0, limit); 1080 return list; 1081 } 1082 1083 /* ---------- filtering / search (mode "all" only) ---------- 1084 1085 Two independent axes, both held in `state`: 1086 state.group kontakt | sample-packs â always applied 1087 state.category all | featured | ... â only meaningful for kontakt 1088 1089 The category is remembered while the Sample Packs group is selected, so 1090 switching Kontakt -> Sample Packs -> Kontakt returns to the same view. */ 1091 1092 function markActive(root, selector, value) { 1093 var btns = root.querySelectorAll(selector); 1094 for (var i = 0; i < btns.length; i++) { 1095 // No classList.toggle(name, force) â it is unsupported in older browsers. 1096 if (btns[i].getAttribute("data-filter") === value) btns[i].classList.add("active"); 1097 else btns[i].classList.remove("active"); 1098 } 1099 } 1100 1101 function applyFilter(root, state) { 1102 var cards = root.querySelectorAll(".instrument-card"); 1103 var search = root.querySelector(".di-search"); 1104 var term = search ? search.value.toLowerCase() : ""; 1105 var shown = 0; 1106 var i; 1107 1108 var inKontakt = (state.group === "kontakt"); 1109 var category = inKontakt ? state.category : "all"; 1110 1111 markActive(root, ".di-groups .filter-btn", state.group); 1112 markActive(root, ".di-subfilters .filter-btn", state.category); 1113 1114 var sub = root.querySelector(".di-subfilters"); 1115 if (sub) sub.style.display = inKontakt ? "" : "none"; 1116 1117 if (root.getAttribute("data-hash-sync") !== "false") { 1118 // One hash for both axes: the category while in the Kontakt group (so the 1119 // existing #mosaic / #free links keep working), otherwise the group. 1120 // Some browsers reject replaceState on file:// â never let that stop the filter.
1121 try { 1122 history.replaceState(null, null, "#" + (inKontakt ? category : state.group)); 1123 } catch (e) {} 1124 } 1125 1126 for (i = 0; i < cards.length; i++) { 1127 var card = cards[i]; 1128 var title = card.getElementsByTagName("h3")[0].textContent.toLowerCase(); 1129 1130 var groupMatch = card.getAttribute("data-group") === state.group; 1131 var categoryMatch = (category === "all") || card.classList.contains(category); 1132 var searchMatch = title.indexOf(term) !== -1; 1133 var initHidden = (category === "all") && card.classList.contains("init-false") && term === ""; 1134 1135 if (groupMatch && categoryMatch && searchMatch && !initHidden) { 1136 card.style.display = "block"; 1137 shown++; 1138 } else { 1139 card.style.display = "none"; 1140 } 1141 } 1142 1143 var empty = root.querySelector(".di-empty"); 1144 if (empty) empty.style.display = shown ? "none" : "block"; 1145 } 1146 1147 /* ---------- render one mount ---------- */ 1148 1149 function render(root) { 1150 if (root.getAttribute("data-di-rendered") === "true") return; 1151 root.setAttribute("data-di-rendered", "true"); 1152 1153 var mode = root.getAttribute("data-mode") || "all"; 1154 var list = selectProducts(root, mode); 1155 1156 // A "similar products" section with nothing curated yet stays invisible 1157 // instead of leaving an empty heading on the instrument page. 1158 if (mode === "similar" && list.length === 0) { 1159 root.style.display = "none"; 1160 return; 1161 } 1162 1163 var html = ""; 1164 var title = root.getAttribute("data-title"); 1165 if (title) html += '<h2 class="di-section-title">' + esc(title) + "</h2>"; 1166 1167 if (mode === "all") { 1168 html += '<div class="di-search-wrap">' + 1169 '<input type="text" class="di-search" placeholder="Search products...">' + 1170 "</div>"; 1171 html += '<div class="di-filters">'; 1172 html += '<div class="di-groups">'; 1173 GROUPS.forEach(function (g) { 1174 html += '<button type="button" class="filter-btn filter-btn-group" data-filter="' + 1175 g.value + '">' + g.label + "</button>"; 1176 }); 1177 html += "</div>"; 1178 html += '<div class="di-subfilters">'; 1179 FILTERS.forEach(function (f) { 1180 html += '<button type="button" class="filter-btn" data-filter="' + f.value + '">' + 1181 f.label + "</button>"; 1182 }); 1183 html += "</div>"; 1184 html += "</div>"; 1185 } 1186 1187 html += '<div class="di-grid">' + list.map(cardHTML).join("") + "</div>"; 1188 1189 if (mode === "all") { 1190 // "products", not "instruments" â this grid now covers sample packs too. 1191 html += '<div class="di-empty" style="display:none;">No products match your search.</div>'; 1192 } 1193 1194 root.innerHTML = html; 1195 1196 if (root.getAttribute("data-page-bg") === "dark") { 1197 document.body.style.background = "#151515"; 1198 document.body.style.color = "#ffffff"; 1199 } 1200 1201 if (mode !== "all") return; 1202 1203 var state = { group: DEFAULT_GROUP, category: "all" }; 1204 1205 var groupBtns = root.querySelectorAll(".di-groups .filter-btn"); 1206 for (var g = 0; g < groupBtns.length; g++) { 1207 groupBtns[g].addEventListener("click", function () { 1208 state.group = this.getAttribute("data-filter"); 1209 applyFilter(root, state); 1210 }); 1211 } 1212 1213 var subBtns = root.querySelectorAll(".di-subfilters .filter-btn"); 1214 for (var i = 0; i < subBtns.length; i++) { 1215 subBtns[i].addEventListener("click", function () { 1216 state.category = this.getAttribute("data-filter"); 1217 applyFilter(root, state); 1218 }); 1219 } 1220 1221 root.querySelector(".di-search").addEventListener("keyup", function () { 1222 applyFilter(root, state); 1223 }); 1224 1225 // Deep links: "#sample-packs" picks the group, "#mosaic" (etc.) keeps 1226 // working as before and implies the Kontakt group. Anything else falls 1227 // back to the default, which is always Kontakt / All. 1228 var hash = (window.location.hash || "").replace("#", "").toLowerCase(); 1229 if (GROUP_VALUES.indexOf(hash) !== -1) { 1230 state.group = hash; 1231 } else if (FILTER_VALUES.indexOf(hash) !== -1) { 1232 state.group = "kontakt"; 1233 state.category = hash; 1234 } 1235 applyFilter(root, state); 1236 } 1237 1238 function renderAll() { 1239 var mounts = document.querySelectorAll(".di-products"); 1240 for (var i = 0; i < mounts.length; i++) render(mounts[i]); 1241 } 1242 1243 window.DI_renderProducts = renderAll; 1244 1245 renderAll(); 1246 if (document.readyState === "loading") { 1247 document.addEventListener("DOMContentLoaded", renderAll); 1248 } 1249})(); 1250</script>
1250 1251 1252 <link rel="preconnect" href="https://assets.articulationsites.com" /> 1253
1253<script> 1254 document.documentElement.classList.remove('dark') 1255 </script>
1255 1256
1256<script defer src="https://assets.articulationsites.com/js/published/published.min.js?v=c17059228c8f0fb3962a3f88e7dd27316"></script>
1256 1257
1257<script defer src="https://assets.articulationsites.com/js/vendor/focus.min.js"></script>
1257 1258
1258<script defer src="https://assets.articulationsites.com/js/vendor/intersect.min.js?v=1"></script>
1258 1259
1259<script defer src="https://assets.articulationsites.com/js/vendor/alpine.min.js"></script>
1259 1260 <link href="/css/published.css?v=1599af1dd31c136b73844d19aef1421e" rel="stylesheet"/> 1261 <style> 1262 :root { 1263 --color-text-dark-bg: #9ca3af; 1264--color-text-dark-bg-heading: #f3f4f6; 1265--color-text-light-bg: #000000; 1266--text-color: #000000; 1267--color-text-light-bg-heading: #000000; 1268--heading-color: #000000; 1269--font-heading: "Montserrat"; 1270--font-text: "Roboto"; 1271--font-button: "Montserrat"; 1272--font-nav_link: "Montserrat"; 1273--font-quote: "Roboto"; 1274--color-primary-main: #151515; 1275--color-primary-light: #2f2f2f; 1276--color-primary-dark: #000000; 1277--color-primary-contrast: #ffffff; 1278--color-secondary-main: #818181; 1279--color-secondary-light: #9b9b9b; 1280--color-secondary-dark: #686868; 1281--color-secondary-contrast: #ffffff; 1282--color-accent-main: #ffffff; 1283--color-accent-light: #ffffff; 1284--color-accent-dark: #e6e6e6; 1285--color-accent-contrast: #000000; 1286--color-success-main: #26A94C; 1287--color-success-light: #31d160; 1288--color-success-dark: #1d7f39; 1289--color-success-contrast: #ffffff; 1290--color-error-main: #ED262D; 1291--color-error-light: #f1555b; 1292--color-error-dark: #cf1118; 1293--color-error-contrast: #ffffff; 1294--link-color: #d5d5d5; 1295--link-hover-color: #ffffff; 1296--link-text-decoration: underline; 1297--link-underline-color: #626262; 1298--link-hover-text-decoration: underline; 1299--link-hover-underline-color: #626262; 1300--shape: 8px; 1301--heading-2-font-size: 26px; 1302--heading-2-line-height: 32.5px; 1303--heading-2-font-weight: 700; 1304--paragraph-font-size: 16px; 1305--paragraph-line-height: 28px; 1306--paragraph-font-weight: 400; 1307--button-font-size: 13px; 1308--button-letter-spacing: 0px; 1309--button-font-weight: 400; 1310--button-text-transform: uppercase; 1311--button-text-color: #d5d5d5; 1312--button-border-color: #151515; 1313--button-border-width: 2px; 1314--button-hover-background-color: #151515; 1315--button-hover-border-color: #f5f5f5; 1316--button-highlight-border-width: 2px; 1317--nav-link-color: var(--color-accent-light); 1318--nav-link-letter-spacing: 0.05px; 1319--nav-link-font-weight: 700; 1320--nav-link-text-transform: uppercase; 1321--subnav-link-text-transform: uppercase; 1322 } 1323 </style> 1324 <style id="site-css"> 1325 .di_add_to_cart_btn { 1326 background-color: transparent; 1327 color: #ffffff; 1328 border: 2px solid #ffffff; 1329 border-radius: 15px; 1330 padding: 6px 14px; 1331 transition: all 0.2s; 1332 display: inline-block; 1333} 1334 1335.di_add_to_cart_btn span { 1336 font-size: 14px; 1337 font-weight: bold; 1338} 1339 1340.di_add_to_cart_btn:hover { 1341 background-color: #ffffff; 1342 color: #151515; 1343 cursor: pointer; 1344} 1345 </style> 1346 1347 <link rel="preconnect" href="https://fonts.googleapis.com" /> 1348 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Roboto:wght@400;700"> 1349</head> 1350 1351<body> 1352<div class="outer-container header-page "> 1353 <div class="inner-container"> 1354 <div id="c6a195aefe54b5" class="component"><header 1355 class="main-header bg-(--background-color)/80 bg-type-color " 1356 style="--background-color: #151515;" 1357 x-data="{ 1358 scrolled: false, 1359 }" 1360 x-init=" 1361 $store.nav.totalCharacters = 63; 1362 $store.nav.breakPoint = 1024; 1363 $store.nav.checkIsMobile(0); 1364 scrolled = window.scrollY > 50; 1365 $nextTick(() => { 1366 document.querySelector(':root').style.setProperty('--nav-height', $el.offsetHeight + 'px'); 1367 }); 1368 " 1369 :class="{ 1370 'mobile-nav': $store.nav.mobile, 1371 'desktop-nav': !$store.nav.mobile, 1372 'mobile-nav-open': $store.nav.mobileMenuOpen, 1373 'scrolled': scrolled, 1374 'not-scrolled': !scrolled 1375 }" 1376 x-resize="document.querySelector(':root').style.setProperty('--nav-height', $el.offsetHeight + 'px');" 1377 x-cloak 1378 @scroll.window="scrolled = window.scrollY > 50" 1379 @editor-scroll.window="scrolled = $event.detail.scrollTop > 50" 1380> 1381 <a href="/" aria-label="logo" class="logo-container"> 1382 <div 1383 class="text-logo text-logo-auto text-(--color-accent-light) custom-text-color custom-font-family font-(family-name:--font-heading) text-(length:--text-size) md:text-(length:--md-text-size) lg:text-(length:--lg-text-size) custom-text-size" 1384 style="--text-size: 20px; --md-text-size: 24px; --lg-text-size: 36px;" 1385 >DARK INTERVALS</div> 1386 </a> 1387 <ul 1388 class="desktop-nav-links main-nav-list" 1389 x-data 1390 x-navigation="{ allowCollapseToMore: true }" 1391> 1392 <li 1393 class="main-nav-item" 1394 id="q1CvKTx9" 1395> 1396 <a 1397 href="/" 1398 class="nav-link " 1399 >Home</a> 1400 </li> 1401 1402 <li 1403 class="main-nav-item" 1404 id="F41tSNsT" 1405> 1406 <a 1407 href="/instruments" 1408 class="nav-link " 1409 >INSTRUMENTS</a> 1410 </li> 1411 1412 <li 1413 class="main-nav-item" 1414 id="DRTBW651" 1415> 1416 <a 1417 href="/about" 1418 class="nav-link " 1419 >ABOUT</a> 1420 </li> 1421 1422 <li 1423 class="main-nav-item" 1424 id="xntPQ2n4" 1425> 1426 <a 1427 href="/projects" 1428 class="nav-link " 1429 >PROJECTS</a> 1430 </li> 1431 1432 <li 1433 class="main-nav-item" 1434 id="yTiU9Joc" 1435> 1436 <a 1437 href="/faq" 1438 class="nav-link " 1439 >FAQ</a> 1440 </li> 1441 1442 <li 1443 class="main-nav-item" 1444 id="hMjAUNZO" 1445> 1446 <a 1447 href="/contact" 1448 class="nav-link " 1449 >CONTACT</a> 1450 </li> 1451 1452 <li 1453 class="main-nav-item" 1454 id="2gWTTUpp" 1455> 1456 <a 1457 href="/blog" 1458 class="nav-link active" 1459 >Blog</a> 1460 </li> 1461 1462 <li 1463 class="main-nav-item" 1464 id="nav-more-link" 1465> 1466 <a 1467 href="#" 1468 class="nav-link " 1469 >More...</a> 1470 <ul class="subnav subnav-level-1 subnav-parent-nav-more-link"> 1471 <li id="subnav-q1CvKTx9"> 1472 <a 1473 href="/" 1474 class="nav-link" 1475 >
1476 <span class="subnav-label"> 1477 Home 1478 </span> 1479 </a> 1480 </li> 1481 1482 <li id="subnav-F41tSNsT"> 1483 <a 1484 href="/instruments" 1485 class="nav-link" 1486 > 1487 <span class="subnav-label"> 1488 INSTRUMENTS 1489 </span> 1490 </a> 1491 </li> 1492 1493 <li id="subnav-DRTBW651"> 1494 <a 1495 href="/about" 1496 class="nav-link" 1497 > 1498 <span class="subnav-label"> 1499 ABOUT 1500 </span> 1501 </a> 1502 </li> 1503 1504 <li id="subnav-xntPQ2n4"> 1505 <a 1506 href="/projects" 1507 class="nav-link" 1508 > 1509 <span class="subnav-label"> 1510 PROJECTS 1511 </span> 1512 </a> 1513 </li> 1514 1515 <li id="subnav-yTiU9Joc"> 1516 <a 1517 href="/faq" 1518 class="nav-link" 1519 > 1520 <span class="subnav-label"> 1521 FAQ 1522 </span> 1523 </a> 1524 </li> 1525 1526 <li id="subnav-hMjAUNZO"> 1527 <a 1528 href="/contact" 1529 class="nav-link" 1530 > 1531 <span class="subnav-label"> 1532 CONTACT 1533 </span> 1534 </a> 1535 </li> 1536 1537 <li id="subnav-2gWTTUpp"> 1538 <a 1539 href="/blog" 1540 class="nav-link" 1541 > 1542 <span class="subnav-label"> 1543 Blog 1544 </span> 1545 </a> 1546 </li> 1547 1548 </ul> 1549 1550 </li> 1551 1552 </ul> 1553 1554 <div class="desktop-nav-buttons"> 1555 <a class="btn-cta" href="https://www.darkintervals.org/instruments#free"> GET FREE INSTRUMENTS</a> 1556 </div> 1557 <div class="mobile-nav-buttons"> 1558 <button 1559 @click="$store.nav.mobileMenuOpen = true;" 1560 x-show="! $store.nav.mobileMenuOpen" 1561 > 1562 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> 1563 <rect width="20" height="1.5" transform="matrix(-1 0 0 1 22 7)" fill="currentColor"/> 1564 <rect width="12" height="1.5" transform="matrix(-1 0 0 1 14 16)" fill="currentColor"/> 1565 </svg> 1566 <span 1567 class="mobile-cart-alert" 1568 x-data 1569 x-show="$store.commerceCart.totalQuantity > 0 && $store.nav.mobile" 1570 > 1571 <span 1572 x-text="$store.commerceCart.totalQuantity" 1573 style="color: #ffffff;" 1574 ></span> 1575 </span> 1576 </button> 1577 <button 1578 @click="$store.nav.mobileMenuOpen = false;" 1579 x-show="$store.nav.mobileMenuOpen" 1580 > 1581 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon"> 1582 <path fill-rule="evenodd" d="M5.47 5.47a.75.75 0 0 1 1.06 0L12 10.94l5.47-5.47a.75.75 0 1 1 1.06 1.06L13.06 12l5.47 5.47a.75.75 0 1 1-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 0 1-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"/> 1583</svg> 1584 </button> 1585 </div> 1586 <div 1587 class="mobile-nav-overlay" 1588 x-show="$store.nav.mobile && $store.nav.mobileMenuOpen" 1589 > 1590 <div 1591 class="mobile-nav-panels" 1592 x-data="mobileNavigation" 1593 x-effect="if (!$store.nav.mobileMenuOpen || !$store.nav.mobile) resetSubnav()" 1594> 1595 <div 1596 class="mobile-nav-panel mobile-nav-panel--root" 1597 :class="{ 'is-shifted': hasSubnavOpen() }" 1598 > 1599 <ul class="mobile-nav-links main-nav-list"> 1600 <li 1601 class="main-nav-item" 1602 id="q1CvKTx9" 1603> 1604 <a 1605 href="/" 1606 class="mobile-nav-link " 1607 >Home</a> 1608 </li> 1609 1610 <li 1611 class="main-nav-item" 1612 id="F41tSNsT" 1613> 1614 <a 1615 href="/instruments" 1616 class="mobile-nav-link " 1617 >INSTRUMENTS</a> 1618 </li> 1619 1620 <li 1621 class="main-nav-item" 1622 id="DRTBW651" 1623> 1624 <a 1625 href="/about" 1626 class="mobile-nav-link " 1627 >ABOUT</a> 1628 </li> 1629 1630 <li 1631 class="main-nav-item" 1632 id="xntPQ2n4" 1633> 1634 <a 1635 href="/projects" 1636 class="mobile-nav-link " 1637 >PROJECTS</a> 1638 </li> 1639 1640 <li 1641 class="main-nav-item" 1642 id="yTiU9Joc" 1643> 1644 <a 1645 href="/faq" 1646 class="mobile-nav-link " 1647 >FAQ</a> 1648 </li> 1649 1650 <li 1651 class="main-nav-item" 1652 id="hMjAUNZO" 1653> 1654 <a 1655 href="/contact" 1656 class="mobile-nav-link " 1657 >CONTACT</a> 1658 </li> 1659 1660 <li 1661 class="main-nav-item" 1662 id="2gWTTUpp" 1663> 1664 <a 1665 href="/blog" 1666 class="mobile-nav-link active" 1667 >Blog</a> 1668 </li> 1669 1670 </ul> 1671 </div> 1672 1673 1674 1675 1676 1677 1678 1679 1680 </div> 1681 1682 <div class="mobile-nav-overlay-buttons"> 1683 <a 1684 href="https://www.darkintervals.org/instruments#free" 1685 > GET FREE INSTRUMENTS</a> 1686 </div> 1687 </div> 1688</header> 1689</div> 1690 <main> 1691 <div class="header-section"> 1692 <div id="c6ab01538bf476" class="component"><section 1693 id="page-section" 1694 style="--text-color: #FFFFFF;
1694 --background-image: url('//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/studio-picture-1-2023-copy_1_orig.jpg'); --background-color: #000000; --background-opacity: 60%; --min-height-desktop: 600px; --min-height-tablet: 600px; --min-height-mobile: 400px;" 1695 class="page-section transition-all z-10 relative text-(--text-color) custom-text-color bg-[image:var(--background-image)] no-repeat bg-center bg-contain relative sm:bg-fixed bg-overlay bg-type-image_with_overlay hover:bg-type-none group-hover:bg-type-none lg:rounded-none md:rounded-none rounded-none pl-4 pr-4 md:pl-0 md:pr-0 lg:pl-0 lg:pr-0 lg:min-h-(--min-height-desktop) md:min-h-(--min-height-tablet) min-h-(--min-height-mobile) content-center" 1696> 1697 1698 1699 <div 1700 class="section-inner relative transition-all duration-500 mx-auto grid lg:max-w-5xl md:max-w-5xl max-w-5xl lg:gap-3 md:gap-3 gap-3" 1701 style="padding-block: 48px;" 1702 1703 > 1704 1705 1706 </div> 1707</section> 1708</div> 1709 </div> 1710 <div id="c6ab01538bf549" class="component"><div > 1711 <div id="c6ab01538caa96" class="component"><section 1712 id="page-section" 1713 style="--min-height-desktop: 200px; --min-height-tablet: 200px; --min-height-mobile: 200px;" 1714 class="page-section transition-all z-10 relative bg-type-none hover:bg-type-none group-hover:bg-type-none lg:rounded-none md:rounded-none rounded-none pl-4 pr-4 md:pl-0 md:pr-0 lg:pl-0 lg:pr-0 lg:min-h-(--min-height-desktop) md:min-h-(--min-height-tablet) min-h-(--min-height-mobile) content-center" 1715> 1716 1717 1718 <div 1719 class="section-inner relative transition-all duration-500 mx-auto grid lg:max-w-6xl md:max-w-6xl max-w-6xl lg:gap-3 md:gap-2 gap-1" 1720 style="padding-block: 48px;" 1721 1722 > 1723 <div id="c6ab01538caaa0" class="component"><div class="column-container md:gap-12 md:flex" > 1724 <div 1725 class=" column relative md:w-9/12" 1726 1727 > 1728 <div id="c6ab01538caaa4" class="component"> <div class="component-post-content post-list space-y-16 mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5"> 1729 <article class="relative flex flex-col space-y-2 xl:space-y-0"> 1730 <dl> 1731 <dt class="sr-only">Published on</dt> 1732 <dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"> 1733 <time datetime="2026-09-20 18:25:43">September 20, 2026</time> 1734 </dd> 1735 </dl> 1736 <div class="space-y-3"> 1737 <div> 1738 <h2 class="art-post-title"> 1739 <a 1740 href="/blog/inside-the-making-of-eleventh-name-of-ganesha" 1741 >Inside the Making of "Eleventh Name Of Ganesha"</a> 1742 </h2> 1743 <div class="flex flex-wrap"> 1744 </div> 1745 </div> 1746 <div 1747 class="post-body mt-2 text-inherit max-w-none" 1748 ><div class="not-prose"><div id="c6ab0164bb46f7" class="component"><div 1749 style="" 1750 x-data="{ fullscreen: false }" 1751> 1752 <div class="flex justify-center mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5"> 1753 <img
1754 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/eleven_-cover_2.jpg?w=1080" 1755 alt="Image description" 1756 class="resizeable-image lg:rounded-lg md:rounded-lg rounded-lg w-full cursor-zoom-in" 1757 @click.stop="fullscreen = true" 1758 /> 1759 </div> 1760 <template x-teleport="body"> 1761 <div 1762 x-show="fullscreen" 1763 x-transition:enter="transition ease-in-out duration-300" 1764 x-transition:enter-start="opacity-0" 1765 x-transition:leave="transition ease-in-in duration-300" 1766 x-transition:leave-end="opacity-0" 1767 @click="fullscreen = false" 1768 @keydown.window.escape="fullscreen = false" 1769 x-trap.inert.noscroll="fullscreen" 1770 class="fixed inset-0 z-[99] flex items-center justify-center bg-black/50 select-none cursor-zoom-out" x-cloak> 1771 <div class="relative flex items-center justify-center w-11/12 xl:w-4/5 h-11/12"> 1772 <img 1773 x-show="fullscreen" 1774 x-transition:enter="transition ease-in-out duration-300" 1775 x-transition:enter-start="opacity-0 transform scale-50" 1776 x-transition:leave="transition ease-in-in duration-300" 1777 x-transition:leave-end="opacity-0 transform scale-50" 1778 loading="lazy" 1779 class="object-contain object-center w-full h-full select-none cursor-zoom-out" src="//cdn1.artclt
1779n.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/eleven_-cover_2.jpg" alt="Image description" style="display: none;"> 1780 </div> 1781 </div> 1782 </template> 1783 </div> 1784</div><div id="c6ab01541eab91" class="component"><div 1785 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 1786 style="" 1787> 1788 <div class="text-option"><p>Besides creating Kontakt instruments and sound libraries, I am a composer, producer and sound designer constantly experimenting with music and sound. I am particularly interested in synthesizers, guitar recording, unusual textures and the integration of ethnic instruments into modern productions. My work often combines organic performances with electronic and cinematic sound design to create distinctive atmospheres.</p></div> 1789</div> 1790</div><div id="c6ab016ee15828" class="component"><div 1791 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 1792 style="" 1793> 1794 <div class="text-option"><h2 class="ql-align-center"><br></h2><h2 class="ql-align-center">PROJECT "ELEVEN"</h2><h2><br></h2><h2>Song : "Eleventh Name Of Ganesha" â Recording Process</h2><p><br></p><p>Eleventh Name Of Ganesha is a hybrid fusion of heavy metal, world music and atmospheric ambient music, heavily inspired by Indian mythology.</p><p><br></p><p>The main guitar used on the track was a Gibson Custom Shop Les Paul. One of the main recording tools was the Orange TH30, a relatively affordable amplifier head that consistently delivers great results. I particularly like how easy it is to tweak and how consistently it maintains its character across different volume and gain settings. Once the EQ is dialed in, I can often leave it untouched for almost the entire song and simply adjust the volume or gain when needed.</p><p><br></p></div> 1795</div> 1796</div><div id="c6ab01f0a75966" class="component"><div 1797 class="" 1798 style="" 1799> 1800 <div class="transition-all lg:w-full md:w-full w-full lg:h-96 md:h-96 h-64 lg:rounded-lg md:rounded-lg rounded-lg mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5"> 1801 <iframe 1802 class="w-full h-full lg:rounded-lg md:rounded-lg rounded-lg" 1803 src="https://www.youtube-nocookie.com/embed/5AEvezBhVyQ" 1804 title="YouTube video player" 1805 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" 1806 allowfullscreen 1807 ></iframe> 1808 </div> 1809</div> 1810</div><div id="c6ab01d9143d32" class="component"><div 1811 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 1812 style="" 1813> 1814 <div class="text-option"><p><br></p><p>The drums were built from several different drum kits, blended together to create the final sound. One of the kits used was our LDW 1973 library, from which I used the snare and hi-hat, blending them with elements from two other drum kits.</p><p><br></p></div> 1815</div> 1816</div><div id="c6ab01f1d8e35a" class="component"><div 1817 class="flex w-full justify-center mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 1818 x-data="{ 1819 duration: 5000, 1820 active: 0, 1821 previous: 0, 1822 incoming: null, 1823 direction: 'next', 1824 transition: 'fade', 1825 totalImages: 6, 1826 progress: 0, 1827 firstFrameTime: 0, 1828 touchStartX: null, 1829 touchEndX: null, 1830 swipeThreshold: 50, 1831 rtl: false, 1832 init() { 1833 this.rtl = getComputedStyle(this.$el).direction === 'rtl' 1834 this.startAnimation() 1835 this.$watch('active', callback => { 1836 cancelAnimationFrame(this.frame) 1837 this.startAnimation() 1838 }) 1839 }, 1840 startAnimation() { 1841 this.progress = 0 1842 this.$nextTick(() => { 1843 this.firstFrameTime = performance.now() 1844 this.frame = requestAnimationFrame(this.animate.bind(this)) 1845 }) 1846 }, 1847 animate(now) { 1848 let timeFraction = (now - this.firstFrameTime) / this.duration 1849 if (timeFraction <= 1) { 1850 this.progress = timeFraction * 100 1851 this.frame = requestAnimationFrame(this.animate.bind(this)) 1852 } else { 1853 timeFraction = 1 1854 this.goTo((this.active + 1) % this.totalImages, 'next') 1855 } 1856 }, 1857 goTo(index, dir) { 1858 if (index === this.active) return 1859 this.direction = dir 1860 if (this.transition === 'slide') { 1861 this.incoming = index 1862 this.$nextTick(() => { 1863 void this.$el.offsetHeight 1864 this.previous = this.active 1865 this.active = index 1866 this.incoming = null 1867 }) 1868 } else { 1869 this.previous = this.active 1870 this.active = index 1871 } 1872 }, 1873 prev() { 1874 this.goTo(this.active === 0 ? this.totalImages - 1 : this.active - 1, 'prev') 1875 }, 1876 forward() { 1877 this.goTo((this.active + 1) % this.totalImages, 'next') 1878 }, 1879 handleTouchStart(event) { 1880 this.touchStartX = event.touches[0].clientX 1881 }, 1882 handleTouchMove(event) { 1883 this.touchEndX = event.touches[0].clientX 1884 }, 1885 handleTouchEnd() { 1886 if(this.touchEndX){ 1887 const forward = (this.touchStartX - this.touchEndX) * (this.rtl ? -1 : 1) 1888 if (forward > this.swipeThreshold) { 1889 this.forward() 1890 } 1891 if (forward < -this.swipeThreshold) { 1892 this.prev() 1893 } 1894 this.touchStartX = null 1895 this.touchEndX = null 1896 } 1897 }, 1898 get thumbOffset() { 1899 const container = this.$refs.thumbContainer 1900 if (!container) return 0 1901 const track = this.$refs.thumbTrack 1902 if (!track || !track.children[this.active]) return 0 1903 const thumb = track.children[this.active] 1904 const containerWidth = container.offsetWidth 1905 const idealOffset = thumb.offsetLeft - containerWidth / 2 + thumb.offsetWidth / 2 1906 const maxOffset = track.scrollWidth - containerWidth 1907 if (this.rtl) { 1908 return -Math.min(Math.max(0, -idealOffset), Math.max(0, maxOffset)) 1909 } 1910 return Math.min(Math.max(0, idealOffset), Math.max(0, maxOffset)) 1911 } 1912 }"> 1913 <div class="transition-all w-full relative duration-150 delay-300 ease-in-out"> 1914 <div 1915 class="relative w-full grid overflow-hidden " 1916 @touchstart="handleTouchStart($event)" 1917 @touchmove="handleTouchMove($event)" 1918 @touchend="handleTouchEnd()" 1919 > 1920 <div 1921 class="w-full col-start-1 row-start-1 flex items-center justify-center " 1922 1923 :class="(() => { 1924 const i = 0; 1925 if (transition === 'slide') { 1926 const fromRight = (direction === 'next') !== rtl; 1927 if (i === incoming) return 'z-30 ' + (fromRight ? 'translate-x-full' : '-translate-x-full'); 1928 if (i === active) return 'z-20 translate-x-0 transition-transform duration-500 ease-in-out'; 1929 if (i === previous) return 'z-10 transition-transform duration-500 ease-in-out ' + (fromRight ? '-translate-x-full' : 'translate-x-full'); 1930 return 'z-0 translate-x-full invisible'; 1931 } 1932 return i === active ? 'opacity-100 z-10 transition-opacity duration-500 ease-in-out' : 'opacity-0 z-0 transition-opacity duration-500 ease-in-out'; 1933 })()" 1934 > 1935 <div class="relative overflow-hidden lg:rounded-lg md:rounded-lg rounded-lg"> 1936 <img
1937 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/dsc00923.jpg?w=800" 1938 alt="" 1939 class="object-cover lg:rounded-lg md:rounded-lg rounded-lg h-120" 1940 loading="lazy" 1941 /> 1942 </div> 1943 </div> 1944 <div 1945 class="w-full col-start-1 row-start-1 flex items-center justify-center " 1946 x-cloak 1947 :class="(() => { 1948 const i = 1; 1949 if (transition === 'slide') { 1950 const fromRight = (direction === 'next') !== rtl; 1951 if (i === incoming) return 'z-30 ' + (fromRight ? 'translate-x-full' : '-translate-x-full'); 1952 if (i === active) return 'z-20 translate-x-0 transition-transform duration-500 ease-in-out'; 1953 if (i === previous) return 'z-10 transition-transform duration-500 ease-in-out ' + (fromRight ? '-translate-x-full' : 'translate-x-full'); 1954 return 'z-0 translate-x-full invisible'; 1955 } 1956 return i === active ? 'opacity-100 z-10 transition-opacity duration-500 ease-in-out' : 'opacity-0 z-0 transition-opacity duration-500 ease-in-out'; 1957 })()" 1958 > 1959 <div class="relative overflow-hidden lg:rounded-lg md:rounded-lg rounded-lg"> 1960 <img
1961 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/dsc00924.jpg?w=800" 1962 alt="" 1963 class="object-cover lg:rounded-lg md:rounded-lg rounded-lg h-120" 1964 loading="lazy" 1965 /> 1966 </div> 1967 </div> 1968 <div 1969 class="w-full col-start-1 row-start-1 flex items-center justify-center " 1970 x-cloak 1971 :class="(() => { 1972 const i = 2; 1973 if (transition === 'slide') { 1974 const fromRight = (direction === 'next') !== rtl; 1975 if (i === incoming) return 'z-30 ' + (fromRight ? 'translate-x-full' : '-translate-x-full'); 1976 if (i === active) return 'z-20 translate-x-0 transition-transform duration-500 ease-in-out'; 1977 if (i === previous) return 'z-10 transition-transform duration-500 ease-in-out ' + (fromRight ? '-translate-x-full' : 'translate-x-full'); 1978 return 'z-0 translate-x-full invisible'; 1979 } 1980 return i === active ? 'opacity-100 z-10 transition-opacity duration-500 ease-in-out' : 'opacity-0 z-0 transition-opacity duration-500 ease-in-out'; 1981 })()" 1982 > 1983 <div class="relative overflow-hidden lg:rounded-lg md:rounded-lg rounded-lg"> 1984 <img
1985 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/dsc00925.jpg?w=800" 1986 alt="" 1987 class="object-cover lg:rounded-lg md:rounded-lg rounded-lg h-120" 1988 loading="lazy" 1989 /> 1990 </div> 1991 </div> 1992 <div 1993 class="w-full col-start-1 row-start-1 flex items-center justify-center " 1994 x-cloak 1995 :class="(() => { 1996 const i = 3; 1997 if (transition === 'slide') { 1998 const fromRight = (direction === 'next') !== rtl; 1999 if (i === incoming) return 'z-30 ' + (fromRight ? 'translate-x-full' : '-translate-x-full'); 2000 if (i === active) return 'z-20 translate-x-0 transition-transform duration-500 ease-in-out'; 2001 if (i === previous) return 'z-10 transition-transform duration-500 ease-in-out ' + (fromRight ? '-translate-x-full' : 'translate-x-full'); 2002 return 'z-0 translate-x-full invisible'; 2003 } 2004 return i === active ? 'opacity-100 z-10 transition-opacity duration-500 ease-in-out' : 'opacity-0 z-0 transition-opacity duration-500 ease-in-out'; 2005 })()" 2006 > 2007 <div class="relative overflow-hidden lg:rounded-lg md:rounded-lg rounded-lg"> 2008 <img
2009 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/dsc00927.jpg?w=800" 2010 alt="" 2011 class="object-cover lg:rounded-lg md:rounded-lg rounded-lg h-120" 2012 loading="lazy" 2013 /> 2014 </div> 2015 </div> 2016 <div 2017 class="w-full col-start-1 row-start-1 flex items-center justify-center " 2018 x-cloak 2019 :class="(() => { 2020 const i = 4; 2021 if (transition === 'slide') { 2022 const fromRight = (direction === 'next') !== rtl; 2023 if (i === incoming) return 'z-30 ' + (fromRight ? 'translate-x-full' : '-translate-x-full'); 2024 if (i === active) return 'z-20 translate-x-0 transition-transform duration-500 ease-in-out'; 2025 if (i === previous) return 'z-10 transition-transform duration-500 ease-in-out ' + (fromRight ? '-translate-x-full' : 'translate-x-full'); 2026 return 'z-0 translate-x-full invisible'; 2027 } 2028 return i === active ? 'opacity-100 z-10 transition-opacity duration-500 ease-in-out' : 'opacity-0 z-0 transition-opacity duration-500 ease-in-out'; 2029 })()" 2030 > 2031 <div class="relative overflow-hidden lg:rounded-lg md:rounded-lg rounded-lg"> 2032 <img
2033 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/dsc00928.jpg?w=800" 2034 alt="" 2035 class="object-cover lg:rounded-lg md:rounded-lg rounded-lg h-120" 2036 loading="lazy" 2037 /> 2038 </div> 2039 </div> 2040 <div 2041 class="w-full col-start-1 row-start-1 flex items-center justify-center " 2042 x-cloak 2043 :class="(() => { 2044 const i = 5; 2045 if (transition === 'slide') { 2046 const fromRight = (direction === 'next') !== rtl; 2047 if (i === incoming) return 'z-30 ' + (fromRight ? 'translate-x-full' : '-translate-x-full'); 2048 if (i === active) return 'z-20 translate-x-0 transition-transform duration-500 ease-in-out'; 2049 if (i === previous) return 'z-10 transition-transform duration-500 ease-in-out ' + (fromRight ? '-translate-x-full' : 'translate-x-full'); 2050 return 'z-0 translate-x-full invisible'; 2051 } 2052 return i === active ? 'opacity-100 z-10 transition-opacity duration-500 ease-in-out' : 'opacity-0 z-0 transition-opacity duration-500 ease-in-out'; 2053 })()" 2054 > 2055 <div class="relative overflow-hidden lg:rounded-lg md:rounded-lg rounded-lg"> 2056 <img
2057 src="//cdn1.artcltn.com/storage/13351/a1e4f062-627a-45d3-ae26-681beadadd15/dsc00929.jpg?w=800" 2058 alt="" 2059 class="object-cover lg:rounded-lg md:rounded-lg rounded-lg h-120" 2060 loading="lazy" 2061 /> 2062 </div> 2063 </div> 2064 2065 <div @click="rtl ? forward() : prev()" 2066 class="absolute z-30 left-0 top-1/2 -translate-y-1/2 flex items-center justify-center text-black translate-x-3 rounded-full cursor-pointer bg-white/30 w-14 h-14 hover:bg-white/40" 2067 > 2068 <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5L8.25 12l7.5-7.5" /></svg> 2069 </div> 2070 2071 <div @click="rtl ? prev() : forward()" 2072 class="absolute z-30 right-0 top-1/2 -translate-y-1/2 flex items-center justify-center text-black -translate-x-3 rounded-full cursor-pointer bg-white/30 w-14 h-14 hover:bg-white/40" 2073 > 2074 <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" /></svg> 2075 </div> 2076 </div> 2077 </div> 2078</div> 2079</div><div id="c6ab01eb897931" class="component"><div 2080 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 2081 style="" 2082> 2083 <div class="text-option"><p><br></p><p>The live dulcimer was recorded with Schoeps microphones, adding an organic ethnic element that contrasts with the heavier guitars, drums and electronic textures.</p><p><br></p><p>The vocal parts were sung by my kids, adding a personal and organic element to the track and further connecting the music to its thematic inspiration.</p></div> 2084</div> 2085</div><div id="c6ab0243063f60" class="component"><div 2086 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 2087 style="" 2088> 2089 <div class="text-option"><p>Listen to "Eleventh Name Of Ganesha" on spotify:</p><p><a href="https://open.spotify.com/album/5Ke1atU6XM5n6wKkWbbXqR" rel="noopener noreferrer" target="_blank" style="color: rgb(88, 72, 183);">
2089https://open.spotify.com/album/5Ke1atU6XM5n6wKkWbbXqR</a></p><p><br></p><p><br></p></div> 2090</div> 2091</div></div></div> 2092 </div> 2093 2094 </article> 2095 2096</div> 2097 2098 </div> 2099 </div> 2100 <div 2101 class=" column relative md:w-3/12" 2102 2103 > 2104 <div id="c6ab01538caaaa" class="component"><div class="mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5"> 2105 <h2>Archives</h2> 2106 <ul class="flex flex-col gap-1 mt-3 link-container"> 2107 <li> 2108 <a 2109 href="/blog/archive/?month=09&year=2026" 2110 >September 2026 (1)</a> 2111 </li> 2112 </ul> 2113</div> 2114</div><div id="c6ab01538caab0" class="component"><div class="mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5"> 2115 <h2>Tags</h2> 2116 <ul class="flex flex-col gap-1 mt-3 link-container"> 2117 <li> 2118 <a 2119 href="/blog/t/recording-process" 2120 >recording-process (1)</a> 2121 </li> 2122 </ul> 2123</div> 2124</div> 2125 </div> 2126 </div> 2127</div> 2128 2129 </div> 2130</section> 2131</div> 2132</div> 2133</div> 2134 </main> 2135 <footer class="main-footer"> 2136 <div class="footer-inner"> 2137 <div id="c6a195aefe5b16" class="component"><section 2138 id="page-section" 2139 style="--text-color: #333333; --background-color: #0a0a0a; --min-height-desktop: 200px; --min-height-tablet: 200px; --min-height-mobile: 200px;" 2140 class="page-section transition-all z-10 relative text-(--text-color) custom-text-color bg-(--background-color) bg-type-color hover:bg-type-none group-hover:bg-type-none lg:rounded-none md:rounded-none rounded-none pl-4 pr-4 md:pl-0 md:pr-0 lg:pl-0 lg:pr-0 lg:min-h-(--min-height-desktop) md:min-h-(--min-height-tablet) min-h-(--min-height-mobile) content-center" 2141> 2142 2143 2144 <div 2145 class="section-inner relative transition-all duration-500 mx-auto grid lg:max-w-5xl md:max-w-5xl max-w-5xl lg:gap-3 md:gap-2 gap-1" 2146 style="padding-block: 48px;" 2147 2148 > 2149 <div id="c6a2996ce8cd05" class="component"><div 2150 class="" 2151 style="" 2152> 2153 <div 2154 class="embed-code-component transition-all overflow-hidden lg:w-full md:w-full w-full lg:rounded-lg md:rounded-lg rounded-lg mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 2155 style="text-align: left; " 2156 > 2157 <div class="ml-embedded" data-form="bx6rct"></div> 2158 </div> 2159</div> 2160</div><div id="c6a195b5d3c335" class="component"><div 2161 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 2162 style="" 2163> 2164 <div class="text-option"><div class="ql-align-center"><strong><span style="color:#d5d5d5;">Dark Intervals | Copyright ® 2026 | Powered By BadString Studio LTD<br />​All Rights Reserved</span></strong></div></div> 2165</div> 2166</div><div id="c6a195b5d3c401" class="component"><div 2167 class="transition-all mt-2.5 mb-2.5 md:mt-2.5 md:mb-2.5 lg:mt-2.5 lg:mb-2.5" 2168 style="" 2169> 2170 <div class="text-option"><p class="ql-align-center"><a href="/about" style="color: rgb(213, 213, 213);">ABOUT</a><span style="color: rgb(213, 213, 213);"> | </span><a href="/contact" style="color: rgb(213, 213, 213);">CONTACT</a><span style="color: rgb(213, 213, 213);"> | </span><a href="/eula" style="color: rgb(213, 213, 213);"> EULA/TERMS</a><span style="color: rgb(213, 213, 213);"> | </span><a href="/privacy-policy" style="color: rgb(213, 213, 213);">PRIVACY POLICY</a><span style="color: rgb(213, 213, 213);"> | </span><a href="/faq" style="color: rgb(213, 213, 213);">FAQ</a><span style="color: rgb(213, 213, 213);">â</span></p></div> 2171</div> 2172</div> 2173 2174 </div> 2175</section> 2176</div> 2177 </div> 2178 </footer> 2179 </div> 2180</div> 2181
2182<script> 2183// Listen for FastSpring checkout completion 2184window.addEventListener("fs.order.completed", function(event) { 2185 try { 2186 // Extract order details from FastSpring 2187 const order = event.detail; 2188 const amount = order.total || 0; // order total amount 2189 const currency = order.currency || "USD"; 2190 2191 // Fire Meta Pixel Purchase event 2192 fbq('track', 'Purchase', { 2193 value: amount, 2194 currency: currency 2195 }); 2196 2197 console.log("Meta Pixel Purchase event sent:", amount, currency); 2198 } catch (e) { 2199 console.error("Error tracking FastSpring purchase with Meta Pixel:", e); 2200 } 2201}); 2202</script>
2202<div 2203 x-transition 2204 x-show="$store.commerceCart.totalQuantity > 0 && !$store.nav.mobile" 2205 x-data 2206 class="z-50 fixed flex p-5 right-0 bottom-0" 2207> 2208 <a href="/c/cart"> 2209 <span title="Cart" class="art-cart-button transition-all flex p-2 rounded-full hover:scale-110 border border-(--color-text-dark-bg-heading) bg-(--color-primary-main) text-(--color-text-dark-bg-heading)"> 2210 <svg class="w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon"> 2211 <path d="M2.25 2.25a.75.75 0 0 0 0 1.5h1.386c.17 0 .318.114.362.278l2.558 9.592a3.752 3.752 0 0 0-2.806 3.63c0 .414.336.75.75.75h15.75a.75.75 0 0 0 0-1.5H5.378A2.25 2.25 0 0 1 7.5 15h11.218a.75.75 0 0 0 .674-.421 60.358 60.358 0 0 0 2.96-7.228.75.75 0 0 0-.525-.965A60.864 60.864 0 0 0 5.68 4.509l-.232-.867A1.875 1.875 0 0 0 3.636 2.25H2.25ZM3.75 20.25a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0ZM16.5 20.25a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z"/> 2212</svg> 2213 <p class="pl-1" 2214 x-text="$store.commerceCart.totalQuantity"> 2215 </p> 2216 </span> 2217 </a> 2218</div> 2219</body> 2220 2221</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.