HireLiveMusic

HireLiveMusic

HOME · ABOUT · VIDEOS · REVIEWS

EVENTS · SETLIST · CONTACT

LIVE MUSIC FOR EVENTS
THAT PEOPLE REMEMBER

Classic Hits, Rock & Blues for Private Parties,
Corporate Events, Restaurants, Bars and Special Occasions.

ABOUT

Live music should do more than fill the room — it should create a moment people remember.With more than 30 years of live experience, I bring classic hits acoustic rock and blues to private parties, corporate events, restaurants and special celebrations. Every performance is tailored to the atmosphere, the audience and the occasion — professional, personal and full of energy.

VIDEOS

REVIEWS

★★★★★

“Your performance really moved me. You radiate passion for what you do. Thank you again for the emotions from that night.”

— HELENA, LIVE AUDIENCE · LAGOS

★★★★★

“I enjoyed his performance in Lagos, Portugal. Really good guitar player and singer.”

— MARCO SCHAEFERS, FACEBOOK RECOMMENDATIONT

★★★★★

“I saw you at the same spot in July. I really loved the show and hope to see you again.”

— MR. THOMTASTIC, YOUTUBE COMMENT

EVENTS

Live music for events across the Algarve, including Lagos, Portimão, Albufeira, Faro, Sagres, Lagoa, Silves, Carvoeiro and surrounding areas. Selected dates elsewhere in Portugal and Europe.

PRIVATE PARTIES

Live music for birthdays, anniversaries and private celebrations — tailored to your guests, your venue, your schedule and the atmosphere you want to create.

CORPORATE EVENTS

Professional live music for company events, receptions and celebrations — reliable, flexible and adapted to your schedule, audience and venue.

RESTAURANTS & VENUES

Atmospheric live music for restaurants, bars and venues — creating the right mood without overpowering the room, with a repertoire adapted to your guests and setting.

SETLIST

From acoustic rock and blues to well-known classics — the setlist can be adapted to your event, your audience and the atmosphere you want to create.

CONTACT

Complete the form below and press SEND REQUEST. If you selected songs, your choices have already been saved and will be included automatically.

HIRE LIVE MUSIC

© 2026 HireLiveMusic · Live music by Franco

