Christmas Classics with the Gordon Cree Orchestra – Ayr Town Hall

Christmas Classics with the Gordon Cree Orchestra – Ayr Town Hall

Christmas Classics with the Gordon Cree Orchestra – Ayr Town Hall

Join Gordon Cree and his orchestra of 52 of the finest players from Scotland’s professional, national orchestras for a magical journey through the very best of classical and light-classical music with a seasonal flavour. Hear pieces full of Christmas magic and nostalgia, including those by Tchaikovsky, Prokofiev, Waldteufel, Adolphe Adam, Leroy Anderson and many more. The concert also features the magnificent mezzo-soprano voice of international soloist, Cheryl Forbes. A Christmas musical night out not to be missed.

(Ayr Concert Series 2025-2026)

Additional Information

Disabled access
Thursday 18 December 2025
7.30pm
3 to £30
Ayr Town Hall, 21-29 New Bridge St, Ayr KA7 1JX

Map

You might also like...

Ayr Film Society Logo
Every Thursday from September
Doors open 6.45pm, screenings at 7.15pm
80 Full Price (Concessions and other season passes available)

Ayr Film Society

Ayr Film Society
A promotional poster for “Sketch in the Air.” On the left, an aerial performer hangs upside down from red aerial silks against a dark background. On the right, a musician plays an electric bass guitar. Text reads: “SKETCH In the Air – Aerial Life Drawing with Live Music (no experience necessary).” Two logos appear, one in the bottom left and one in the top right corner.
Wednesday 19 November 2025
6pm - 8pm
15 - £25

SKETCH In the Air

SKETCH In the Air
A promotional image advertising WinterStrom taking place 27 November - 29 November 2025.
27 - 29 November 2025
12pm - 11.30pm
From £60 per day

WinterStorm

WinterStorm
An image of a band playing on a stage with text that says, 'Runrig Experience' Sunday, 30 November 2025'.
Sunday, 30 November 2025
7.00pm
29.50

The Runrig Experience | After the 'Storm

The Runrig Experience | After the ‘Storm
A festive promotional poster with a green and gold Christmas-themed background featuring pine branches, ornaments, and stars. The poster displays circular portraits of five people: Marc Jennings, Susie McCabe, Des Clarke, Jeremy Levif, Dean Park, and Ali Wright. Text indicates that Marc Jennings, Susie McCabe, and Des Clarke are comedians, Dean Park is a Scottish comedy legend, Jeremy Levif provides live music as a finalist from The Voice, and Ali Wright hosts from NOW Ayrshire Radio.
Friday 5 December 2025
8pm
18 – £26

The Scottish Comedians – Christmas Night Oot

The Scottish Comedians – Christmas Night Oot
Promotional banner for “Christmas Party Nights” at The Clocktower in Auchincruive. The design features festive decorations including gold and blue baubles with star patterns on a dark background. Large text reads “Christmas Party Nights” with smaller text above stating “The Clocktower – Auchincruive.” A gold banner below says “Dates Throughout December 2025.” Price shown as “£40” inside a gold ornament. Contact details include phone number “01292 876101” and website “ClocktowerEvents.co.uk.” Bottom left displays the NOW Ayrshire Radio logo, and bottom right shows a photo of an event marquee with pink lighting and Christmas trees, labeled “Event Marquee.
12 December 2025
6.30pm
40

Christmas Party Nights

Christmas Party Nights

Join our newsletter

Get the latest Destination South Ayrshire news and events delivered straight to your inbox…

Sign up for our newsletter

Get the latest Destination South Ayrshire news and events delivered straight to your inbox.

Copyright © 2025 Destination South Ayrshire. Provided by South Ayrshire Council.

Sign up for our newsletter

Get the latest Destination South Ayrshire news and events delivered straight to your inbox…

document.addEventListener('DOMContentLoaded', () => { // Robust selectors for 2025 Elementor (covers Pro, Hello, Astra) const toggle = document.querySelector('.elementor-menu-toggle, .elementor-nav-menu--toggle button, [aria-expanded][role="button"]'); const menu = document.querySelector('.elementor-nav-menu--dropdown, .elementor-nav-menu__container, nav[role="navigation"]'); if (!toggle || !menu) { console.error('ZoomFix: Elements not found. Inspect hamburger/menu HTML.'); return; } console.log('ZoomFix: Found toggle and menu. Testing at 400% zoom...'); let focusables = []; let firstItem, lastItem; let isOpen = false; let tabCountAtEnd = 0; // Detects repeated Tabs to auto-close const MAX_TABS_BEFORE_CLOSE = 2; // Closes after 2 Tabs on last item const updateFocusables = () => { focusables = Array.from(menu.querySelectorAll('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])')); firstItem = focusables[0]; lastItem = focusables[focusables.length - 1]; console.log('ZoomFix: Updated focusables:', focusables.length); }; // Monitor for menu open/close (handles Elementor's mutations at zoom) const observer = new MutationObserver((mutations) => { const expanded = toggle.getAttribute('aria-expanded') === 'true' || toggle.classList.contains('elementor-active'); if (expanded !== isOpen) { isOpen = expanded; console.log('ZoomFix: Menu state:', isOpen ? 'OPEN' : 'CLOSED'); if (isOpen) { updateFocusables(); setTimeout(() => firstItem?.focus(), 100); // Delay for zoom reflow startFocusPolling(); // Start zoom-safe polling } else { stopFocusPolling(); toggle.focus(); } } }); observer.observe(toggle, { attributes: true, subtree: true }); // Zoom-proof focus trap: Global Tab listener const handleTab = (e) => { if (!isOpen || !focusables.length) return; updateFocusables(); // Re-scan for zoom/DOM changes if (document.activeElement === lastItem && e.key === 'Tab' && !e.shiftKey) { e.preventDefault(); tabCountAtEnd++; console.log('ZoomFix: Tab at end (#', tabCountAtEnd, ')'); if (tabCountAtEnd >= MAX_TABS_BEFORE_CLOSE) { console.log('ZoomFix: Auto-closing after repeated Tabs'); closeMenu(); tabCountAtEnd = 0; } else { firstItem.focus(); // Trap: Loop to start } } else if (document.activeElement === firstItem && e.key === 'Tab' && e.shiftKey) { e.preventDefault(); lastItem.focus(); // Trap: Loop to end } }; // Polling for zoom event loss (runs only when open) let pollInterval; const startFocusPolling = () => { pollInterval = setInterval(() => { if (isOpen && document.activeElement && !menu.contains(document.activeElement)) { console.log('ZoomFix: Focus escaped during zoom—trapping back'); firstItem?.focus(); } }, 50); // 50ms check survives zoom reflow }; const stopFocusPolling = () => clearInterval(pollInterval); const closeMenu = () => { console.log('ZoomFix: Forcing close'); toggle.click(); // Elementor's native close tabCountAtEnd = 0; }; // Attach listeners document.addEventListener('keydown', handleTab); document.addEventListener('keyup', (e) => { if (e.key === 'Escape' && isOpen) closeMenu(); }); // Fallback: Click outside document.addEventListener('click', (e) => { if (isOpen && !menu.contains(e.target) && !toggle.contains(e.target)) closeMenu(); }); // Initial scan updateFocusables(); });