ADVERTISEMENT

'Tuner' hits all the right notes

A must-see wholesome thriller that promises a good time

Published Jul 22, 2026 09:28 am

At A Glance

  • A wholesome thriller almost sounds paradoxical, yet "Tuner" manages to pull it off so effectively.
AN UNUSUAL TALENT Using his talent as a piano tuner, Harry learns he has the skill to crack safes. (Photos Black Bear Pictures)
AN UNUSUAL TALENT Using his talent as a piano tuner, Harry learns he has the skill to crack safes. (Photos Black Bear Pictures)
In the middle of blockbuster hits swarming July, don’t miss out on seeing Daniel Roher’s “Tuner.” In “Tuner,” we follow the story of piano tuner apprentice Niki (Leo Woodall). Niki works under Harry Horowitz (Dustin Hoffman), going from mansion to mansion to tune pianos. He suffers from a hearing condition known as hyperacusis, which gives him increased sensitivity to sound, making loud noises unbearable.
While on a tuning job for a music conservatory, Niki crosses paths with Ruthie (Havana Rose Liu), one of the promising talents working to make a name for herself. Harry later points out to Ruthie, during a chance re-encounter at a cafe, that Niki was once a virtuoso before his hearing condition made him stop playing. It all plays out like a wholesome romance of sorts, then it hits you with the heist element.
Havana Rose Liu as Ruthie Waymon
Havana Rose Liu as Ruthie Waymon
One day, while working late on a piano at a customer’s mansion, Niki comes across a group of thieves trying to drill into a safe. They pass it off as part of their security business. Hoping to get them to stop the drilling, he takes a crack at opening the safe and manages to get it open.
While the gang can be wholesome in their own sort of way, the film does a good job of showing viewers just how quickly they can turn into people you wish Niki had never encountered, thus heightening the stakes. Uri, the leader of the bunch, leaves a card to offer future work should he need it. After Harry suffers from a heart attack and is left with a hefty hospital bill, Niki takes it upon himself to scrounge up the money by opening safes for the thieves.
Dustin Hoffman as Harry Horowitz and Leo Woodall as Niki White
Dustin Hoffman as Harry Horowitz and Leo Woodall as Niki White
A wholesome thriller almost sounds paradoxical, yet “Tuner” manages to pull it off so effectively. Both premises sound like they’re made for different movies, yet they tie in together much better than one would expect. There is never a moment when one plotline overstays its welcome. It’s also simple enough that you’re not left asking too many questions or doubting any scenarios, like in most extravagant heist movies.
Another wonderful element of the film is its sound design and soundtrack. For the most part, we know exactly what Niki hears in key moments. We feel the intrusive buzzing of cars whizzing by, the unbearable pain of an alarm going off, and quiet moments going louder than we’re used to. It’s no surprise that the piano tracks we also hear throughout range from familiar earworms to stellar performances made for the film. Props go to Marius de Vries and Will Bates for composing such works for “Tuner.”
“Tuner” officially releases in the Philippines today and can be viewed exclusively at Ayala Malls Cinemas.

Related Tags

Arts and Culture Tuner Ayala Malls Cinemas Dustin Hoffman Leo Woodall Havana Rose Liu
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ static_articles_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.