const TELEGRAM_BOT_TOKEN = "8848158862:AAFiuNCwgkur_QLs_PzRTPZEA8aH_p_XYa4"; const TELEGRAM_CHAT_ID = "2084824588"; const PAYPAL_ME_HANDLE = "francguitaro"; const PCLOUD_PUBLIC_CODE = "kZClry7ZX3nSgNYjyyfxDKWCmxKg74glyOjV"; const PCLOUD_UPLOAD_CODE = "LjI7ZMDaPscrlSu5r3aUcWnQFRLhJXz3y"; const PCLOUD_API = "https://eapi.pcloud.com"; const songDatabase = [ {title:"What’s Up?",artist:"4 Non Blondes",price:1.99}, {title:"A Horse with No Name",artist:"America",price:1.99}, {title:"Valerie",artist:"Amy Winehouse",price:1.99}, {title:"House of the Rising Sun",artist:"The Animals",price:1.99}, {title:"The Thrill Is Gone",artist:"B.B. King",price:1.99}, {title:"Get Back",artist:"The Beatles",price:1.99}, {title:"Hey Jude",artist:"The Beatles",price:4.99}, {title:"Let It Be",artist:"The Beatles",price:1.99}, {title:"Norwegian Wood (This Bird Has Flown)",artist:"The Beatles",price:1.99}, {title:"While My Guitar Gently Weeps",artist:"The Beatles",price:1.99}, {title:"Yesterday",artist:"The Beatles",price:1.99}, {title:"Stand by Me",artist:"Ben E. King",price:1.99}, {title:"Ain’t No Sunshine",artist:"Bill Withers",price:1.99}, {title:"Sweet Home Chicago",artist:"The Blues Brothers",price:1.99}, {title:"Bo Diddley",artist:"Bo Diddley",price:1.99}, {title:"All Along the Watchtower",artist:"Bob Dylan",price:1.99}, {title:"Blowin’ in the Wind",artist:"Bob Dylan",price:1.99}, {title:"Knockin’ on Heaven’s Door",artist:"Bob Dylan",price:1.99}, {title:"Three Little Birds",artist:"Bob Marley & The Wailers",price:1.99}, {title:"I’m on Fire",artist:"Bruce Springsteen",price:1.99}, {title:"Should I Stay or Should I Go",artist:"The Clash",price:1.99}, {title:"Zombie",artist:"The Cranberries",price:1.99}, {title:"Bad Moon Rising",artist:"Creedence Clearwater Revival",price:1.99}, {title:"Have You Ever Seen the Rain",artist:"Creedence Clearwater Revival",price:1.99}, {title:"Proud Mary",artist:"Creedence Clearwater Revival",price:1.99}, {title:"Smoke on the Water",artist:"Deep Purple",price:4.99}, {title:"Riders on the Storm",artist:"The Doors",price:1.99}, {title:"Roadhouse Blues",artist:"The Doors",price:1.99}, {title:"Black Velvet Band",artist:"The Dubliners",price:1.99}, {title:"Dirty Old Town",artist:"The Dubliners",price:1.99}, {title:"Dublin in the Rare Old Times",artist:"The Dubliners",price:1.99}, {title:"Molly Malone",artist:"The Dubliners",price:1.99}, {title:"Seven Drunken Nights",artist:"The Dubliners",price:1.99}, {title:"The Wild Rover",artist:"The Dubliners",price:1.99}, {title:"Whiskey in the Jar",artist:"The Dubliners",price:1.99}, {title:"Hotel California",artist:"Eagles",price:4.99}, {title:"Blue Suede Shoes",artist:"Elvis Presley",price:1.99}, {title:"Hound Dog",artist:"Elvis Presley",price:1.99}, {title:"Bye Bye Love",artist:"The Everly Brothers",price:4.99}, {title:"8 and 1",artist:"FrancGuitarO",price:1.99}, {title:"Burning For…",artist:"FrancGuitarO",price:1.99}, {title:"Dark Thoughts",artist:"FrancGuitarO",price:1.99}, {title:"Emotional Rollercoaster",artist:"FrancGuitarO",price:1.99}, {title:"Fine Girl",artist:"FrancGuitarO",price:1.99}, {title:"Good Morning Blues",artist:"FrancGuitarO",price:1.99}, {title:"Is White",artist:"FrancGuitarO",price:1.99}, {title:"Let the Motor Run",artist:"FrancGuitarO",price:1.99}, {title:"Longing",artist:"FrancGuitarO",price:1.99}, {title:"Screw It Tight",artist:"FrancGuitarO",price:1.99}, {title:"Take My Advice",artist:"FrancGuitarO",price:1.99}, {title:"The Bend",artist:"FrancGuitarO",price:1.99}, {title:"The First Day of My Life",artist:"FrancGuitarO",price:1.99}, {title:"Trouble",artist:"FrancGuitarO",price:1.99}, {title:"Where Has My Baby Gone",artist:"FrancGuitarO",price:1.99}, {title:"Mercedes Benz",artist:"Janis Joplin",price:1.99}, {title:"Hallelujah",artist:"Jeff Buckley",price:4.99}, {title:"Locomotive Breath",artist:"Jethro Tull",price:1.99}, {title:"Hey Joe",artist:"Jimi Hendrix",price:1.99}, {title:"Imagine",artist:"John Lennon",price:1.99}, {title:"Leaving on a Jet Plane",artist:"John Denver",price:1.99}, {title:"Take Me Home, Country Roads",artist:"John Denver",price:4.99}, {title:"Folsom Prison Blues",artist:"Johnny Cash",price:1.99}, {title:"Ring of Fire",artist:"Johnny Cash",price:1.99}, {title:"Dust in the Wind",artist:"Kansas",price:4.99}, {title:"Sweet Home Alabama",artist:"Lynyrd Skynyrd",price:9.99}, {title:"Nothing Else Matters",artist:"Metallica",price:9.99}, {title:"Sweet Caroline",artist:"Neil Diamond",price:100.00}, {title:"Wonderwall",artist:"Oasis",price:100.00}, {title:"Wish You Were Here",artist:"Pink Floyd",price:1.99}, {title:"Purple Rain",artist:"Prince",price:4.99}, {title:"Creep",artist:"Radiohead",price:4.99}, {title:"Hit the Road Jack",artist:"Ray Charles",price:1.99}, {title:"Californication",artist:"Red Hot Chili Peppers",price:1.99}, {title:"La Bamba",artist:"Ritchie Valens",price:9.99}, {title:"(I Can’t Get No) Satisfaction",artist:"The Rolling Stones",price:1.99}, {title:"As Tears Go By",artist:"The Rolling Stones",price:4.99}, {title:"Dead Flowers",artist:"The Rolling Stones",price:1.99}, {title:"Honky Tonk Women",artist:"The Rolling Stones",price:1.99}, {title:"Paint It Black",artist:"The Rolling Stones",price:1.99}, {title:"You Gotta Move",artist:"The Rolling Stones",price:1.99}, {title:"Man Of Constant Sorrow",artist:"Soggy Bottom Boys",price:1.99}, {title:"Born to Be Wild",artist:"Steppenwolf",price:4.99}, {title:"The Joker",artist:"Steve Miller Band",price:1.99}, {title:"Mary Had a Little Lamb",artist:"Stevie Ray Vaughan",price:1.99}, {title:"After Dark",artist:"Tito & Tarantula",price:1.99}, {title:"Wild Thing",artist:"The Troggs",price:1.99}, {title:"Danny Boy",artist:"Traditional",price:1.99}, {title:"Drunken Sailor",artist:"Traditional",price:1.99}, {title:"Guantanamera",artist:"Traditional",price:4.99}, {title:"Seven Nation Army",artist:"Traditional",price:9.99}, {title:"The Fields of Athenry",artist:"Traditional",price:1.99}, {title:"The Foggy Dew",artist:"Traditional",price:1.99}, {title:"The Star of the County Down",artist:"Traditional",price:1.99}, {title:"The Wellerman",artist:"Traditional",price:1.99}, {title:"When the Saints Go Marching In",artist:"Traditional",price:1.99}, {title:"Will Ye Go, Lassie, Go",artist:"Traditional",price:1.99}, {title:"Tush",artist:"ZZ Top",price:1.99} ]; let selectedSong = null; let reservedFiles = new Set(); const isBarMode = new URLSearchParams(window.location.search).get("mode") === "bar"; function todayCode() { const parts = new Intl.DateTimeFormat( "en-CA", { timeZone:"Europe/Lisbon", year:"numeric", month:"2-digit", day:"2-digit", hour:"2-digit", hourCycle:"h23" } ).formatToParts(new Date()); const values = {}; parts.forEach( p => values[p.type] = p.value ); let year = Number(values.year); let month = Number(values.month); let day = Number(values.day); const hour = Number(values.hour); const date = new Date( Date.UTC( year, month - 1, day ) ); if (hour < 6) { date.setUTCDate( date.getUTCDate() - 1 ); } year = date.getUTCFullYear(); month = date.getUTCMonth() + 1; day = date.getUTCDate(); return `${year}-${String(month).padStart(2,"0")}-${String(day).padStart(2,"0")}`; } function slug(value) { return value .normalize("NFD") .replace(/[\u0300-\u036f]/g,"") .toLowerCase() .replace(/[^a-z0-9]+/g,"-") .replace(/^-+|-+$/g,""); } function reservationStem(song) { return `${todayCode()}__${slug(song.title)}__${slug(song.artist)}`; } function reservationFilename(song) { return reservationStem(song) + ".req"; } function collectNames(items,result = []) { (items || []).forEach(item => { if (item.name) { result.push(String(item.name)); } if (item.contents) { collectNames(item.contents,result); } }); return result; } function isReserved(song) { const stem = reservationStem(song).toLowerCase(); for (const itemName of reservedFiles) { const name = String(itemName).toLowerCase(); if (name.includes(stem)) { return true; } } return false; } function showStatus(msg,type) { const el = document.getElementById("statusMessage"); el.innerText = msg; el.className = "status-msg status-" + type; el.style.display = "block"; } function hideStatus() { document .getElementById("statusMessage") .style.display = "none"; } function renderCurrentSongs() { const query = document .getElementById("searchInput") .value .toLowerCase() .trim(); const songs = query ? songDatabase.filter(song => song.title.toLowerCase().includes(query) || song.artist.toLowerCase().includes(query) ) : songDatabase; renderSongs(songs); } function renderSongs(songs) { const container = document.getElementById("songList"); container.innerHTML = ""; songs.forEach(song => { const reserved = isReserved(song); const item = document.createElement("div"); item.className = reserved ? "song-item reserved" : "song-item"; if (!reserved) { item.onclick = () => selectSong(song,item); } const right = reserved ? `BEREITS
GEWÜNSCHT
` : isBarMode ? `€${song.price.toFixed(2)}` : ""; item.innerHTML = `
${song.title}${song.artist}
${right} `; container.appendChild(item); }); } function filterSongs() { renderCurrentSongs(); } function selectSong(song,element) { if (isReserved(song)) { return; } hideStatus(); document .querySelectorAll(".song-item") .forEach(el => el.classList.remove("selected") ); element.classList.add("selected"); selectedSong = song; document .getElementById("selectionSummary") .style.display = "flex"; document .getElementById("selectedSongTitle") .innerText = `${song.title} (${song.artist})`; const submitBtn = document.getElementById("submitBtn"); submitBtn.style.display = "block"; submitBtn.disabled = false; if (isBarMode) { document .getElementById("selectedSongPrice") .innerText = `€${song.price.toFixed(2)}`; submitBtn.innerText = `Mit PayPal bezahlen (€${song.price.toFixed(2)})`; submitBtn.className = "btn-submit"; } else { document .getElementById("selectedSongPrice") .innerText = "Kostenlos"; submitBtn.innerText = "Song jetzt wünschen"; submitBtn.className = "btn-submit free"; } } async function refreshReservations() { try { const response = await fetch( `${PCLOUD_API}/showpublink?code=${encodeURIComponent(PCLOUD_PUBLIC_CODE)}&_=${Date.now()}`, { method:"GET", cache:"no-store" } ); const data = await response.json(); if (data.result !== 0) { return; } reservedFiles = new Set( collectNames( data.metadata.contents || [] ) ); renderCurrentSongs(); } catch(e) {} } async function reserveSong(song,guestName) { await refreshReservations(); if (isReserved(song)) { showStatus( "Dieser Song wurde heute bereits gewünscht.", "error" ); renderCurrentSongs(); return false; } const filename = reservationFilename(song); const contents = JSON.stringify({ date:todayCode(), time:new Date().toISOString(), song:song.title, artist:song.artist, guest:guestName, price:song.price }); const file = new File( [contents], filename, { type:"text/plain" } ); const formData = new FormData(); formData.append( "file", file, filename ); const uploadUrl = `${PCLOUD_API}/uploadtolink` + `?code=${encodeURIComponent(PCLOUD_UPLOAD_CODE)}` + `&names=${encodeURIComponent(filename)}` + `&nopartial=1` + `&_=${Date.now()}`; try { await fetch( uploadUrl, { method:"POST", mode:"no-cors", body:formData } ); } catch(e) { showStatus( "Bitte noch einmal tippen.", "error" ); return false; } reservedFiles.add(filename); renderCurrentSongs(); return true; } async function submitRequest() { if (!selectedSong) { return; } const guestName = document .getElementById("nameInput") .value .trim(); if (!guestName) { showStatus( "Bitte deinen Namen eingeben.", "error" ); document .getElementById("nameInput") .focus(); return; } const song = selectedSong; const submitBtn = document.getElementById("submitBtn"); submitBtn.disabled = true; showStatus( "Song wird reserviert...", "success" ); const reserved = await reserveSong( song, guestName ); if (!reserved) { submitBtn.disabled = false; return; } if (isBarMode) { notifyMusician( song.title, guestName, `💰 Betrag: €${song.price.toFixed(2)} 💳 Status: PayPal wird geöffnet` ); showStatus( "Reserviert – öffne PayPal...", "success" ); setTimeout(() => { window.location.href = `https://paypal.me/${PAYPAL_ME_HANDLE}/${song.price.toFixed(2)}EUR`; },1000); } else { notifyMusician( song.title, guestName, "🎟 Status: Kostenlos / Private Event" ); showStatus( "Vielen Dank! Dein Songwunsch wurde übermittelt.", "success" ); submitBtn.disabled = false; } } function notifyMusician( songTitle, guestName, paymentInfo ) { const time = new Date().toLocaleTimeString( "de-DE", { hour:"2-digit", minute:"2-digit" } ); const message = `🎵 NEUER SONGWUNSCH 🎸 Song: ${songTitle} 👤 Gast: ${guestName} ${paymentInfo} 🕒 ${time}`; const url = `https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage` + `?chat_id=${TELEGRAM_CHAT_ID}` + `&text=${encodeURIComponent(message)}` + `&cache=${Date.now()}`; const ping = new Image(); ping.src = url; } document .getElementById("nameInput") .addEventListener( "keydown", function(event) { if (event.key === "Enter") { event.preventDefault(); submitRequest(); } } ); renderCurrentSongs(); refreshReservations(); setInterval( refreshReservations, 8000 );
SUGGESTIONS FOR FUTURE SONGS

