Tales of the absurd and bizarre made their way to the airwaves through this strange and eccentric old time radio series. Ripley’s Believe It or Not starred non other than Robert Ripley himself as he shared his out-of-this-world discoveries and experiences while traveling around the globe. His standard practice was to take note of the unusual sights and practices he came across during his travels and chronicled them in his journal. It was not until 1930 that the program was made available to a public audience.
Hear audio scripts from his journal while we play the best music for your morning!
The Make Believe Ballroom carries on the traditions of past hosts Martin Block, Al Jarvis, William B Williams, and Steve Allen by bringing you the greatest hits of the 1930s and 1940s. With the exception of brief periods, the program has been broadcast almost continuously since then. Now, Jeff Bressler is the current host of The Make Believe Ballroom and is on Racketeer Radio KFQX each Wednesday evening beginning at 4PM PST. No cover, no minimum, just sit back and enjoy.
Deforest:Hello, Welcome to Racketeer Radio KFQX, Im Deforest. I got your backstage pass to all things punk rock rhythm and blues. Ask me about upcoming shows of your favorite artists or your city.
}
// --- NEW: Audio Player Logic ---
let currentAudio = null;
function playAudioFromBase64(base64String) {
if (currentAudio) {
currentAudio.pause();
}
const audioData = `data:audio/mpeg;base64,${base64String}`;
currentAudio = new Audio(audioData);
currentAudio.play().catch(e => console.error("Audio play failed:", e));
}
function toggleRacketeerChat() {
const chatIsHidden = rrChatPopup.style.display === 'none';
rrChatPopup.style.display = chatIsHidden ? 'flex' : 'none';
if (!chatIsHidden && currentAudio) {
currentAudio.pause(); // Stop audio when closing chat
}
}
async function sendRacketeerMessage() {
const query = rrUserInput.value.trim();
if (!query) return;
addRacketeerMessage('You', query);
rrUserInput.value = '';
try {
const response = await fetch(RR_API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query: query, sessionId: userSessionId }),
});
if (!response.ok) throw new Error('Network error');
const data = await response.json();
// Add the text to the screen
addRacketeerMessage('Deforest', data.response);
// If we received audio data, play it
if (data.audioBase64) {
playAudioFromBase64(data.audioBase64);
}
} catch (error) {
console.error('Error:', error);
addRacketeerMessage('Deforest', 'Sorry, I seem to be having trouble connecting.');
}
}
function addRacketeerMessage(sender, text) {
const messageElement = document.createElement('p');
messageElement.innerHTML = `${sender}: `;
messageElement.appendChild(document.createTextNode(text));
rrChatWindow.appendChild(messageElement);
rrChatWindow.scrollTop = rrChatWindow.scrollHeight;
}
// Voice input logic is the same, but we remove the old speakText function
// ... (add the SpeechRecognition code here, but delete the old speakText function) ...