COMPOSER | Film, TV, GAMES

MORGAN VAN LEEST

ABOUT

Morgan van Leest is a Toronto-based composer and producer creating music for film, games, and multimedia projects. Morgan's original works have received international radio play, with professional projects including music for an award-winning virtual event produced for Shoppers Drug Mart.

He holds an Honours degree in Music Production & Sound Engineering, and a Master's degree in Sound Design for Video Games. He is also a member of the Instrumental Committee for the CARAS JUNO Awards. Drawing from electronic music and hybrid orchestral scoring, his work focuses on atmosphere and the emotion of imagined worlds.


Cult of Running Original Soundtrack
CULT OF RUNNING
Original Score · 2026
Upcoming project
COMING SOON
2026
Upcoming project
COMING SOON
2026
Upcoming project
COMING SOON
2027
(() => { const root = document.getElementById("mvl-works"); if (!root) return; const rail = root.querySelector(".mvl-works-rail"); const prev = root.querySelector(".mvl-prev"); const next = root.querySelector(".mvl-next"); if (!rail || !prev || !next) return; function getScrollAmount() { const work = rail.querySelector(".mvl-work"); if (!work) { return rail.clientWidth * 0.75; } const styles = getComputedStyle(rail); const gap = parseFloat(styles.gap) || 0; return work.getBoundingClientRect().width + gap; } prev.addEventListener("click", () => { rail.scrollBy({ left: -getScrollAmount(), behavior: "smooth" }); }); next.addEventListener("click", () => { rail.scrollBy({ left: getScrollAmount(), behavior: "smooth" }); }); })();
(() => { const spacer = document.getElementById("container08"); if (!spacer) return; function adjustLandingSpacer() { if (window.innerWidth < 737) { spacer.style.marginBottom = ""; return; } const baseline = 827; const extra = Math.max(0, window.innerHeight - baseline); spacer.style.marginBottom = extra + "px"; } adjustLandingSpacer(); window.addEventListener("resize", adjustLandingSpacer); window.addEventListener("load", adjustLandingSpacer); })();

ABOUT

Morgan van Leest is a Toronto-based composer and producer creating music for film, games, and multimedia projects. His work has received international radio play, with professional projects including music for an award-winning virtual event produced for Shoppers Drug Mart. He is also a member of the Instrumental Committee for the CARAS JUNO Awards.Morgan graduated as an Ontario Scholar from Rosedale Heights School of the Arts and received the school's Media Arts Award for excellence in film and video production. He received his undergraduate degree in London, England to study Music Production & Sound Engineering at Point Blank Music School, receiving the We Are International Scholarship and graduating with First Class Honours. He went on to earn a Master's degree in Sound Design for Video Games from ThinkSpace Education.Most recently, Morgan composed the original score for Lamb Studios' feature documentary "Cult of Running", which premiered in Toronto and has since been selected for several film festivals.

Alongside his work for media, he is currently developing original music inspired by the stories that first drew him to media composition, with a focus on worldbuilding through sound.

CONTACT

FILM & TV

"Cult of Running", a feature documentary exploring Toronto's post-pandemic running culture. Created by Lamb Studios.