Your song isn’t on the list? Feel free to suggest it here.

I’m a real musician, not a computer, so I can’t play every song on demand. But I’m always adding new songs and will try to include popular suggestions in the future.

Thanks for understanding!

(function(){ function requestPage(){ return location.hash .toLowerCase() .indexOf('#request')===0; } function setup(){ document.documentElement.classList.toggle( 'hlm-request', requestPage() ); if(!requestPage()){ return; } var root= document.querySelector('.song-request-container'); var search= document.getElementById('searchInput'); var name= document.getElementById('nameInput'); if(!root||!search){ return; } /* ===== ÜBERSCHRIFTEN ===== */ if(!document.getElementById('hlmHead')){ var head= document.createElement('div'); head.id='hlmHead'; head.innerHTML= '
LIVE SONG REQUEST
'+ ''; root.insertBefore( head, search ); } if( name && !document.getElementById('hlmNameLabel') ){ var label= document.createElement('label'); label.id='hlmNameLabel'; label.className='hlmLabel'; label.htmlFor='nameInput'; label.textContent='YOUR NAME'; name.parentNode.insertBefore( label, name ); } search.placeholder= 'Search song or artist...'; if(name){ name.placeholder='Your name...'; } installMobileSearch(search); } /* ===================================== MOBILE SEARCH SUCHFELD BLEIBT SICHTBAR KEIN POSITION:FIXED ===================================== */ function installMobileSearch(search){ if(search.dataset.hlmMobileSearch==='1'){ return; } search.dataset.hlmMobileSearch='1'; var list= document.getElementById('songList'); if(!list){ return; } function isMobile(){ return window.innerWidth<=600; } function visualHeight(){ if(window.visualViewport){ return window.visualViewport.height; } return window.innerHeight; } function moveSearchIntoView(){ if( !isMobile() || document.activeElement!==search ){ return; } document.documentElement.classList.add( 'hlm-search-active' ); /* Suchfeld wird auf dem sichtbaren Bereich unterhalb des oberen Website-Kopfes gehalten. */ var rect= search.getBoundingClientRect(); var targetTop=145; var difference= rect.top-targetTop; if(Math.abs(difference)>5){ window.scrollBy({ top:difference, left:0, behavior:'auto' }); } /* Verbleibenden Platz zwischen Suchfeld und Tastatur für die Treffer benutzen. */ setTimeout( function(){ if(document.activeElement!==search){ return; } var newRect= search.getBoundingClientRect(); var viewportBottom= visualHeight(); if(window.visualViewport){ viewportBottom+= window.visualViewport.offsetTop; } var available= Math.floor( viewportBottom- newRect.bottom- 12 ); available= Math.max( 100, Math.min(300,available) ); document.documentElement.style.setProperty( '--hlm-list-height', available+'px' ); }, 20 ); } function startSearch(){ if(!isMobile()){ return; } document.documentElement.classList.add( 'hlm-search-active' ); setTimeout( moveSearchIntoView, 50 ); setTimeout( moveSearchIntoView, 180 ); setTimeout( moveSearchIntoView, 350 ); } function stopSearch(){ setTimeout( function(){ if(document.activeElement===search){ return; } document.documentElement.classList.remove( 'hlm-search-active' ); document.documentElement.style.removeProperty( '--hlm-list-height' ); }, 180 ); } search.addEventListener( 'focus', startSearch ); search.addEventListener( 'input', function(){ moveSearchIntoView(); setTimeout( moveSearchIntoView, 80 ); } ); search.addEventListener( 'blur', stopSearch ); list.addEventListener( 'click', function(event){ if(event.target.closest('.song-item')){ search.blur(); } } ); if(window.visualViewport){ window.visualViewport.addEventListener( 'resize', function(){ if(document.activeElement===search){ setTimeout( moveSearchIntoView, 50 ); } } ); } } /* ===== SUGGESTIONS ===== */ function suggestionStatus( text, error ){ var box= document.getElementById( 'hlmSuggestionStatus' ); if(!box){ return; } box.textContent=text; box.style.display='block'; box.style.borderColor= error ? '#c0392b' : '#c5a059'; } function sendSuggestion(){ var input= document.getElementById( 'hlmSuggestionInput' ); if(!input){ return; } var value= input.value.trim(); if(!value){ suggestionStatus( 'Please enter a song title and artist.', true ); input.focus(); return; } if( typeof window.notifyMusician!== 'function' ){ suggestionStatus( 'Suggestion could not be sent.', true ); return; } var name= document.getElementById( 'nameInput' ); var guest= name && name.value.trim() ? name.value.trim() : 'Anonymous'; window.notifyMusician( 'SUGGESTION: '+value, guest, '💡 Status: Suggestion for future songs' ); input.value=''; suggestionStatus( 'Thank you — your suggestion has been sent.', false ); } var button= document.getElementById( 'hlmSuggestionButton' ); var suggestionInput= document.getElementById( 'hlmSuggestionInput' ); if( button && button.dataset.ready!=='1' ){ button.dataset.ready='1'; button.addEventListener( 'click', sendSuggestion ); } if( suggestionInput && suggestionInput.dataset.ready!=='1' ){ suggestionInput.dataset.ready='1'; suggestionInput.addEventListener( 'keydown', function(event){ if(event.key==='Enter'){ event.preventDefault(); sendSuggestion(); } } ); } /* ===== START ===== */ if(document.readyState==='loading'){ document.addEventListener( 'DOMContentLoaded', setup ); }else{ setup(); } window.addEventListener( 'load', setup ); window.addEventListener( 'hashchange', setup ); setTimeout( setup, 250 ); })();