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> </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> </p> 365<p>Performing improvised music is another important part of Prins's musical activities. Together with Thomas Olbrechts & 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> </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> </p> 369<p> </p> 370<p> </p> 371<p> </p> 372<p> </p> 373<p> </p> 374<p> </p> 375<p> </p> 376<p> </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. </p> 400<p> </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> </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 & 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 & Sarah Defrise have been among the soloists he has collaborated with.</p> 404<p> </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 = ' ' + separatorText + ' '; // 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.