RUN IT BACK
0:000:00
PERSPECTIVE
0:000:00
(function () { var player = document.getElementById("mvl-player-film"); if (!player) return; function formatTime(seconds) { if (!isFinite(seconds) || seconds < 0) { return "0:00"; } var minutes = Math.floor(seconds / 60); var secs = Math.floor(seconds % 60); if (secs < 10) { secs = "0" + secs; } return minutes + ":" + secs; } function setupTrack(track) { var audio = track.querySelector("audio"); var button = track.querySelector(".mvl-play"); var progress = track.querySelector(".mvl-progress"); var fill = track.querySelector(".mvl-progress-fill"); var current = track.querySelector(".mvl-current"); var duration = track.querySelector(".mvl-duration"); var volumeButton = track.querySelector(".mvl-volume-button"); var volumeSlider = track.querySelector(".mvl-volume-slider"); audio.volume = 1; function updateDuration() { if (isFinite(audio.duration) && audio.duration > 0) { duration.textContent = formatTime(audio.duration); } } audio.addEventListener("loadedmetadata", updateDuration); audio.addEventListener("durationchange", updateDuration); audio.addEventListener("canplay", updateDuration); audio.addEventListener("timeupdate", function () { current.textContent = formatTime(audio.currentTime); updateDuration(); if (audio.duration) { fill.style.width = ((audio.currentTime / audio.duration) * 100) + "%"; } }); button.addEventListener("click", function () { if (audio.paused) { document.querySelectorAll(".mvl-audio-player audio").forEach(function(other) { if (other !== audio) { other.pause(); } }); audio.play(); } else { audio.pause(); } }); audio.addEventListener("play", function () { button.textContent = "❚❚"; }); audio.addEventListener("pause", function () { button.textContent = "▶"; }); audio.addEventListener("ended", function () { audio.currentTime = 0; button.textContent = "▶"; fill.style.width = "0%"; current.textContent = "0:00"; }); progress.addEventListener("click", function (event) { if (!audio.duration) return; var box = progress.getBoundingClientRect(); var position = (event.clientX - box.left) / box.width; position = Math.max(0, Math.min(1, position)); audio.currentTime = position * audio.duration; }); volumeSlider.addEventListener("input", function () { audio.muted = false; audio.volume = parseFloat(volumeSlider.value); volumeButton.classList.toggle( "is-muted", audio.volume === 0 ); }); volumeButton.addEventListener("click", function () { if (audio.muted || audio.volume === 0) { audio.muted = false; if (audio.volume === 0) { audio.volume = .75; volumeSlider.value = .75; } volumeButton.classList.remove("is-muted"); } else { audio.muted = true; volumeButton.classList.add("is-muted"); } }); audio.load(); } player.querySelectorAll(".mvl-track").forEach(setupTrack); })();

ORIGINAL MUSIC

A selection of independently composed game music exploring different genres and gameplay scenarios, from atmospheric worldbuilding to action-focused scoring.

