PageSourceSearch

https://www.stefanprins.net/news

html stefanprins.net collected 2026-10-10 02:20:58 UTC 59,112 bytes, 1,071 lines download raw bytes

1<!DOCTYPE html><html data-wf-page="688a5b230a14df15c659f9c7" data-wf-site="6888085c617ef31b88797ced" lang="en"><head>
2  <meta charset="utf-8">
3  <title>Stefan Prins | News</title>
4  <meta content="Stefan Prins is a Belgian composer whose music reflects on contemporary technologies and new media. He is co-artistic director of the Nadar Ensemble." name="description">
5  <meta content="Stefan Prins | News" property="og:title">
6  <meta content="Stefan Prins is a Belgian composer whose music reflects on contemporary technologies and new media. He is co-artistic director of the Nadar Ensemble." property="og:description">
7  <meta content="https://cdn.prod.website-files.com/6888085c617ef31b88797ced/688a2e4f07aed07d7aa475cd_prins-cloud_chamber_copyright-Laurent_Orseau.png" property="og:image">
8  <meta content="Stefan Prins | News" property="twitter:title">
9  <meta content="Stefan Prins is a Belgian composer whose music reflects on contemporary technologies and new media. He is co-artistic director of the Nadar Ensemble." property="twitter:description">
10  <meta content="https://cdn.prod.website-files.com/6888085c617ef31b88797ced/688a2e4f07aed07d7aa475cd_prins-cloud_chamber_copyright-Laurent_Orseau.png" property="twitter:image">
11  <meta property="og:type" content="website">
12  <meta content="summary_large_image" name="twitter:card">
13  <meta content="width=device-width, initial-scale=1" name="viewport">
14  <link href="css/normalize.css" rel="stylesheet" type="text/css">
15  <link href="css/components.css" rel="stylesheet" type="text/css">
16  <link href="css/stefan-prins.css" rel="stylesheet" type="text/css">
17  
17<script src="https://use.typekit.net/aiz3xhz.js" type="text/javascript"></script>
17
18  
18<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
18
19  
19<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
19
20  <link href="images/favicon.png" rel="shortcut icon" type="image/x-icon">
21  <link href="images/webclip.png" rel="apple-touch-icon">
22  
22<script async="" src="https://cdn.jsdelivr.net/npm/@finsweet/cookie-consent@1/fs-cc.js" fs-cc-mode="opt-in"></script>
22
23  <style>
24  * {
25    -webkit-font-smoothing: antialiased;
26    -moz-osx-font-smoothing: grayscale;
27  }
28  .w-nav-overlay{
29    top:0;
30  }
31  html {
32    scroll-behavior: smooth
33  }
34  [id] {
35    scroll-margin-top: 4rem;
36  }
37  .w-richtext a img:hover{
38    cursor:pointer;
39    opacity: 0.5;
40    transform: scale(0.98);
41  }
42  .w-richtext a img{
43    transition: 0.4s all;
44  }
45</style>
46  <style>
47  .youtube {
48    background-color: #939393;
49    position: relative;
50    overflow: hidden;
51    cursor: pointer;
52    min-height:150px;
53    padding-top:56.25%;
54  }
55  .youtube img {
56    top:0;
57    left: 0;
58    height: 100%;
59    width: 100%;
60    object-fit: cover;
61  }
62  .youtube img,
63  .youtube iframe {
64    overflow: hidden;
65  }
66  .youtube .play-button {
67    width: 60px;
68    height: 60px;
69    z-index: 1;
70    opacity: 1;
71    display: flex;
72    align-items: center;
73    justify-content: center;
74  }
75  .youtube img,
76  .youtube .play-button {
77    cursor: pointer; 
78  }
79  .youtube img,
80  .youtube iframe,
81  .youtube .play-button,
82  .youtube .play-button:before {
83    position: absolute;
84  }
85  .youtube .play-button,
86  .youtube .play-button:before {
87    top: 50%; left: 50%; transform: translate3d( -50%, -50%, 0 ); 
88  }
89  .youtube iframe {
90    height: 100%; width: 100%; top: 0; left: 0; 
91  }
92  .w-lightbox-backdrop {
93    z-index:9999999;
94  }
95</style>
96  <link rel="stylesheet" href="https://cdn.plyr.io/3.7.8/plyr.css">
97  
97<script async="" src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-cmsload@1/cmsload.js"></script>
97
98  
98<script defer="" data-domain="stefanprins.net" src="https://v2.analytics.dreher-media.de/js/script.file-downloads.hash.outbound-links.js"></script>
98
99</head>
100<body>
101  <div class="page-wrapper">
102    <div class="cookie-consent">
103      <div fs-cc="banner" class="cc-banner_component">
104        <div class="fs-cc-banner2_container">
105          <div class="fs-cc-banner2_text">By clicking “Accept”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our <a href="privacy-policy.html" class="fs-cc-banner2_text-link">Privacy Policy</a> for more information.</div>
106          <div class="fs-cc-banner2_buttons-wrapper">
107            <a fs-cc="deny" href="#" class="fs-cc-banner2_button fs-cc-button-alt w-button">Deny</a>
108            <a fs-cc="allow" href="#" class="fs-cc-banner2_button w-button">Accept</a>
109          </div>
110        </div>
111      </div>
112      <div fs-cc="manager" class="cc-manager_component">
113        <div fs-cc="open-preferences" role="button" tabindex="0" title="Cookie Preferences" aria-label="Cookie Preferences" class="fs-cc-manager2_button w-embed"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
114            <path d="M9 8L9 8.01" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
115            <path d="M16 15L16 15.01" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
116            <path d="M10 17L10 17.01" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
117            <path d="M11 13L11 13.01" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
118            <path d="M6 12L6 12.01" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
119            <path d="M12 21C16.9706 21 21 16.9706 21 12C21 11.4402 20.9489 10.8924 20.8511 10.361C20.3413 10.7613 19.6985 11 19 11C18.4536 11 17.9413 10.8539 17.5 10.5987C17.0587 10.8539 16.5464 11 16 11C14.3431 11 13 9.65685 13 8C13 7.60975 13.0745 7.23691 13.2101 6.89492C11.9365 6.54821 11 5.38347 11 4C11 3.66387 11.0553 3.34065 11.1572 3.03894C6.58185 3.46383 3 7.31362 3 12C3 16.9706 7.02944 21 12 21Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
120          </svg></div>
121      </div>
122      <div fs-cc-scroll="disable" fs-cc="preferences" class="cc-prefs_component">
123        <div class="fs-cc-prefs2_form-wrapper w-form">
124          <form id="cookie-preferences" name="wf-form-Cookie-Preferences" data-name="Cookie Preferences" method="get" class="fs-cc-prefs2_form" data-wf-page-id="688a5b230a14df15c659f9c7" data-wf-element-id="c4bd1fb6-5502-677d-1794-351bc3102070">
125            <div fs-cc="close" class="fs-cc-prefs2_close">
126              <div class="fs-cc-preferences2_close-icon w-embed"><svg fill="currentColor" aria-hidden="true" focusable="false" viewBox="0 0 16 16">
127                  <path d="M9.414 8l4.293-4.293-1.414-1.414L8 6.586 3.707 2.293 2.293 3.707 6.586 8l-4.293 4.293 1.414 1.414L8 9.414l4.293 4.293 1.414-1.414L9.414 8z"></path>
128                </svg></div>
129            </div>
130            <div class="fs-cc-prefs2_content">
131              <div class="fs-cc-prefs2_space-small">
132                <div class="fs-cc-prefs2_title">Privacy Preferences</div>
133              </div>
134              <div class="fs-cc-prefs2_option">
135                <div class="fs-cc-prefs2_toggle-wrapper">
136                  <div class="fs-cc-prefs2_label">Essential cookies</div>
137                  <div>Required</div>
138                </div>
139              </div>
140              <div class="fs-cc-prefs2_option">
141                <div class="fs-cc-prefs2_toggle-wrapper">
142                  <div class="fs-cc-prefs2_label">Marketing cookies</div><label class="w-checkbox fs-cc-prefs2_checkbox-field">
143                    <div class="w-checkbox-input w-checkbox-input--inputType-custom fs-cc-prefs2_checkbox"></div><input type="checkbox" id="marketing-2" name="marketing-2" data-name="Marketing 2" fs-cc-checkbox="marketing" style="opacity:0;position:absolute;z-index:-1"><span for="marketing-2" class="fs-cc-prefs2_checkbox-label w-form-label">Essential</span>
144                  </label>
145                </div>
146              </div>
147              <div class="fs-cc-prefs2_option">
148                <div class="fs-cc-prefs2_toggle-wrapper">
149                  <div class="fs-cc-prefs2_label">Personalization cookies</div><label class="w-checkbox fs-cc-prefs2_checkbox-field">
150                    <div class="w-checkbox-input w-checkbox-input--inputType-custom fs-cc-prefs2_checkbox"></div><input type="checkbox" id="personalization-2" name="personalization-2" data-name="Personalization 2" fs-cc-checkbox="personalization" style="opacity:0;position:absolute;z-index:-1"><span for="personalization-2" class="fs-cc-prefs2_checkbox-label w-form-label">Essential</span>
151                  </label>
152                </div>
153              </div>
154              <div class="fs-cc-prefs2_option">
155                <div class="fs-cc-prefs2_toggle-wrapper">
156                  <div class="fs-cc-prefs2_label">Analytics cookies</div><label class="w-checkbox fs-cc-prefs2_checkbox-field">
157                    <div class="w-checkbox-input w-checkbox-input--inputType-custom fs-cc-prefs2_checkbox"></div><input type="checkbox" id="analytics-2" name="analytics-2" data-name="Analytics 2" fs-cc-checkbox="analytics" style="opacity:0;position:absolute;z-index:-1"><span for="analytics-2" class="fs-cc-prefs2_checkbox-label w-form-label">Essential</span>
158                  </label>
159                </div>
160              </div>
161              <div class="fs-cc-prefs2_buttons-wrapper">
162                <a fs-cc="deny" href="#" class="fs-cc-prefs2_button fs-cc-button-alt w-button">
162Reject all cookies</a>
163                <a fs-cc="allow" href="#" class="fs-cc-prefs2_button w-button">Allow all cookies</a>
164                <a fs-cc="submit" href="#" class="fs-cc-prefs2_submit w-button">Save preferences</a>
165              </div>
166            </div>
167          </form>
168          <div class="form-done"></div>
169          <div class="form-fail"></div>
170          <div fs-cc="close" class="fs-cc-prefs2_overlay"></div>
171        </div>
172      </div>
173    </div>
174    <div class="global-styles w-embed">
175      <style>
176/* Snippet gets rid of top margin on first element in any rich text*/
177.w-richtext>:first-child {
178	margin-top: 0;
179}
180/* Snippet gets rid of bottom margin on last element in any rich text*/
181.w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child {
182    margin-bottom: 0;
183}
184/* Snippet makes all link elements listed below to inherit color from their parent */
185a, 
186.w-tab-link,
187.w-nav-link,
188.w-dropdown-btn,
189.w-dropdown-toggle,
190.w-dropdown-link
191{
192color: inherit;
193}
194/* Snippet prevents all click and hover interaction with an element */
195.clickable-off {
196  pointer-events: none;
197}
198/* Snippet enables all click and hover interaction with an element */
199.clickable-on{
200  pointer-events: auto;
201}
202/* Snippet enables you to add class of div-square which creates and maintains a 1:1 dimension of a div.*/
203.div-square::after {
204  content: "";
205  display: block;
206  padding-bottom: 100%;
207}
208/*Hide focus outline for main content element*/
209    main:focus-visible {
210    outline: -webkit-focus-ring-color auto 0px;
211}
212/* Make sure containers never lose their center alignment*/
213.container-medium, .container-small, .container-large {
214  margin-right: auto !important;
215  margin-left: auto !important;
216}
217/*Reset selects, buttons, and links styles*/
218.w-input, .w-select, a {
219color: inherit;
220text-decoration: inherit;
221font-size: inherit;
222}
223/*Apply "..." after 3 lines of text */
224.text-style-3lines {
225    display: -webkit-box;
226    overflow: hidden;
227    -webkit-line-clamp: 3;
228    -webkit-box-orient: vertical;
229}
230/* Apply "..." after 2 lines of text */
231.text-style-2lines {
232    display: -webkit-box;
233    overflow: hidden;
234    -webkit-line-clamp: 2;
235    -webkit-box-orient: vertical;
236}
237/* Apply "..." at 100% width */
238.truncate-width { 
239		width: 100%; 
240    white-space: nowrap; 
241    overflow: hidden; 
242    text-overflow: ellipsis; 
243}
244/* Removes native scrollbar */
245.no-scrollbar {
246    -ms-overflow-style: none;  // IE 10+
247    overflow: -moz-scrollbars-none;  // Firefox
248}
249.no-scrollbar::-webkit-scrollbar {
250    display: none; // Safari and Chrome
251}
252</style>
253    </div>
254    <div data-w-id="ce85d16e-26b7-7573-f811-840851a2151f" class="nav-overlay-trigger"></div>
255    <main class="main-wrapper">
256      <div data-animation="over-right" class="navbar16_component-2 w-nav" data-wf--navbar--variant="base" data-easing2="ease-in-out" fs-scrolldisable-element="smart-nav" data-easing="ease-in-out" data-collapse="all" data-w-id="1796619c-210e-7b56-7325-c9d40848c13b" role="banner" data-no-scroll="1" data-duration="300" data-doc-height="1">
257        <div class="navbar16_container-3 is-home">
258          <a href="#" class="nav-logo-wrapper mobil-hidden w-inline-block"><img loading="eager" src="images/NEWS.svg" alt="" class="nav-logo-big"></a>
259          <div class="navbar16_wrapper-2">
260            <nav role="navigation" class="navbar16_menu-3 w-nav-menu">
261              <div class="navbar16_menu-wrapper-2">
262                <div class="navbar16_links-wrapper-2">
263                  <a href="index.html" class="navbar16_link-2 w-nav-link">Home</a>
264                  <a href="about.html" class="navbar16_link-2 w-nav-link">About</a>
265                  <a href="news.html" aria-current="page" class="navbar16_link-2 w-nav-link w--current">News</a>
266                  <a href="calendar.html" class="navbar16_link-2 w-nav-link">Calendar</a>
267                  <a href="latest-work.html" class="navbar16_link-2 w-nav-link">Latest Work</a>
268                  <a href="works.html" class="navbar16_link-2 w-nav-link">All Works</a>
269                  <a href="media.html" class="navbar16_link-2 w-nav-link">Media</a>
270                  <a href="/media#compositions" class="navbar16_link-2 media w-nav-link">COMPOSITIONS</a>
271                  <a href="/media#improvisations" class="navbar16_link-2 media w-nav-link">IMPROVISATIONS</a>
272                  <a href="/media#publications" class="navbar16_link-2 media w-nav-link">PUBLICATIONS</a>
273                  <a href="/media#press" class="navbar16_link-2 media w-nav-link">PRESS</a>
274                  <a href="/media#features" class="navbar16_link-2 media w-nav-link">Features</a>
275                  <a href="/media#gallery" class="navbar16_link-2 media margin-bottom-bigger w-nav-link">Gallery</a>
276                  <a href="blog.html" class="navbar16_link-2 w-nav-link">Blog</a>
277                  <a href="/#contact" class="navbar16_link-2 w-nav-link">Contact</a>
278                </div>
279              </div>
280            </nav>
281            <div class="navbar16_menu-button-2 w-nav-button">
282              <div class="menu-icon4-2">
283                <div class="menu-icon4_wrapper-2">
284                  <div class="menu-icon4_line-top-2"></div>
285                  <div class="middle-line-wrapper">
286                    <div class="menu-icon4_line-middle-2"></div>
287                    <div class="menu-icon4_line-middle--when-open-2"></div>
288                  </div>
289                  <div class="menu-icon4_line-bottom-2"></div>
290                </div>
291              </div>
292            </div>
293          </div>
294        </div>
295      </div>
296      <header class="hero-section">
297        <div class="hero-contents">
298          <div class="hero-container padding-top"><img src="images/NEWS_2.svg" loading="eager" alt="" class="hero-heading news"></div>
299        </div><img class="hero-img" src="/assets/6ecf75f8-ee33-4c63-b05a-000524a5650b/News.webp" alt="" style="-webkit-transform: translate3d(0, 0, 0) scale3d(1.2, 1.2, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0); -moz-transform: translate3d(0, 0, 0) scale3d(1.2, 1.2, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0); -ms-transform: translate3d(0, 0, 0) scale3d(1.2, 1.2, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0); transform: translate3d(0, 0, 0) scale3d(1.2, 1.2, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0); object-position: 50.00% 50.00%;" loading="eager">
300        <div class="hero-slide-contents">
301          <div class="padding-global height-100">
302            <div class="container-large bigger height-100">
303              <div class="flex-bottom-left">
304                <div class="text-color-secondary">
305                  <div class="h5-text">Nadar Ensemble performing "Mesh", Concertgebouw Brugge, 2023, photo: Wim Heirbaut</div>
306                </div>
307              </div>
308            </div>
309          </div>
310        </div>
311      </header>
312      <section>
313        <div class="padding-global">
314          <div class="container-large">
315            <div class="margin-section-large">
316              <div class="news-items-wrapper"><div class="news-item">
317                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
318                    <div class="slidein-contents">
319                      <div class="light-section">
320                        <div class="blog-padding">
321                          <div class="margin-bottom64">
322                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
323                              <div class="section-heading-inline">
324                                <div class="bg-line-wrapper"></div>
325                                <div class="bg-line-wrapper left"></div>
326                                <div class="z-index-2">
327                                  <div class="section-heading-padding">
328                                    <div class="text-color-secondary">
329                                      <div class="text-align-center">
330                                        <h2 class="h2-text uppercase">NEW EP RELEASE - CORPORA EX MACHINA</h2>
331                                      </div>
332                                    </div>
333                                  </div>
334                                </div>
335                              </div>
336                            </div>
337                          </div>
338                          <div class="padding-horizontal-50">
339                            <div class="max-width-68">
340                              <div class="news-flex">
341                                <div class="news-img-wrapper">
342                                  <a href="https://ensemblenikel.com/records/stefan-prins-nikel-corpora-ex-machina/" class="w-inline-block" target="_blank"><img src="/assets/514ebca1-f038-49d4-8e2a-de266f6f1af1/Nikel_MockUp.webp" loading="eager" alt="NEW EP RELEASE - CORPORA EX MACHINA" class="news-img" style="object-position: 50.00% 50.00%;"></a>
343                                </div>
344                                <div class="news-contents">
345                                  <div class="margin-bottom30">
346                                    <div class="text-color-secondary">
347                                      <h3 class="h4-text krok">21.02.2026</h3>
348                                    </div>
349                                  </div>
350                                  <div class="margin-bottom20">
351                                    <div class="h6-text w-richtext"><p>Printed in just 100 copies the release offers on side 1 the <em>Flesh+Prosthesis #0-2</em> cycle for tenor saxophone, percussion, piano, e-guitar and soundtrack (16 mins), in a blistering performance by Nikel Ensemble. Side 2 captures the extension of this cycle, <em>I’m Your Body</em>, for quartet, ensemble &amp; soundtrack (12 mins), with Nikel Ensemble and the excellent musicians from HKB Bern &amp; Sonic Space Basel music universities, conducted by Lennart Dohms. Recorded, mixed &amp; mastered by Stefano Bechini &amp; Patrik Zosso and designed by Harel Schreiber (<em>H_M studio</em>) the album is available exclusively through direct orders.&nbsp;</p></div>
352                                  </div>
353                                  <div class="btn-row">
354                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
355                                      <div>Read All</div>
356                                    </a>
357                                    <a href="https://ensemblenikel.com/records/stefan-prins-nikel-corpora-ex-machina/" class="btn w-inline-block" target="_blank">
358                                      <div>More</div>
359                                    </a>
360                                  </div>
361                                </div>
362                              </div>
363                            </div>
364                          </div>
365                        </div>
366                      </div>
367                    </div>
368                    <div class="slidein-overlay"></div>
369                  </div>
370                </div><div class="news-item">
371                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
372                    <div class="slidein-contents">
373                      <div class="light-section">
374                        <div class="blog-padding">
375                          <div class="margin-bottom64">
376                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
377                              <div class="section-heading-inline">
378                                <div class="bg-line-wrapper"></div>
379                                <div class="bg-line-wrapper left"></div>
380                                <div class="z-index-2">
381                                  <div class="section-heading-padding">
382                                    <div class="text-color-secondary">
383                                      <div class="text-align-center">
384                                        <h2 class="h2-text uppercase">Professor for Mixed &amp; Electroacoustic Composition @ Haute École de Musique Genève</h2>
385                                      </div>
386                                    </div>
387                                  </div>
388                                </div>
389                              </div>
390                            </div>
391                          </div>
392                          <div class="padding-horizontal-50">
393                            <div class="max-width-68">
394                              <div class="news-flex">
395                                <div class="news-img-wrapper">
396                                  <a href="https://www.hesge.ch/hem/" class="w-inline-block" target="_blank"><img src="/assets/7f40ec63-67a1-4fdd-b6c1-1e683c66d047/HEM.webp" loading="eager" alt="Professor for Mixed &amp; Electroacoustic Composition @ Haute École de Musique Genève" class="news-img" style="object-position: 50.00% 50.00%;"></a>
397                                </div>
398                                <div class="news-contents">
399                                  <div class="margin-bottom30">
400                                    <div class="text-color-secondary">
401                                      <h3 class="h4-text krok">07.02.2026</h3>
402                                    </div>
403                                  </div>
404                                  <div class="margin-bottom20">
405                                    <div class="h6-text w-richtext"><p>I'm delighted to have been appointed Associated Professor for Mixed &amp; Electroacoustic Composition at the <em>Haute École de Musique de Genève</em>, a position I will take up in september 2026.</p>
406<p>After more than six years of faithful (and happy) service I will then step down as Professor for Composition &amp; director of the <em>
406Hybrid Music Lab</em> at the Hochschule für Musik Dresden.</p>
407<p>If you're interested in studying composition with me, Katharina Rosenberger &amp; Gilbert Nouno (Mixed Media Composition) at the HEM, you can apply until 1st of March.</p>
408<p>&nbsp;</p></div>
409                                  </div>
410                                  <div class="btn-row">
411                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
412                                      <div>Read All</div>
413                                    </a>
414                                    <a href="https://www.hesge.ch/hem/" class="btn w-inline-block" target="_blank">
415                                      <div>More</div>
416                                    </a>
417                                  </div>
418                                </div>
419                              </div>
420                            </div>
421                          </div>
422                        </div>
423                      </div>
424                    </div>
425                    <div class="slidein-overlay"></div>
426                  </div>
427                </div><div class="news-item">
428                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
429                    <div class="slidein-contents">
430                      <div class="light-section">
431                        <div class="blog-padding">
432                          <div class="margin-bottom64">
433                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
434                              <div class="section-heading-inline">
435                                <div class="bg-line-wrapper"></div>
436                                <div class="bg-line-wrapper left"></div>
437                                <div class="z-index-2">
438                                  <div class="section-heading-padding">
439                                    <div class="text-color-secondary">
440                                      <div class="text-align-center">
441                                        <h2 class="h2-text uppercase">Live-recording "Cyborg Flesh" online</h2>
442                                      </div>
443                                    </div>
444                                  </div>
445                                </div>
446                              </div>
447                            </div>
448                          </div>
449                          <div class="padding-horizontal-50">
450                            <div class="max-width-68">
451                              <div class="news-flex">
452                                <div class="news-img-wrapper">
453                                  <a href="https://oe1.orf.at/programm/20251109/813277/Schoenberg-Stefan-Prins-und-das-Arditti-Quartet" class="w-inline-block" target="_blank"><img src="/assets/eeb58cdb-2cdc-478b-a90b-79ec5dab90b5/CyborgFlesh-title1.webp" loading="eager" alt="Live-recording &quot;Cyborg Flesh&quot; online" class="news-img" style="object-position: 50.00% 50.00%;"></a>
454                                </div>
455                                <div class="news-contents">
456                                  <div class="margin-bottom30">
457                                    <div class="text-color-secondary">
458                                      <h3 class="h4-text krok">09.11.2025</h3>
459                                    </div>
460                                  </div>
461                                  <div class="margin-bottom20">
462                                    <div class="h6-text w-richtext"><p>After an electrifying premiere of "Cyborg Flesh" at the Wien Modern Festival by the Arditti Quartet, Yaron Deutsch and myself - with Fredi Reiter for the sound - on 31.10.2025, ORF/OE1 has now published the live recording of this concert on their website. The first work on the recording is Schoenberg's Fourth String Quartet, from the live-performance of the Arditti's at the Festival. Then, at 38:45 of this recording I give a little introduction about "Cyborg Flesh", and at 45:45 the performance starts. The composition is 57 minutes long. The recording will be available until 9.12.2025.</p>
463<p>Just send me an email if you are interested in hearing the recording after that date.</p></div>
464                                  </div>
465                                  <div class="btn-row">
466                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
467                                      <div>Read All</div>
468                                    </a>
469                                    <a href="https://oe1.orf.at/programm/20251109/813277/Schoenberg-Stefan-Prins-und-das-Arditti-Quartet" class="btn w-inline-block" target="_blank">
470                                      <div>More</div>
471                                    </a>
472                                  </div>
473                                </div>
474                              </div>
475                            </div>
476                          </div>
477                        </div>
478                      </div>
479                    </div>
480                    <div class="slidein-overlay"></div>
481                  </div>
482                </div><div class="news-item">
483                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
484                    <div class="slidein-contents">
485                      <div class="light-section">
486                        <div class="blog-padding">
487                          <div class="margin-bottom64">
488                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
489                              <div class="section-heading-inline">
490                                <div class="bg-line-wrapper"></div>
491                                <div class="bg-line-wrapper left"></div>
492                                <div class="z-index-2">
493                                  <div class="section-heading-padding">
494                                    <div class="text-color-secondary">
495                                      <div class="text-align-center">
496                                        <h2 class="h2-text uppercase">New live-recording "Inhibition Space #1" with Ensemble Recherche</h2>
497                                      </div>
498                                    </div>
499                                  </div>
500                                </div>
501                              </div>
502                            </div>
503                          </div>
504                          <div class="padding-horizontal-50">
505                            <div class="max-width-68">
506                              <div class="news-flex">
507                                <div class="news-img-wrapper">
508                                  <a href="https://www.youtube.com/watch?v=vIw7YLIjTZY" class="w-inline-block" target="_blank"><img src="/assets/b7d955ed-2007-4503-8682-8da6fb7e4e05/inhibitionspace1-1.webp" loading="eager" alt="New live-recording &quot;Inhibition Space #1&quot; with Ensemble Recherche" class="news-img" style="object-position: 50.00% 50.00%;"></a>
509                                </div>
510                                <div class="news-contents">
511                                  <div class="margin-bottom30">
512                                    <div class="text-color-secondary">
513                                      <h3 class="h4-text krok">29.09.2025</h3>
514                                    </div>
515                                  </div>
516                                  <div class="margin-bottom20">
517                                    <div class="h6-text w-richtext"><p>Wonderful performance of a newly revised version of "Inhibition Space #1" for bass flute, bass oboe, bass clarinet &amp; live-electronics, by Ensemble Recherche, live at the Ensemblehaus Freiburg, on 26.9.2025.</p></div>
518                                  </div>
519                                  <div class="btn-row">
520                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
521                                      <div>Read All</div>
522                                    </a>
523                                    <a href="https://www.youtube.com/watch?v=vIw7YLIjTZY" class="btn w-inline-block" target="_blank">
524                                      <div>More</div>
525                                    </a>
526                                  </div>
527                                </div>
528                              </div>
529                            </div>
530                          </div>
531                        </div>
532                      </div>
533                    </div>
534                    <div class="slidein-overlay"></div>
535                  </div>
536                </div><div class="news-item">
537                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
538                    <div class="slidein-contents">
539                      <div class="light-section">
540                        <div class="blog-padding">
541                          <div class="margin-bottom64">
542                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
543                              <div class="section-heading-inline">
544                                <div class="bg-line-wrapper"></div>
545                                <div class="bg-line-wrapper left"></div>
546                                <div class="z-index-2">
547                                  <div class="section-heading-padding">
548                                    <div class="text-color-secondary">
549                                      <div class="text-align-center">
550                                        <h2 class="h2-text uppercase">New double-cd "inhabit"</h2>
551                                      </div>
552                                    </div>
553                                  </div>
554                                </div>
555                              </div>
556                            </div>
557                          </div>
558                          <div class="padding-horizontal-50">
559                            <div class="max-width-68">
560                              <div class="news-flex">
561                                <div class="news-img-wrapper">
562                                  <a href="https://subrosalabel.bandcamp.com/album/inhabit" class="w-inline-block" target="_blank"><img src="/assets/ca2e0163-79d6-4cbf-af1d-64ccae86b994/inhabit-cover-small.webp" loading="eager" alt="New double-cd &quot;inhabit&quot;" class="news-img" style="object-position: 50.00% 50.00%;"></a>
563                                </div>
564                                <div class="news-contents">
565                                  <div class="margin-bottom30">
566                                    <div class="text-color-secondary">
567                                      <h3 class="h4-text krok">20.09.2025</h3>
568                                    </div>
569                                  </div>
570                                  <div class="margin-bottom20">
571                                    <div class="h6-text w-richtext"><p>It's here! A brand-new release by Sub Rosa Records of the double cd <em>inhabit</em>
571, coproduced by Deutschlandfunk Kultur, which contains new studio recordings and fully remastered live-recordings of four recent, large-scale compositions: <em>Inhibition Space #1</em> (2020) for bass woodwind trio and live-electronics, performed by Ensemble Mosaik, <em>inhabit_inhibit </em>(2019-2020) for four spatialized quartets, six feedback soloists &amp; live-electronics, performed by EnsembleKollektiv Berlin (cond. Max Murray), <em>under_current</em> (2020-2021, rev. 2023) for electric guitar and orchestra, played by Yaron Deutsch (e-guitar) &amp; the BBC Scottish Symphony Orchesta (cond. Ilan Volkov), and <em>Mesh</em> (2022-2023) for ensemble and live-electronics, by the Nadar Ensemble. This release was made possible by Sub Rosa and Deutschlandfunk Kultur (coproducer), the support of all participating ensembles and musicians, BBC Radio 3 &amp; the BBC Scottish Symphony Orchestra and last but not least the financial support from the Flemish Government. Heartfelt thanks to all of them!</p>
572<p>Click on the link ("MORE") to listen and/or buy the album!</p></div>
573                                  </div>
574                                  <div class="btn-row">
575                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
576                                      <div>Read All</div>
577                                    </a>
578                                    <a href="https://subrosalabel.bandcamp.com/album/inhabit" class="btn w-inline-block" target="_blank">
579                                      <div>More</div>
580                                    </a>
581                                  </div>
582                                </div>
583                              </div>
584                            </div>
585                          </div>
586                        </div>
587                      </div>
588                    </div>
589                    <div class="slidein-overlay"></div>
590                  </div>
591                </div><div class="news-item">
592                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
593                    <div class="slidein-contents">
594                      <div class="light-section">
595                        <div class="blog-padding">
596                          <div class="margin-bottom64">
597                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
598                              <div class="section-heading-inline">
599                                <div class="bg-line-wrapper"></div>
600                                <div class="bg-line-wrapper left"></div>
601                                <div class="z-index-2">
602                                  <div class="section-heading-padding">
603                                    <div class="text-color-secondary">
604                                      <div class="text-align-center">
605                                        <h2 class="h2-text uppercase">"Fremdkörper #1" - remastered live-recording of Nadar's Darmstadt debut</h2>
606                                      </div>
607                                    </div>
608                                  </div>
609                                </div>
610                              </div>
611                            </div>
612                          </div>
613                          <div class="padding-horizontal-50">
614                            <div class="max-width-68">
615                              <div class="news-flex">
616                                <div class="news-img-wrapper">
617                                  <a href="https://internationales-musikinstitut.de/de/imd/publikationen/darmstadt-sonicals1/" class="w-inline-block" target="_blank"><img src="/assets/bd9bdefc-9da0-417c-b77c-51d7f381ffa3/Darmstadt-Sonicals1-1.webp" loading="eager" alt="&quot;Fremdkörper #1&quot; - remastered live-recording of Nadar's Darmstadt debut" class="news-img" style="object-position: 50.00% 50.00%;"></a>
618                                </div>
619                                <div class="news-contents">
620                                  <div class="margin-bottom30">
621                                    <div class="text-color-secondary">
622                                      <h3 class="h4-text krok">25.07.2025</h3>
623                                    </div>
624                                  </div>
625                                  <div class="margin-bottom20">
626                                    <div class="h6-text w-richtext"><div class="margin-bottom80 mobil-smaller">
627<div class="popup-contents-flex">
628<div class="p-flex-content">
629<div class="h4-text w-richtext">
630<p>As an online bonus track to this gorgeous triple vinyl release, you'll find a remastered version of the live-recording of <em>Fremdkörper #1</em> as it was performed by the Nadar Ensemble at its memorable debut concert at the Darmstädter Ferienkurse, Live at the Orangerie, 21.7.2010.</p>
631<p>"Darmstadt Sonicals - edition #01 - The electric guitar diaries".&nbsp;</p>
632</div>
633</div>
634</div>
635</div>
636<div class="h6-text w-richtext">
637<p>Nadar Ensemble, cond. Daan Janssens, Stefan Prins (live-electronics)</p>
638<p>&nbsp;</p>
639</div></div>
640                                  </div>
641                                  <div class="btn-row">
642                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
643                                      <div>Read All</div>
644                                    </a>
645                                    <a href="https://internationales-musikinstitut.de/de/imd/publikationen/darmstadt-sonicals1/" class="btn w-inline-block" target="_blank">
646                                      <div>More</div>
647                                    </a>
648                                  </div>
649                                </div>
650                              </div>
651                            </div>
652                          </div>
653                        </div>
654                      </div>
655                    </div>
656                    <div class="slidein-overlay"></div>
657                  </div>
658                </div><div class="news-item">
659                  <div data-w-id="e764229d-bf24-03a9-a1f2-ee269d9d5268" class="slidein-wrapper">
660                    <div class="slidein-contents">
661                      <div class="light-section">
662                        <div class="blog-padding">
663                          <div class="margin-bottom64">
664                            <div data-wf--section-heading-wrapper--variant="base" class="section-heading-wrapper padding">
665                              <div class="section-heading-inline">
666                                <div class="bg-line-wrapper"></div>
667                                <div class="bg-line-wrapper left"></div>
668                                <div class="z-index-2">
669                                  <div class="section-heading-padding">
670                                    <div class="text-color-secondary">
671                                      <div class="text-align-center">
672                                        <h2 class="h2-text uppercase">"sub_current" (Prins/Deutsch)</h2>
673                                      </div>
674                                    </div>
675                                  </div>
676                                </div>
677                              </div>
678                            </div>
679                          </div>
680                          <div class="padding-horizontal-50">
681                            <div class="max-width-68">
682                              <div class="news-flex">
683                                <div class="news-img-wrapper">
684                                  <a href="https://yarondeutsch.bandcamp.com/album/soul-soul-soul-sweet-soul" class="w-inline-block" target="_blank"><img src="/assets/8e4b0162-bf17-425a-8d57-3b84f9e2b41d/Yaron-Deutsch-Soul-Front-1-559x559.webp" loading="eager" alt="&quot;sub_current&quot; (Prins/Deutsch)" class="news-img" style="object-position: 50.00% 50.00%;"></a>
685                                </div>
686                                <div class="news-contents">
687                                  <div class="margin-bottom30">
688                                    <div class="text-color-secondary">
689                                      <h3 class="h4-text krok">01.12.2024</h3>
690                                    </div>
691                                  </div>
692                                  <div class="margin-bottom20">
693                                    <div class="h6-text w-richtext"><p>My collaboration and friendship with Yaron started in 2009, and has grown in intensity ever since, also including an improvisation band called <em>Ministry of Bad Decisions, </em>where authorship is entirely leveled out. In the beautiful project "Soul, soul, soul, sweet soul" by Yaron, yet another approach to collaboration and authorship is offered: &nbsp;Yaron autonomously restructured/recomposed the solo part of <em>under_current</em>, the electric guitar concert I composed for him. Yaron's version is called "sub_current". The vinyl was longlisted for the Preis der Deutsche Schallplattenkritik 2024.</p></div>
694                                  </div>
695                                  <div class="btn-row">
696                                    <a href="/assets/null" class="btn w-inline-block" style="display: none;" target="_blank">
697                                      <div>Read All</div>
698                                    </a>
699                                    <a href="https://yarondeutsch.bandcamp.com/album/soul-soul-soul-sweet-soul" class="btn w-inline-block" target="_blank">
700                                      <div>More</div>
701                                    </a>
702                                  </div>
703                                </div>
704                              </div>
705                            </div>
706                          </div>
707                        </div>
708                      </div>
709                    </div>
710                    <div class="slidein-overlay"></div>
711                  </div>
712                </div></div>
713            </div>
714          </div>
715        </div>
716      </section>
717      <footer class="footer">
718        <div class="w-layout-grid footer_grid">
719          <div id="w-node-_3f8a519d-e42a-33a3-9e93-b9a22482b781-2482b77f" class="footer_wrapper">
720            <a href="imprint.html" class="w-inline-block">
721              <div class="coopyright_text created">Imprint</div>
722            </a>
723            <div class="coopyright_text created">|</div>
724            <a href="privacy-policy.html" class="w-inline-block">
725              <div class="coopyright_text created">Privacy Policy</div>
726            </a>
727          </div>
728          <div id="w-node-_3f8a519d-e42a-33a3-9e93-b9a22482b788-2482b77f" class="coopyright_text">©<span class="copyright-year">YEAR</span> Stefan Prins</div>
729          <div id="w-node-_3f8a519d-e42a-33a3-9e93-b9a22482b78a-2482b77f" class="footer_wrapper">
730            <div class="coopyright_text created">created by</div>
731            <a href="https://www.dreher-media.de" target="_blank" class="w-inline-block"><img src="images/dreher.media-logo_website-white.svg" loading="lazy" alt="" class="dreher-media-logo"></a>
732          </div>
733        </div>
734      </footer>
735    </main>
736  </div>
737  
737<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=6888085c617ef31b88797ced" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
737
738  
738<script src="js/stefan-prins.js" type="text/javascript"></script>
738
739  
739<script>
740  // Functionality for fs-cc-reject
741  let initFsCCListener = false;
742  function handleFsCcReject() {
743    if (!window.FsCC) {
744      setTimeout(handleFsCcReject, 200);
745      return;
746    }
747    if (!initFsCCListener) { 
748      // Add a listener for changes in consent preferences
749      window.FsCC.consentController.on('updateconsents', (consents) => {
750        handleFsCcReject(); // Run the function whenever consent changes
751      });
752    }
753    // Iterate through all elements with fs-cc-reject attributes
754    document.querySelectorAll('[fs-cc-reject]').forEach((rejectElement) => {
755      const category = rejectElement.getAttribute('fs-cc-reject'); // Get the consent category
756      const isConsentGiven = window.FsCC.store.consents[category]; // Check if consent is granted for the category
757      const consentElement = document.querySelector('[fs-cc="' + category + '"]'); // Find the corresponding fs-cc element
758      // Toggle visibility based on consent state
759      if (isConsentGiven) {
760        rejectElement.style.display = 'none'; // Hide the reject element
761        if (consentElement) consentElement.style.display = 'block'; // Show the consented content
762      } else {
763        rejectElement.style.display = 'block'; // Show the reject element
764        if (consentElement) consentElement.style.display = 'none'; // Hide the consented content
765      }
766    });
767  }
768  // Run the script on page load
769  document.addEventListener('DOMContentLoaded', handleFsCcReject);
770</script>
770
771  
771<script>
772  Webflow.push(function() {
773    $('.copyright-year').text(new Date().getFullYear());
774  });
775  Webflow.push(function() {
776    //DISABLE WEBFLOW SMOOTH SCROLL
777    $(function() {
778      $(document).off('click.wf-scroll');
779    });
780  });
781  window.addEventListener('load', (event) => {
782    const routeName = window.location.pathname?.split('/')?.slice(-1)?.[0]
783    document
784      .querySelectorAll('a[href*="' + routeName + '"]')
785      ?.forEach((el) => el?.classList?.add('w--current'))
786  })
787  function addSeparatorsByDataAttribute() {
788    // Find all elements in the document
789    const matchingElements = document.querySelectorAll('[data-separator]');
790    // Process each matching element
791    matchingElements.forEach(element => {
792      // Get the separator text from the data-separator attribute
793      const separatorText = element.getAttribute('data-separator');
794      // Get all child elements of the current element
795      const children = Array.from(element.children);
796      // Iterate through the children and insert separators
797      children.forEach((child, index) => {
798        if (index < children.length - 1) { // No separator after the last child
799          // Create a new separator element (you could change this to suit)
800          const separator = document.createElement('span');
801          separator.innerHTML = '&nbsp;' + separatorText + '&nbsp;'; // Set separator text
802          // Insert the separator after the current child
803          child.insertAdjacentElement('afterend', separator);
804        }
805      });
806    });
807  }
808  addSeparatorsByDataAttribute();
809  document.querySelectorAll('.tab-link')
810    ?.forEach((el) => el.addEventListener('click', (event) => {
811    const tabGroup = el.dataset.tabGroup;
812    if (tabGroup) {
813      document.querySelector('.tab-link.active[data-tab-group="' + tabGroup + '"]')?.classList?.remove('active')
814    } else {
815      el.parentNode.querySelector('.tab-link.active')?.classList?.remove('active')
816    }
817    el.classList.add('active')
818  }))
819  document.querySelectorAll('.biography-lang-links .tab-link')
820    ?.forEach((el) => el.addEventListener('click', (event) => {
821    const lang = el.dataset?.lang
822    document.querySelectorAll('.biography-text:not(.' + lang + ')')
823      ?.forEach((bioEl) => bioEl.style.display = 'none')
824    document.querySelectorAll('.biography-text.' + lang)
825      ?.forEach((bioEl) => bioEl.style.display = 'block')
826  }))
827  document.querySelectorAll('.tab-link[data-tab-id]')
828    ?.forEach(function(el) {
829    el.addEventListener('click', function(event) {
830      var tabId = el.dataset ? el.dataset.tabId : null;
831      var tabGroup = el.dataset ? el.dataset.tabGroup : null;
832      // Build a selector for the containers we want to control
833      // Only target NON-tab-link elements that have data-tab-id
834      var baseSelector = ':not(.tab-link)[data-tab-id]';
835      // If the clicked tab belongs to a group, limit to the same group
836      if (tabGroup) {
837        baseSelector += '[data-tab-group="' + tabGroup + '"]';
838      }
839      // Hide containers in scope that don't match the tabId
840      document.querySelectorAll(baseSelector + ':not([data-tab-id*="' + tabId + '"])')
841        ?.forEach(function(tabEl) {
842        tabEl.style.display = 'none';
843      });
844      // Show containers in scope that match the tabId
845      document.querySelectorAll(baseSelector + '[data-tab-id*="' + tabId + '"]')
846        ?.forEach(function(tabEl) {
847        tabEl.style.display = 'block';
848      });
849    });
850  });
851  const videoSwipers = []
852</script>
852
853  
853<script src="https://cdn.plyr.io/3.7.8/plyr.polyfilled.js"></script>
853
854  
854<script src="https://www.youtube.com/iframe_api"></script>
854
855  
855<script src="https://player.vimeo.com/api/player.js"></script>
855
856  
856<script src="https://geo.dailymotion.com/libs/player.js"></script>
856
857  
857<script>
858  const plyrPlayers = Plyr.setup('._init-plyr');
859  var youtube = document.querySelectorAll('.youtube');
860  const players = {};
861  let init = false;
862  function onYouTubeIframeAPIReady() {
863    init = true;
864    for (const el of youtube) {
865      el.addEventListener('click', () => {
866        const customEmbed = el.querySelector('[data-custom-embed]');
867        if (customEmbed) {
868          el.innerHTML = customEmbed.innerHTML;
869        }
870        const id = 'player_' + el.dataset.id;
871        const type = el.dataset.type;
872        const videoId = el.dataset.videoId;
873        const time = el.dataset.time || 0;  // Start time in seconds
874        onPlay(id);  // Manage autoplay functionality
875        let player;
876        // YouTube Player
877        if (type === 'youtube') {
878          player = new YT.Player(id, {
879            videoId: videoId,
880            playerVars: {
881              start: time,
882            },
883            events: {
884              onReady: (event) => {
885                event.target.playVideo();
886              },
887              onStateChange: (event) => {
888                if (event.data === YT.PlayerState.PLAYING) {
889                  onPlay(id);
890                } else if (
891                  event.data === YT.PlayerState.PAUSED ||
892                  event.data === YT.PlayerState.ENDED
893                ) {
894                  onPause(id);
895                }
896              },
897            },
898          });
899          // YouTube Playlist Player
900        } else if (type === 'youtube-playlist') {
901          player = new YT.Player(id, {
902            playerVars: {
903              listType: 'playlist',
904              list: videoId,  // playlist ID
905              start: time,
906            },
907            events: {
908              onReady: (event) => {
909                event.target.playVideo();
910              },
911              onStateChange: (event) => {
912                if (event.data === YT.PlayerState.PLAYING) {
913                  onPlay(id);
914                } else if (
915                  event.data === YT.PlayerState.PAUSED ||
916                  event.data === YT.PlayerState.ENDED
917                ) {
918                  onPause(id);
919                }
920              },
921            },
922          });
923          // YouTube Live Player
924        } else if (type === 'youtube-live') {
925          player = new YT.Player(id, {
926            videoId: videoId,
927            playerVars: {
928              start: time,
929            },
930            events: {
931              onReady: (event) => {
932                event.target.playVideo();
933              },
934              onStateChange: (event) => {
935                if (event.data === YT.PlayerState.PLAYING) {
936                  onPlay(id);
937                } else if (
938                  event.data === YT.PlayerState.PAUSED ||
939                  event.data === YT.PlayerState.ENDED
940                ) {
941                  onPause(id);
942                }
943              },
944            },
945          });
946          // Vimeo Player
947        } else if (type === 'vimeo') {
948          document.getElementById(id).innerHTML = '';
949          player = new Vimeo.Player(id, {
950            id: videoId,
951            autoplay: true,
952            start: time,
953          });
954          player.on('play', () => onPlay(id));
955          player.on('pause', () => onPause(id));
956          // Dailymotion Player (using Player Library Script)
957        } else if (type === 'dailymotion') {
958          const container = document.getElementById(id);
959          // Create Dailymotion player instance using Player Library
960          dailymotion.createPlayer(id, {
961            video: videoId,
962            params: {
963              autoplay: 1,
964              start: time,
965              mute: false,  // Adjust other parameters as needed
966            }
967          })
968            .then((playerInstance) => {
969            console.log('Dailymotion Player initialized:', playerInstance);
970            // Attach event listeners for play, pause, and ended events
971            playerInstance.on('play', () => onPlay(id));
972            playerInstance.on('pause', () => onPause(id));
973            playerInstance.on('ended', () => onPause(id));
974            // Store the player instance for later control
975            players[id] = { type: 'dailymotion', player: playerInstance };
976          })
977            .catch((error) => console.error('Error initializing Dailymotion player:', error));
978        }
979        // Store the player instance (for YouTube, YouTube Playlist, YouTube Live, or Vimeo)
980        players[id] = { type, player };
981      });
982    }
983  }
984  const pauseAllPlayers = (id = null) => {
985    for (const [key, value] of Object.entries(players)) {
986      if (id === key) continue;
987      if (value.type === 'youtube') {
988        value.player.pauseVideo();
989      } else if (value.type === 'vimeo') {
990        value.player.pause();
991      } else if (value.type === 'dailymotion') {
992        value.player.pause();  // Pause Dailymotion video using the Player Library
993      }
994    }
995  };
996  const onPlay = (id) => {
997    pauseAllPlayers(id);
998    videoSwipers?.forEach((swiper) => {
999      swiper.autoplay.stop();
1000    });
1001  };
1002  const onPause = (id) => {
1003    videoSwipers?.forEach((swiper) => {
1004      swiper.autoplay.start();
1005    });
1006  };
1007  document.addEventListener("DOMContentLoaded", () => {
1008    videoSwipers?.forEach((swiper) => {
1009      swiper.on('slideChange', () => {
1010        pauseAllPlayers();
1011      });
1012    });
1013    setTimeout(() => {
1014      if (!init) {
1015        onYouTubeIframeAPIReady();
1016      }
1017    }, 500);
1018  });
1019  const checkYouTubeThumbnails = (el, currentIndex = 0) => {
1020    if (el.naturalWidth > 120) return
1021    const thumbnailSizes = [
1022      'maxresdefault',
1023      'sddefault',
1024      'hqdefault',
1025      'mqdefault',
1026      'default',
1027    ]
1028    if (currentIndex >= thumbnailSizes.length) {
1029      return
1030    }
1031    const size = thumbnailSizes[currentIndex]
1032    const originalSrc = el.src
1033    const img = new Image()
1034    img.onload = function () {
1035      if (img.naturalWidth > 120) {
1036        el.src = img.src
1037      } else {
1038        checkYouTubeThumbnails(el, currentIndex + 1)
1039      }
1040    }
1041    img.onerror = function () {
1042      checkYouTubeThumbnails(el, currentIndex + 1)
1043    }
1044    img.src = originalSrc.replace(/maxresdefault/, size)
1045  }
1046  document.querySelectorAll('.youtube img').forEach((el) => {
1047    checkYouTubeThumbnails(el)
1048  })
1049</script>
1049
1050  
1050<script>
1051  // Function to download a file
1052  function downloadFile(url, filename) {
1053    const link = document.createElement('a');
1054    link.href = url;
1055    link.download = filename || url.split('/').pop(); // Use filename if provided, otherwise extract from URL
1056    document.body.appendChild(link);
1057    link.click();
1058    document.body.removeChild(link);
1059  }
1060  // Add event listeners to all elements with the [data-download-href] attribute
1061  document.querySelectorAll('[data-download-href]').forEach(element => {
1062    element.addEventListener('click', function(event) {
1063      event.preventDefault(); // Prevent the default action (if it's a link)
1064      event.stopPropagation();
1065      const url = element.getAttribute('data-download-href');
1066      const filename = element.getAttribute('data-download-filename'); // Optional filename attribute
1067      downloadFile(url, filename);
1068    });
1069  });
1070</script>
1070
1071</body></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.