PageSourceSearch

https://www.stefanprins.net/about

html stefanprins.net collected 2026-10-10 02:20:59 UTC 44,464 bytes, 781 lines download raw bytes

1<!DOCTYPE html><html data-wf-page="688a4e5f75519681a0051553" data-wf-site="6888085c617ef31b88797ced" lang="en"><head>
2  <meta charset="utf-8">
3  <title>Stefan Prins | About</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 | About" 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 | About" 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="688a4e5f75519681a0051553" 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/ABOUT_1.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" aria-current="page" class="navbar16_link-2 w-nav-link w--current">About</a>
265                  <a href="news.html" class="navbar16_link-2 w-nav-link">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/ABOUT_2.svg" loading="eager" alt="" class="hero-heading about"></div>
299        </div><img class="hero-img" src="/assets/6ecf75f8-ee33-4c63-b05a-000524a5650b/prins-cloud_chamber_CROP-copyright-Laurent_Orseau.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: 39.53% 41.88%;" 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">Photo: Laurent Orseau</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="section-grid">
317                <div data-w-id="52384bbf-cc30-4e41-b5ac-883f78217ede" class="slidein-wrapper">
318                  <div style="-webkit-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="slidein-contents">
319                    <div class="light-section">
320                      <div class="bio-padding">
321                        <div class="h6-text w-richtext"><p><em>In his compositional work Prins seeks to critique received convention, to break the framework of the usual, and dispose of aesthetic axioms. He envisions a musical art form beyond the safe confines of the »scene«, wherein the connection to the larger cultural discourse has gotten lost. A central pre-condition for the making of a new music with a future is the role of the aware, critical observer, one who is prepared to exploit the technologies and mechanisms of the prefabricated media with a view to their possibilities for new music. – Stefan Prins lives up to this calling. </em></p>
322<p>&nbsp;</p>
323<p>(Michael Rebhahn, 2012)</p></div>
324                      </div>
325                    </div>
326                  </div>
327                  <div style="-webkit-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);display:block" class="slidein-overlay"></div>
328                </div>
329                <div data-w-id="5dfdecf0-ce21-2eca-5f2b-52f64c488b54" class="slidein-wrapper min-height-small">
330                  <div style="-webkit-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="slidein-contents">
331                    <div class="is-relative">
332                      <div class="absolut-img-wrapper"><img src="/assets/5fbb22cf-26d6-42e3-9781-7e60cc11f962/Prins-copyright-StefanPrins-LANDSCAPE-2020-smaller.webp" loading="eager" alt="" class="absolut-img" style="object-position: 50.00% 50.00%;"></div>
333                    </div>
334                  </div>
335                  <div style="-webkit-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);display:block" class="slidein-overlay"></div>
336                </div>
337              </div>
338            </div>
339          </div>
340        </div>
341      </section>
342      <section>
343        <div class="padding-global">
344          <div class="container-large">
345            <div class="margin-section-large">
346              <div class="section-grid">
347                <div id="w-node-_2aa461f4-de03-5bb3-4c48-21ec8d693205-a0051553" class="blog-flex reverse-tablet">
348                  <div class="min-height-small no-crop">
349                    <div data-w-id="ccad4c42-a916-7675-63dd-7f1dd09ef274" class="slidein-wrapper">
350                      <div style="-webkit-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="slidein-contents">
351                        <div class="is-relative">
352                          <div class="absolut-img-wrapper"><img src="/assets/5fbb22cf-26d6-42e3-9781-7e60cc11f962/composing-desk-prins-2025.webp" loading="eager" alt="" class="absolut-img" style="object-position: 50.00% 50.00%;"></div>
353                        </div>
354                      </div>
355                      <div style="-webkit-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);display:block" class="slidein-overlay"></div>
356                    </div>
357                  </div>
358                  <div data-w-id="9157d084-acd3-6c8c-7e51-7676118c3c36" class="slidein-wrapper height-100">
359                    <div style="-webkit-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="slidein-contents">
360                      <div class="light-section big">
361                        <div class="bio-padding">
362                          <div class="margin-bottom24">
363                            <div class="h6-text w-richtext"><p>Together with Pieter Matthynssens, Stefan Prins is artistic director of the Belgian ensemble for contemporary music, <a title="Visit the Nadar Ensemble webpage" href="http://www.nadarensemble.be/" target="_blank" rel="noopener">Nadar Ensemble</a>.</p>
364<p>&nbsp;</p>
365<p>Performing improvised music is another important part of Prins's musical activities. Together with Thomas Olbrechts &amp; Joachim Devillé he was one of the founders of the now inactive <em>collectief reFLEXible. </em>Since 2011, he plays in the band <a title="Visit the MOBD on Youtube" href="https://www.youtube.com/watch?v=3mMlquk_PYA" target="_blank" rel="noopener"><em>Ministry of Bad Decisions</em></a>, together with Yaron Deutsch (e-guitar), and performs regularly with double bass player Peter Jacquemyn, guitarist Matthias Koole or in ad-hoc formations.</p>
366<p>&nbsp;</p>
367<p>He has taught composition at a.o. the Darmstadt Summercourses, Impuls Academy, Mixtur and the Syntetis Academy and was guest-professor composition at the Hochschule für Kunste Bern and the Norwegian Academy for Music Oslo. From 2020-2026 he has served as professor of composition and director of the "Hybrid Music Lab" at the Dresden University of Music/Hochschule für Musik Carl Maria Von Weber Dresden. In September 2026 he takes up the position of Professor Associé in "Composition Mixte/Mixed Composition" at the <a href="https://www.hesge.ch/hem/">Haute École de Musique</a> in Genève.</p>
368<p>&nbsp;</p>
369<p>&nbsp;</p>
370<p>&nbsp;</p>
371<p>&nbsp;</p>
372<p>&nbsp;</p>
373<p>&nbsp;</p>
374<p>&nbsp;</p>
375<p>&nbsp;</p>
376<p>&nbsp;</p></div>
377                          </div>
378                          <div class="text-align-right">
379                            <div class="margin-bottom20">
380                              <a href="/assets/5fbb22cf-26d6-42e3-9781-7e60cc11f962/PRESSKIT(update_20260414).zip" class="btn w-inline-block" download="true">
381                                <div>DOWNLOAD PRESSKIT</div>
382                              </a>
383                            </div>
384                            <a href="/assets/5fbb22cf-26d6-42e3-9781-7e60cc11f962/CV-PRINS-251015.pdf" class="btn w-inline-block" download="true">
385                              <div>DOWNLOAD FULL CV</div>
386                            </a>
387                          </div>
388                        </div>
389                      </div>
390                    </div>
391                    <div style="-webkit-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);display:block" class="slidein-overlay"></div>
392                  </div>
393                </div>
394                <div id="w-node-_45ca0232-56d8-bb1e-de78-cdbca1a1f3c7-a0051553" class="blog-flex">
395                  <div data-w-id="47631fc9-0a09-07c2-f9bc-3fe3bc74c9e7" class="slidein-wrapper height-100">
396                    <div style="-webkit-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="slidein-contents">
397                      <div class="light-section big">
398                        <div class="bio-padding">
399                          <div class="h6-text w-richtext"><p>After graduating as an engineer (specialised in photonics), Stefan Prins (b. Belgium, 1979) studied piano and composition at the Royal Flemish Conservatory in Antwerp, Belgium, where he obtained his Masters degree in Composition with Luc Van Hove. Concurrently, he studied "Technology in Music" at the Royal Conservatory of Brussels with Peter Swinnen and "Sonology" at the Royal Conservatory of The Hague. He then obtained a PhD in musical composition at Harvard University (Cambridge, Massachusetts) under the guidance of Chaya Czernowin.&nbsp;</p>
400<p>&nbsp;</p>
401<p>His music often includes and reflects on contemporary technologies and new media, thematising their relationship with the physical, performing body, the observing bodies and the environments they inhabit.</p>
402<p>&nbsp;</p>
403<p>He received awards such as the “Kunstpreis Berlin für Musik”, “Kranichsteiner Musikpreis für Komposition”, “ISCM Young Composers Award” or the “International Impuls Composition Award”. His music is performed worldwide on festivals such as the Donaueschinger Musiktage, Darmstadt Ferienkurse, Wittener Tage für Neue Musik, Eclat, Ultraschall Berlin, Münchener Biennale für neues Musiktheater, Wien Modern, Time:Spans NY, Warsaw Autumn, Gaudeamus Festival, Tzlil Meudcan, Impuls Festival, HCMF &amp; Ultima Festival by Nadar Ensemble, Klangforum Wien, Nikel Ensemble, Trio Accanto, Arditti Quartet, Ensemble Mosaik, MusikFabrik, Ensemble Modern, IEMA, ensemble recherche, Ascolta, ASKO|Schönberg, EnsembleKollektiv Berlin, Orchestre Philharmonique de Luxembourg, the BBC Scottish Symphony Orchestra and many more. Yaron Deutsch, Stephane Ginsburgh, Rei Nakamura, Ning Yu, Florentin Ginot, Severine Ballon, Tom Pauwels, Matthias Koole, Mark Knoop, Jean-Guihen Queyras, Malgorzata Walentynowicz &amp; Sarah Defrise have been among the soloists he has collaborated with.</p>
404<p>&nbsp;</p>
405<p>Recordings of his works can be found on, amongst others, Sub Rosa, Kairos, Wergo and Neos.</p></div>
406                        </div>
407                      </div>
408                    </div>
409                    <div style="-webkit-transform:translate3d(0%, 0, 0) scale3d(1
409, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);display:block" class="slidein-overlay"></div>
410                  </div>
411                  <div class="min-height-small no-crop">
412                    <div data-w-id="50c8c850-623b-9f16-1def-e73bd470c221" class="slidein-wrapper">
413                      <div style="-webkit-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 100px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="slidein-contents">
414                        <div class="is-relative">
415                          <div class="absolut-img-wrapper"><img src="/assets/5fbb22cf-26d6-42e3-9781-7e60cc11f962/Nadar_Ensemble-Badajoz-2023.webp" loading="eager" alt="" class="absolut-img" style="object-position: 50.00% 50.00%;"></div>
416                        </div>
417                      </div>
418                      <div style="-webkit-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0%, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);display:block" class="slidein-overlay"></div>
419                    </div>
420                  </div>
421                </div>
422              </div>
423            </div>
424          </div>
425        </div>
426      </section>
427      <footer class="footer">
428        <div class="w-layout-grid footer_grid">
429          <div id="w-node-_3f8a519d-e42a-33a3-9e93-b9a22482b781-2482b77f" class="footer_wrapper">
430            <a href="imprint.html" class="w-inline-block">
431              <div class="coopyright_text created">Imprint</div>
432            </a>
433            <div class="coopyright_text created">|</div>
434            <a href="privacy-policy.html" class="w-inline-block">
435              <div class="coopyright_text created">Privacy Policy</div>
436            </a>
437          </div>
438          <div id="w-node-_3f8a519d-e42a-33a3-9e93-b9a22482b788-2482b77f" class="coopyright_text">©<span class="copyright-year">YEAR</span> Stefan Prins</div>
439          <div id="w-node-_3f8a519d-e42a-33a3-9e93-b9a22482b78a-2482b77f" class="footer_wrapper">
440            <div class="coopyright_text created">created by</div>
441            <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>
442          </div>
443        </div>
444      </footer>
445    </main>
446  </div>
447  
447<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>
447
448  
448<script src="js/stefan-prins.js" type="text/javascript"></script>
448
449  
449<script>
450  // Functionality for fs-cc-reject
451  let initFsCCListener = false;
452  function handleFsCcReject() {
453    if (!window.FsCC) {
454      setTimeout(handleFsCcReject, 200);
455      return;
456    }
457    if (!initFsCCListener) { 
458      // Add a listener for changes in consent preferences
459      window.FsCC.consentController.on('updateconsents', (consents) => {
460        handleFsCcReject(); // Run the function whenever consent changes
461      });
462    }
463    // Iterate through all elements with fs-cc-reject attributes
464    document.querySelectorAll('[fs-cc-reject]').forEach((rejectElement) => {
465      const category = rejectElement.getAttribute('fs-cc-reject'); // Get the consent category
466      const isConsentGiven = window.FsCC.store.consents[category]; // Check if consent is granted for the category
467      const consentElement = document.querySelector('[fs-cc="' + category + '"]'); // Find the corresponding fs-cc element
468      // Toggle visibility based on consent state
469      if (isConsentGiven) {
470        rejectElement.style.display = 'none'; // Hide the reject element
471        if (consentElement) consentElement.style.display = 'block'; // Show the consented content
472      } else {
473        rejectElement.style.display = 'block'; // Show the reject element
474        if (consentElement) consentElement.style.display = 'none'; // Hide the consented content
475      }
476    });
477  }
478  // Run the script on page load
479  document.addEventListener('DOMContentLoaded', handleFsCcReject);
480</script>
480
481  
481<script>
482  Webflow.push(function() {
483    $('.copyright-year').text(new Date().getFullYear());
484  });
485  Webflow.push(function() {
486    //DISABLE WEBFLOW SMOOTH SCROLL
487    $(function() {
488      $(document).off('click.wf-scroll');
489    });
490  });
491  window.addEventListener('load', (event) => {
492    const routeName = window.location.pathname?.split('/')?.slice(-1)?.[0]
493    document
494      .querySelectorAll('a[href*="' + routeName + '"]')
495      ?.forEach((el) => el?.classList?.add('w--current'))
496  })
497  function addSeparatorsByDataAttribute() {
498    // Find all elements in the document
499    const matchingElements = document.querySelectorAll('[data-separator]');
500    // Process each matching element
501    matchingElements.forEach(element => {
502      // Get the separator text from the data-separator attribute
503      const separatorText = element.getAttribute('data-separator');
504      // Get all child elements of the current element
505      const children = Array.from(element.children);
506      // Iterate through the children and insert separators
507      children.forEach((child, index) => {
508        if (index < children.length - 1) { // No separator after the last child
509          // Create a new separator element (you could change this to suit)
510          const separator = document.createElement('span');
511          separator.innerHTML = '&nbsp;' + separatorText + '&nbsp;'; // Set separator text
512          // Insert the separator after the current child
513          child.insertAdjacentElement('afterend', separator);
514        }
515      });
516    });
517  }
518  addSeparatorsByDataAttribute();
519  document.querySelectorAll('.tab-link')
520    ?.forEach((el) => el.addEventListener('click', (event) => {
521    const tabGroup = el.dataset.tabGroup;
522    if (tabGroup) {
523      document.querySelector('.tab-link.active[data-tab-group="' + tabGroup + '"]')?.classList?.remove('active')
524    } else {
525      el.parentNode.querySelector('.tab-link.active')?.classList?.remove('active')
526    }
527    el.classList.add('active')
528  }))
529  document.querySelectorAll('.biography-lang-links .tab-link')
530    ?.forEach((el) => el.addEventListener('click', (event) => {
531    const lang = el.dataset?.lang
532    document.querySelectorAll('.biography-text:not(.' + lang + ')')
533      ?.forEach((bioEl) => bioEl.style.display = 'none')
534    document.querySelectorAll('.biography-text.' + lang)
535      ?.forEach((bioEl) => bioEl.style.display = 'block')
536  }))
537  document.querySelectorAll('.tab-link[data-tab-id]')
538    ?.forEach(function(el) {
539    el.addEventListener('click', function(event) {
540      var tabId = el.dataset ? el.dataset.tabId : null;
541      var tabGroup = el.dataset ? el.dataset.tabGroup : null;
542      // Build a selector for the containers we want to control
543      // Only target NON-tab-link elements that have data-tab-id
544      var baseSelector = ':not(.tab-link)[data-tab-id]';
545      // If the clicked tab belongs to a group, limit to the same group
546      if (tabGroup) {
547        baseSelector += '[data-tab-group="' + tabGroup + '"]';
548      }
549      // Hide containers in scope that don't match the tabId
550      document.querySelectorAll(baseSelector + ':not([data-tab-id*="' + tabId + '"])')
551        ?.forEach(function(tabEl) {
552        tabEl.style.display = 'none';
553      });
554      // Show containers in scope that match the tabId
555      document.querySelectorAll(baseSelector + '[data-tab-id*="' + tabId + '"]')
556        ?.forEach(function(tabEl) {
557        tabEl.style.display = 'block';
558      });
559    });
560  });
561  const videoSwipers = []
562</script>
562
563  
563<script src="https://cdn.plyr.io/3.7.8/plyr.polyfilled.js"></script>
563
564  
564<script src="https://www.youtube.com/iframe_api"></script>
564
565  
565<script src="https://player.vimeo.com/api/player.js"></script>
565
566  
566<script src="https://geo.dailymotion.com/libs/player.js"></script>
566
567  
567<script>
568  const plyrPlayers = Plyr.setup('._init-plyr');
569  var youtube = document.querySelectorAll('.youtube');
570  const players = {};
571  let init = false;
572  function onYouTubeIframeAPIReady() {
573    init = true;
574    for (const el of youtube) {
575      el.addEventListener('click', () => {
576        const customEmbed = el.querySelector('[data-custom-embed]');
577        if (customEmbed) {
578          el.innerHTML = customEmbed.innerHTML;
579        }
580        const id = 'player_' + el.dataset.id;
581        const type = el.dataset.type;
582        const videoId = el.dataset.videoId;
583        const time = el.dataset.time || 0;  // Start time in seconds
584        onPlay(id);  // Manage autoplay functionality
585        let player;
586        // YouTube Player
587        if (type === 'youtube') {
588          player = new YT.Player(id, {
589            videoId: videoId,
590            playerVars: {
591              start: time,
592            },
593            events: {
594              onReady: (event) => {
595                event.target.playVideo();
596              },
597              onStateChange: (event) => {
598                if (event.data === YT.PlayerState.PLAYING) {
599                  onPlay(id);
600                } else if (
601                  event.data === YT.PlayerState.PAUSED ||
602                  event.data === YT.PlayerState.ENDED
603                ) {
604                  onPause(id);
605                }
606              },
607            },
608          });
609          // YouTube Playlist Player
610        } else if (type === 'youtube-playlist') {
611          player = new YT.Player(id, {
612            playerVars: {
613              listType: 'playlist',
614              list: videoId,  // playlist ID
615              start: time,
616            },
617            events: {
618              onReady: (event) => {
619                event.target.playVideo();
620              },
621              onStateChange: (event) => {
622                if (event.data === YT.PlayerState.PLAYING) {
623                  onPlay(id);
624                } else if (
625                  event.data === YT.PlayerState.PAUSED ||
626                  event.data === YT.PlayerState.ENDED
627                ) {
628                  onPause(id);
629                }
630              },
631            },
632          });
633          // YouTube Live Player
634        } else if (type === 'youtube-live') {
635          player = new YT.Player(id, {
636            videoId: videoId,
637            playerVars: {
638              start: time,
639            },
640            events: {
641              onReady: (event) => {
642                event.target.playVideo();
643              },
644              onStateChange: (event) => {
645                if (event.data === YT.PlayerState.PLAYING) {
646                  onPlay(id);
647                } else if (
648                  event.data === YT.PlayerState.PAUSED ||
649                  event.data === YT.PlayerState.ENDED
650                ) {
651                  onPause(id);
652                }
653              },
654            },
655          });
656          // Vimeo Player
657        } else if (type === 'vimeo') {
658          document.getElementById(id).innerHTML = '';
659          player = new Vimeo.Player(id, {
660            id: videoId,
661            autoplay: true,
662            start: time,
663          });
664          player.on('play', () => onPlay(id));
665          player.on('pause', () => onPause(id));
666          // Dailymotion Player (using Player Library Script)
667        } else if (type === 'dailymotion') {
668          const container = document.getElementById(id);
669          // Create Dailymotion player instance using Player Library
670          dailymotion.createPlayer(id, {
671            video: videoId,
672            params: {
673              autoplay: 1,
674              start: time,
675              mute: false,  // Adjust other parameters as needed
676            }
677          })
678            .then((playerInstance) => {
679            console.log('Dailymotion Player initialized:', playerInstance);
680            // Attach event listeners for play, pause, and ended events
681            playerInstance.on('play', () => onPlay(id));
682            playerInstance.on('pause', () => onPause(id));
683            playerInstance.on('ended', () => onPause(id));
684            // Store the player instance for later control
685            players[id] = { type: 'dailymotion', player: playerInstance };
686          })
687            .catch((error) => console.error('Error initializing Dailymotion player:', error));
688        }
689        // Store the player instance (for YouTube, YouTube Playlist, YouTube Live, or Vimeo)
690        players[id] = { type, player };
691      });
692    }
693  }
694  const pauseAllPlayers = (id = null) => {
695    for (const [key, value] of Object.entries(players)) {
696      if (id === key) continue;
697      if (value.type === 'youtube') {
698        value.player.pauseVideo();
699      } else if (value.type === 'vimeo') {
700        value.player.pause();
701      } else if (value.type === 'dailymotion') {
702        value.player.pause();  // Pause Dailymotion video using the Player Library
703      }
704    }
705  };
706  const onPlay = (id) => {
707    pauseAllPlayers(id);
708    videoSwipers?.forEach((swiper) => {
709      swiper.autoplay.stop();
710    });
711  };
712  const onPause = (id) => {
713    videoSwipers?.forEach((swiper) => {
714      swiper.autoplay.start();
715    });
716  };
717  document.addEventListener("DOMContentLoaded", () => {
718    videoSwipers?.forEach((swiper) => {
719      swiper.on('slideChange', () => {
720        pauseAllPlayers();
721      });
722    });
723    setTimeout(() => {
724      if (!init) {
725        onYouTubeIframeAPIReady();
726      }
727    }, 500);
728  });
729  const checkYouTubeThumbnails = (el, currentIndex = 0) => {
730    if (el.naturalWidth > 120) return
731    const thumbnailSizes = [
732      'maxresdefault',
733      'sddefault',
734      'hqdefault',
735      'mqdefault',
736      'default',
737    ]
738    if (currentIndex >= thumbnailSizes.length) {
739      return
740    }
741    const size = thumbnailSizes[currentIndex]
742    const originalSrc = el.src
743    const img = new Image()
744    img.onload = function () {
745      if (img.naturalWidth > 120) {
746        el.src = img.src
747      } else {
748        checkYouTubeThumbnails(el, currentIndex + 1)
749      }
750    }
751    img.onerror = function () {
752      checkYouTubeThumbnails(el, currentIndex + 1)
753    }
754    img.src = originalSrc.replace(/maxresdefault/, size)
755  }
756  document.querySelectorAll('.youtube img').forEach((el) => {
757    checkYouTubeThumbnails(el)
758  })
759</script>
759
760  
760<script>
761  // Function to download a file
762  function downloadFile(url, filename) {
763    const link = document.createElement('a');
764    link.href = url;
765    link.download = filename || url.split('/').pop(); // Use filename if provided, otherwise extract from URL
766    document.body.appendChild(link);
767    link.click();
768    document.body.removeChild(link);
769  }
770  // Add event listeners to all elements with the [data-download-href] attribute
771  document.querySelectorAll('[data-download-href]').forEach(element => {
772    element.addEventListener('click', function(event) {
773      event.preventDefault(); // Prevent the default action (if it's a link)
774      event.stopPropagation();
775      const url = element.getAttribute('data-download-href');
776      const filename = element.getAttribute('data-download-filename'); // Optional filename attribute
777      downloadFile(url, filename);
778    });
779  });
780</script>
780
781</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.