GRIMDARK
0:000:00
WORLD
0:000:00
HORROR CHASE
0:000:00
(function () { var player = document.getElementById("mvl-player-left"); if (!player) return; function formatTime(seconds) { if (!isFinite(seconds) || seconds < 0) { return "0:00"; } var minutes = Math.floor(seconds / 60); var secs = Math.floor(seconds % 60); if (secs < 10) { secs = "0" + secs; } return minutes + ":" + secs; } function setupTrack(track) { var audio = track.querySelector("audio"); var button = track.querySelector(".mvl-play"); var progress = track.querySelector(".mvl-progress"); var fill = track.querySelector(".mvl-progress-fill"); var current = track.querySelector(".mvl-current"); var duration = track.querySelector(".mvl-duration"); var volumeButton = track.querySelector(".mvl-volume-button"); var volumeSlider = track.querySelector(".mvl-volume-slider"); audio.volume = 1; function updateDuration() { if (isFinite(audio.duration) && audio.duration > 0) { duration.textContent = formatTime(audio.duration); } } audio.addEventListener("loadedmetadata", updateDuration); audio.addEventListener("durationchange", updateDuration); audio.addEventListener("canplay", updateDuration); audio.addEventListener("timeupdate", function () { current.textContent = formatTime(audio.currentTime); updateDuration(); if (audio.duration) { fill.style.width = ((audio.currentTime / audio.duration) * 100) + "%"; } }); button.addEventListener("click", function () { if (audio.paused) { document.querySelectorAll(".mvl-audio-player audio").forEach(function(other) { if (other !== audio) { other.pause(); } }); audio.play(); } else { audio.pause(); } }); audio.addEventListener("play", function () { button.textContent = "❚❚"; }); audio.addEventListener("pause", function () { button.textContent = "▶"; }); audio.addEventListener("ended", function () { audio.currentTime = 0; button.textContent = "▶"; fill.style.width = "0%"; current.textContent = "0:00"; }); progress.addEventListener("click", function (event) { if (!audio.duration) return; var box = progress.getBoundingClientRect(); var position = (event.clientX - box.left) / box.width; position = Math.max(0, Math.min(1, position)); audio.currentTime = position * audio.duration; }); volumeSlider.addEventListener("input", function () { audio.muted = false; audio.volume = parseFloat(volumeSlider.value); volumeButton.classList.toggle( "is-muted", audio.volume === 0 ); }); volumeButton.addEventListener("click", function () { if (audio.muted || audio.volume === 0) { audio.muted = false; if (audio.volume === 0) { audio.volume = .75; volumeSlider.value = .75; } volumeButton.classList.remove("is-muted"); } else { audio.muted = true; volumeButton.classList.add("is-muted"); } }); audio.load(); } player.querySelectorAll(".mvl-track").forEach(setupTrack); })();
RACING
0:000:00
J-RPG
0:000:00
CYBERPUNK
0:000:00
(function () { var player = document.getElementById("mvl-player-right"); if (!player) return; function formatTime(seconds) { if (!isFinite(seconds) || seconds < 0) { return "0:00"; } var minutes = Math.floor(seconds / 60); var secs = Math.floor(seconds % 60); if (secs < 10) { secs = "0" + secs; } return minutes + ":" + secs; } function setupTrack(track) { var audio = track.querySelector("audio"); var button = track.querySelector(".mvl-play"); var progress = track.querySelector(".mvl-progress"); var fill = track.querySelector(".mvl-progress-fill"); var current = track.querySelector(".mvl-current"); var duration = track.querySelector(".mvl-duration"); var volumeButton = track.querySelector(".mvl-volume-button"); var volumeSlider = track.querySelector(".mvl-volume-slider"); audio.volume = 1; function updateDuration() { if (isFinite(audio.duration) && audio.duration > 0) { duration.textContent = formatTime(audio.duration); } } audio.addEventListener("loadedmetadata", updateDuration); audio.addEventListener("durationchange", updateDuration); audio.addEventListener("canplay", updateDuration); audio.addEventListener("timeupdate", function () { current.textContent = formatTime(audio.currentTime); updateDuration(); if (audio.duration) { var percentage = (audio.currentTime / audio.duration) * 100; fill.style.width = percentage + "%"; } }); button.addEventListener("click", function () { if (audio.paused) { /* Stop EVERY other MVL track on the page, including tracks in the left-hand embed. */ var allAudio = document.querySelectorAll(".mvl-audio-player audio"); for (var i = 0; i < allAudio.length; i++) { if (allAudio[i] !== audio) { allAudio[i].pause(); } } audio.play(); } else { audio.pause(); } }); audio.addEventListener("play", function () { button.textContent = "❚❚"; }); audio.addEventListener("pause", function () { button.textContent = "▶"; }); audio.addEventListener("ended", function () { audio.currentTime = 0; button.textContent = "▶"; fill.style.width = "0%"; current.textContent = "0:00"; }); progress.addEventListener("click", function (event) { if (!audio.duration) return; var box = progress.getBoundingClientRect(); var position = (event.clientX - box.left) / box.width; if (position < 0) position = 0; if (position > 1) position = 1; audio.currentTime = position * audio.duration; }); volumeSlider.addEventListener("input", function () { audio.muted = false; audio.volume = parseFloat(volumeSlider.value); if (audio.volume === 0) { volumeButton.classList.add("is-muted"); } else { volumeButton.classList.remove("is-muted"); } }); volumeButton.addEventListener("click", function () { if (audio.muted || audio.volume === 0) { audio.muted = false; if (audio.volume === 0) { audio.volume = 0.75; volumeSlider.value = 0.75; } volumeButton.classList.remove("is-muted"); } else { audio.muted = true; volumeButton.classList.add("is-muted"); } }); audio.load(); } var tracks = player.querySelectorAll(".mvl-track"); for (var i = 0; i < tracks.length; i++) { setupTrack(tracks[i]); } })();

A selection of original productions exploring different styles with a focus on contemporary production.

POP [INST.]
0:000:00
OLDSKOOL DNB
0:000:00
LOFI
0:000:00
(function () { var player = document.getElementById("mvl-player-production-left"); if (!player) return; function formatTime(seconds) { if (!isFinite(seconds) || seconds < 0) return "0:00"; var minutes = Math.floor(seconds / 60); var secs = Math.floor(seconds % 60); if (secs < 10) secs = "0" + secs; return minutes + ":" + secs; } function setupTrack(track) { var audio = track.querySelector("audio"); var button = track.querySelector(".mvl-play"); var progress = track.querySelector(".mvl-progress"); var fill = track.querySelector(".mvl-progress-fill"); var current = track.querySelector(".mvl-current"); var duration = track.querySelector(".mvl-duration"); var volumeButton = track.querySelector(".mvl-volume-button"); var volumeSlider = track.querySelector(".mvl-volume-slider"); audio.volume = 1; function updateDuration() { if (isFinite(audio.duration) && audio.duration > 0) { duration.textContent = formatTime(audio.duration); } } audio.addEventListener("loadedmetadata", updateDuration); audio.addEventListener("durationchange", updateDuration); audio.addEventListener("canplay", updateDuration); audio.addEventListener("timeupdate", function () { current.textContent = formatTime(audio.currentTime); updateDuration(); if (audio.duration) { fill.style.width = ((audio.currentTime / audio.duration) * 100) + "%"; } }); button.addEventListener("click", function () { if (audio.paused) { var allAudio = document.querySelectorAll(".mvl-audio-player audio"); for (var i = 0; i < allAudio.length; i++) { if (allAudio[i] !== audio) allAudio[i].pause(); } audio.play(); } else { audio.pause(); } }); audio.addEventListener("play", function () { button.textContent = "❚❚"; }); audio.addEventListener("pause", function () { button.textContent = "▶"; }); audio.addEventListener("ended", function () { audio.currentTime = 0; button.textContent = "▶"; fill.style.width = "0%"; current.textContent = "0:00"; }); progress.addEventListener("click", function (event) { if (!audio.duration) return; var box = progress.getBoundingClientRect(); var position = (event.clientX - box.left) / box.width; position = Math.max(0, Math.min(1, position)); audio.currentTime = position * audio.duration; }); volumeSlider.addEventListener("input", function () { audio.muted = false; audio.volume = parseFloat(volumeSlider.value); volumeButton.classList.toggle( "is-muted", audio.volume === 0 ); }); volumeButton.addEventListener("click", function () { if (audio.muted || audio.volume === 0) { audio.muted = false; if (audio.volume === 0) { audio.volume = .75; volumeSlider.value = .75; } volumeButton.classList.remove("is-muted"); } else { audio.muted = true; volumeButton.classList.add("is-muted"); } }); audio.load(); } var tracks = player.querySelectorAll(".mvl-track"); for (var i = 0; i < tracks.length; i++) { setupTrack(tracks[i]); } })();
MULTI-GENRE
0:000:00
PSYTRANCE
0:000:00
MODERN [INST.]
0:000:00
(function () { var player = document.getElementById("mvl-player-production-right"); if (!player) return; function formatTime(seconds) { if (!isFinite(seconds) || seconds < 0) { return "0:00"; } var minutes = Math.floor(seconds / 60); var secs = Math.floor(seconds % 60); if (secs < 10) { secs = "0" + secs; } return minutes + ":" + secs; } function setupTrack(track) { var audio = track.querySelector("audio"); var button = track.querySelector(".mvl-play"); var progress = track.querySelector(".mvl-progress"); var fill = track.querySelector(".mvl-progress-fill"); var current = track.querySelector(".mvl-current"); var duration = track.querySelector(".mvl-duration"); var volumeButton = track.querySelector(".mvl-volume-button"); var volumeSlider = track.querySelector(".mvl-volume-slider"); audio.volume = 1; function updateDuration() { if (isFinite(audio.duration) && audio.duration > 0) { duration.textContent = formatTime(audio.duration); } } audio.addEventListener( "loadedmetadata", updateDuration ); audio.addEventListener( "durationchange", updateDuration ); audio.addEventListener( "canplay", updateDuration ); audio.addEventListener("timeupdate", function () { current.textContent = formatTime(audio.currentTime); updateDuration(); if (audio.duration) { fill.style.width = ((audio.currentTime / audio.duration) * 100) + "%"; } }); button.addEventListener("click", function () { if (audio.paused) { var allAudio = document.querySelectorAll( ".mvl-audio-player audio" ); for (var i = 0; i < allAudio.length; i++) { if (allAudio[i] !== audio) { allAudio[i].pause(); } } audio.play(); } else { audio.pause(); } }); audio.addEventListener("play", function () { button.textContent = "❚❚"; }); audio.addEventListener("pause", function () { button.textContent = "▶"; }); audio.addEventListener("ended", function () { audio.currentTime = 0; button.textContent = "▶"; fill.style.width = "0%"; current.textContent = "0:00"; }); progress.addEventListener("click", function (event) { if (!audio.duration) return; var box = progress.getBoundingClientRect(); var position = (event.clientX - box.left) / box.width; position = Math.max(0, Math.min(1, position)); audio.currentTime = position * audio.duration; }); volumeSlider.addEventListener("input", function () { audio.muted = false; audio.volume = parseFloat(volumeSlider.value); volumeButton.classList.toggle( "is-muted", audio.volume === 0 ); }); volumeButton.addEventListener("click", function () { if (audio.muted || audio.volume === 0) { audio.muted = false; if (audio.volume === 0) { audio.volume = .75; volumeSlider.value = .75; } volumeButton.classList.remove("is-muted"); } else { audio.muted = true; volumeButton.classList.add("is-muted"); } }); audio.load(); } var tracks = player.querySelectorAll(".mvl-track"); for (var i = 0; i < tracks.length; i++) { setupTrack(tracks[i]); } })();

Thank you for your message :)