/**
* Geolocation-based product restrictions
* Compatible with all Shopify plans (no checkout scripts required)
* Version 3.4 - Clean rebuild with essential fixes only
*/
// Prevent duplicate initialization
if (!window.geoRestrictionsInitialized) {
window.geoRestrictionsInitialized = true;
class GeolocationRestrictions {
constructor() {
this.config = {
enabled: window.geoRestrictionSettings?.enabled || false,
allowedCountries: this.parseCountries(window.geoRestrictionSettings?.allowedCountries || 'US'),
restrictedMessage: window.geoRestrictionSettings?.restrictedMessage || 'This product is not available in your region.',
showContactLink: window.geoRestrictionSettings?.showContactLink || true,
productTemplate: window.geoRestrictionSettings?.productTemplate || 'default',
isCollectionPage: window.geoRestrictionSettings?.isCollectionPage || false,
cloudflareCountry: window.geoRestrictionSettings?.cloudflareCountry || null
};
this.userCountry = null;
this.storageKey = 'shopify_user_country';
this.storageExpiry = 'shopify_country_expiry';
}
parseCountries(countriesString) {
return countriesString
.toUpperCase()
.split(',')
.map(c => c.trim())
.filter(c => c.length === 2);
}
async init() {
console.log('=== GEO RESTRICTIONS INIT v3.4 ===');
console.log('Enabled:', this.config.enabled);
console.log('Product Template:', this.config.productTemplate);
console.log('Is Collection Page:', this.config.isCollectionPage);
if (!this.config.enabled) {
console.log('Geolocation restrictions disabled');
this.removeLoadingClass();
return;
}
if (this.config.productTemplate === 'records') {
console.log('Records template - no restrictions, showing all content');
this.removeLoadingClass();
this.showAllowedElements();
return;
}
if (window.CLOUDFLARE_COUNTRY) {
console.log('Using Cloudflare Worker country:', window.CLOUDFLARE_COUNTRY);
this.userCountry = window.CLOUDFLARE_COUNTRY;
this.setCachedCountry(this.userCountry);
this.applyRestrictions();
return;
}
// Note: Removed Shopify.country check - it reflects market selection, not actual visitor location
const cachedCountry = this.getCachedCountry();
if (cachedCountry) {
this.userCountry = cachedCountry;
this.applyRestrictions();
return;
}
await this.detectCountry();
this.applyRestrictions();
}
removeLoadingClass() {
document.documentElement.classList.remove('geo-checking');
document.documentElement.classList.add('geo-checked');
}
getCachedCountry() {
try {
const expiry = sessionStorage.getItem(this.storageExpiry);
const country = sessionStorage.getItem(this.storageKey);
if (expiry && country && Date.now() < parseInt(expiry)) {
console.log(`Using cached country: ${country}`);
return country;
}
} catch (e) {
console.warn('sessionStorage not available:', e);
}
return null;
}
setCachedCountry(country) {
try {
// Cache for 1 hour
const expiry = Date.now() + (60 * 60 * 1000);
sessionStorage.setItem(this.storageKey, country);
sessionStorage.setItem(this.storageExpiry, expiry.toString());
} catch (e) {
console.warn('Could not cache country:', e);
}
}
async detectCountry() {
try {
const response = await fetch('https://ipapi.co/json/', {
method: 'GET',
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error('Geolocation API failed');
const data = await response.json();
this.userCountry = data.country_code || 'US';
console.log(`Detected country: ${this.userCountry}`);
this.setCachedCountry(this.userCountry);
} catch (error) {
console.warn('Country detection failed, defaulting to US:', error);
this.userCountry = 'US';
}
}
isCountryAllowed() {
return this.config.allowedCountries.includes(this.userCountry);
}
collapseParentIfEmpty(el) {
el.style.margin = '0';
el.style.padding = '0';
el.style.height = '0';
el.style.minHeight = '0';
const parent = el.parentElement;
if (!parent) return;
const tagName = parent.tagName.toLowerCase();
const className = (parent.className || '').toLowerCase();
if (tagName !== 'div' && tagName !== 'span') return;
if (className.includes('product')) return;
if (className.includes('info')) return;
if (className.includes('content')) return;
if (className.includes('wrapper')) return;
if (className.includes('container')) return;
if (className.includes('form')) return;
if (className.includes('main')) return;
if (className.includes('section')) return;
if (className.includes('block') && !className.includes('text-block') && !className.includes('group-block')) return;
const children = Array.from(parent.children);
if (children.length === 1 && children[0] === el) {
parent.style.display = 'none';
parent.style.margin = '0';
parent.style.padding = '0';
parent.setAttribute('data-geo-restricted', 'true');
}
}
// Remove "- Unavailable" and "- Sold out" from variant selectors
cleanVariantSelectors() {
console.log('=== CLEANING VARIANT SELECTORS ===');
const cleanText = (text) => {
return text
.replace(/ - Unavailable/gi, '')
.replace(/ - Sold out/gi, '')
.replace(/ — Unavailable/gi, '')
.replace(/ — Sold out/gi, '')
.replace(/- Unavailable/gi, '')
.replace(/- Sold out/gi, '');
};
// Clean all select options - with whitespace normalization
document.querySelectorAll('select option').forEach(option => {
const originalText = option.textContent;
const normalizedText = originalText.replace(/\s+/g, ' ').trim();
if (normalizedText.toLowerCase().includes('unavailable') || normalizedText.toLowerCase().includes('sold out')) {
const cleaned = normalizedText
.replace(/\s*-\s*Unavailable/gi, '')
.replace(/\s*—\s*Unavailable/gi, '')
.replace(/\s*-\s*Sold out/gi, '')
.replace(/\s*—\s*Sold out/gi, '')
.trim();
if (cleaned !== normalizedText) {
option.setAttribute('data-original-text', originalText);
option.textContent = cleaned;
console.log('Cleaned option:', normalizedText, '->', cleaned);
}
}
});
// Clean variant picker displayed values
document.querySelectorAll('variant-picker span, variant-picker div, .variant-option span, [class*="variant"] span').forEach(el => {
if (el.children.length === 0) {
const text = el.textContent;
if ((text.includes('Unavailable') || text.includes('Sold out')) && text.length < 100) {
const cleaned = cleanText(text);
if (cleaned !== text) {
el.setAttribute('data-original-text', text);
el.textContent = cleaned;
console.log('Cleaned span:', text, '->', cleaned);
}
}
}
});
// Run again after delays
setTimeout(() => this.cleanVariantSelectorsDelayed(), 100);
setTimeout(() => this.cleanVariantSelectorsDelayed(), 500);
setTimeout(() => this.cleanVariantSelectorsDelayed(), 1500);
// Set up MutationObserver for dynamic changes
document.querySelectorAll('variant-picker, .variant-picker').forEach(picker => {
if (!picker.hasAttribute('data-geo-observed')) {
picker.setAttribute('data-geo-observed', 'true');
const observer = new MutationObserver(() => {
this.cleanVariantSelectorsDelayed();
});
observer.observe(picker, { childList: true, subtree: true, characterData: true });
}
});
}
cleanVariantSelectorsDelayed() {
document.querySelectorAll('select option').forEach(option => {
const originalText = option.textContent;
const normalizedText = originalText.replace(/\s+/g, ' ').trim();
if (normalizedText.toLowerCase().includes('unavailable') || normalizedText.toLowerCase().includes('sold out')) {
option.textContent = normalizedText
.replace(/\s*-\s*Unavailable/gi, '')
.replace(/\s*—\s*Unavailable/gi, '')
.replace(/\s*-\s*Sold out/gi, '')
.replace(/\s*—\s*Sold out/gi, '')
.trim();
}
});
document.querySelectorAll('variant-picker span, variant-picker div, .variant-option span').forEach(el => {
if (el.children.length === 0 && el.textContent) {
const text = el.textContent;
if ((text.includes('Unavailable') || text.includes('Sold out')) && text.length < 100) {
el.textContent = text
.replace(/ - Unavailable/gi, '')
.replace(/ - Sold out/gi, '')
.replace(/ — Unavailable/gi, '')
.replace(/ — Sold out/gi, '')
.replace(/- Unavailable/gi, '')
.replace(/- Sold out/gi, '');
}
}
});
}
applyRestrictions() {
this.removeLoadingClass();
if (this.config.productTemplate === 'records') {
console.log('Records template - skipping restrictions');
document.documentElement.classList.add('geo-allowed');
this.showAllowedElements();
return;
}
const allowed = this.isCountryAllowed();
console.log(`Country: ${this.userCountry}, Allowed: ${allowed}`);
if (!allowed) {
document.documentElement.classList.add('geo-restricted');
this.hideRestrictedElements();
// Note: showRestrictionMessage removed - geo-dealer-display.liquid handles this now
} else {
document.documentElement.classList.add('geo-allowed');
this.showAllowedElements();
}
}
hideRestrictedElements() {
console.log('=== HIDING RESTRICTED ELEMENTS ===');
console.log('Is Collection Page:', this.config.isCollectionPage);
// Hide "Sold Out" badges on collection pages
if (this.config.isCollectionPage) {
document.querySelectorAll('.product-badges__badge, .product-badges, [class*="badge"], .badge').forEach(el => {
const text = el.textContent.trim().toLowerCase();
if (text === 'sold out' || text === 'soldout' || text.includes('sold out')) {
el.style.display = 'none';
el.setAttribute('data-geo-hidden-badge', 'true');
}
});
}
// Hide add to cart text metafield blocks (short pricing notes)
document.querySelectorAll('.text-block, .group-block, rte-formatter, [class*="text-block"], [class*="rich-text"], .rte').forEach(el => {
const text = el.textContent.trim().toLowerCase();
if (text.length < 100) {
if (text.includes('price is per') ||
text.includes('price per') ||
text.includes('priced per') ||
text.includes('sold as pair') ||
text.includes('sold as a pair') ||
text === 'per pair' ||
text.includes('each unit') ||
text.includes('price includes')) {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
this.collapseParentIfEmpty(el);
}
}
});
// Hide prices
const priceSelectors = [
'.product__price', '.price', '.product-price', '[data-price]', '.money',
'.price--on-sale', '.price-item--sale', '.price-item--regular',
'.price__sale', '.price__regular', '.compare-at-price', '.was-price'
];
priceSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
});
// Collection page: hide prices in cards
if (this.config.isCollectionPage) {
document.querySelectorAll('[class*="card"] .price, [class*="grid"] .price, .price s, .price del, s, del').forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
}
// Hide add to cart buttons
const cartSelectors = [
'button[name="add"]', '.product-form__submit', '.add-to-cart',
'form[action*="/cart/add"]', '.shopify-payment-button', '.product-form__buttons',
'.trade-in-buttons-wrapper', '.trade-in-button-group', '.trade-in-btn',
'.buy-buttons-block', '.product-form-buttons', '.add-to-cart-button',
'button[data-open-trade-modal]', 'button[data-add-to-cart-normal]', 'button[data-add-with-trade]'
];
cartSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
});
// Hide quantity selectors
document.querySelectorAll('.product-form__quantity, .quantity-selector').forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
// Hide trade-in promo text
document.querySelectorAll('strong, p, div, span, section, aside').forEach(el => {
const text = el.textContent.trim();
if (text.length < 300) {
if ((text.startsWith('Receive up to') && text.includes('trade in')) ||
(text.includes('Now available') && text.includes('trade in')) ||
text.includes('Receive up to $') ||
text.includes('trade in your')) {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
this.collapseParentIfEmpty(el);
}
}
if (text === '-%}' || text.trim() === '-%}') {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
}
});
// Hide trade-in class elements
document.querySelectorAll('[class*="trade-in"], [class*="tradein"], [class*="trade-up"], [class*="tradeup"]').forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
// Hide accordion sections
document.querySelectorAll('accordion-custom, details').forEach(el => {
const text = el.textContent;
if (text.includes('Talk to a Hi-Fi Specialist') ||
text.includes('Home Audition Made Easy') ||
(text.includes('Shipping') && !text.includes('Shipping policy'))) {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
}
});
// Hide menu prices
document.querySelectorAll('.menu .price, .dropdown .price, .mega-menu .price, nav .price, header .price').forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
// Hide waiting list / waitlist buttons (for international visitors)
document.querySelectorAll('[class*="waiting"], [class*="waitlist"], [class*="Waiting"], [class*="Waitlist"]').forEach(el => {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
});
document.querySelectorAll('button, a.button, a[class*="btn"]').forEach(el => {
const text = el.textContent.toLowerCase();
if (text.includes('waiting list') || text.includes('waitlist') || text.includes('notify me')) {
el.style.display = 'none';
el.setAttribute('data-geo-restricted', 'true');
}
});
// Clean variant selectors (remove "- Unavailable")
this.cleanVariantSelectors();
}
showAllowedElements() {
const restrictionMsg = document.querySelector('.geo-restriction-message');
if (restrictionMsg) restrictionMsg.remove();
document.querySelectorAll('[data-geo-restricted]').forEach(el => {
el.style.display = '';
el.style.margin = '';
el.style.padding = '';
el.style.height = '';
el.style.minHeight = '';
el.style.overflow = '';
el.removeAttribute('data-geo-restricted');
});
document.querySelectorAll('[data-geo-hidden-badge]').forEach(el => {
el.style.display = '';
el.removeAttribute('data-geo-hidden-badge');
});
document.querySelectorAll('[data-original-text]').forEach(el => {
el.textContent = el.getAttribute('data-original-text');
el.removeAttribute('data-original-text');
});
}
setTestCountry(countryCode) {
this.userCountry = countryCode.toUpperCase();
this.setCachedCountry(this.userCountry);
document.documentElement.classList.remove('geo-restricted', 'geo-allowed');
document.querySelectorAll('[data-geo-restricted]').forEach(el => {
el.style.display = '';
el.style.margin = '';
el.style.padding = '';
el.style.height = '';
el.style.minHeight = '';
el.style.overflow = '';
el.removeAttribute('data-geo-restricted');
});
document.querySelectorAll('[data-geo-hidden-badge]').forEach(el => {
el.style.display = '';
el.removeAttribute('data-geo-hidden-badge');
});
document.querySelectorAll('[data-original-text]').forEach(el => {
el.textContent = el.getAttribute('data-original-text');
el.removeAttribute('data-original-text');
});
const msg = document.querySelector('.geo-restriction-message');
if (msg) msg.remove();
this.applyRestrictions();
this.removeLoadingClass();
}
clearCache() {
try {
sessionStorage.removeItem(this.storageKey);
sessionStorage.removeItem(this.storageExpiry);
// Also clear old localStorage entries
localStorage.removeItem(this.storageKey);
localStorage.removeItem(this.storageExpiry);
console.log('Country cache cleared');
} catch (e) {
console.warn('Could not clear cache:', e);
}
}
}
function initGeoRestrictions() {
if (!window.geoRestrictionSettings) {
console.warn('Waiting for geoRestrictionSettings...');
setTimeout(initGeoRestrictions, 50);
return;
}
console.log('Initializing geo restrictions v3.4');
window.geoRestrictions = new GeolocationRestrictions();
window.geoRestrictions.init();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initGeoRestrictions);
} else {
initGeoRestrictions();
}
window.testGeoRestriction = function(countryCode) {
if (window.geoRestrictions) {
window.geoRestrictions.setTestCountry(countryCode);
}
};
window.clearGeoCache = function() {
if (window.geoRestrictions) {
window.geoRestrictions.clearCache();
location.reload();
}
};
}
Skip to content
Current Issue
All Articles
Past Issues
In This Issue
All of us at Copper wish everyone a happy, healthy and wonderful holiday season and New Year. We appreciate your readership and support very much as we share our love of music and audio.
Our colleague and Copper contributor Howard Kneller has launched a new website, The Listening Chair (www.thelisteningchair.net ). The site features a wide variety of equipment reviews, news reporting, features, videos, and more. We will continue to feature Howard’s photography, and welcome The Listening Chair as a new voice in audio and home theater.
In this issue: B. Jan Montana witnesses a Christmas miracle. Octave Records’ latest release, Otis Taylor and the Electrics, offers some very powerful music from the trance blues master. We’ve got a lot of show reporting, as we conclude our coverage of T.H.E. Show New York 2025, offer our first installment on Capital Audiofest 2025, and Harris Fogel looks at CanJam SoCal 2025. Plus, I offer my tips on attending audio shows. The Vinyl Beat enjoys a lifetime of holiday music. Ray Chelstowski talks with Little Feat keyboardist Bill Payne about why The Last Farewell Tour isn’t goodbye. Wayne Robins sees that rock and roll is here to stay .
Rich Isaacs begins a new series on under-appreciated artists, starting with British singer/songwriter and musician Martin Briley. Frank Doris has advice about avoiding burnout when playing in a rock and roll band. The latest installment of Paul McGowan’s The Audiophile’s Guide offers tips on using bass traps for optimizing room acoustics, and even building your own. Our guest article from PMA Magazine visits listening bars in Chicago. Copper Classics finds Ken Kessler attending an Audio Jumble of reel-to-reel treasures. PS Audio wins some Editors’ Choice awards. We conclude the issue with holiday music, puppy prognostication, and living color.
Click here for information on how to post comments in Copper.
Contributors to This Issue: Ray Chelstowski, Frank Doris, Harris Fogel, Rich Isaacs, Ken Kessler, Paul McGowan, B. Jan Montana, Olivier Meunier-Plante, Rudy Radelic, Wayne Robins, Peter XeniLogo Design : Susan Schwartz-Christian, from a concept by Bob D’Amico
Editor: Frank Doris
Publisher: Paul McGowan
Post-publication Nitpicker: Rich Isaacs
Advertising Sales: No one. We are free from advertising and subscribing to Copper is free.
Copper’s Comments Policy:
Copper’s comments sections are moderated. While we encourage thoughtful and spirited discussion, please be civil.
The editor and Copper’s editorial staff reserve the right to delete comments according to our discretion. This includes: political commentary; posts that are abusive, insulting, demeaning or defamatory; posts that are in violation of someone’s privacy; comments that violate the use of copyrighted information; posts that contain personal information; and comments that contain links to suspect websites (phishing sites or those that contain viruses and so on). Spam will be blocked or deleted.
Copper is a place to be enthusiastic about music, audio and other topics. It is most especially not a forum for political discussion, trolling, or rude behavior. Thanks for your consideration.
– FD
More Stories
Octave Pitch
Otis Taylor and the Electrics Delivers a Powerful Set of Hypnotic Modern Blues
Octave Records’ latest release, Otis Taylor and the Electrics, reaffirms the singer/songwriter/multi-instrumentalist as one of the greatest artists...
Featured
A Christmas Miracle
Many years ago in a small town far away, a young couple dropped their motorcycle when they hit pea gravel around a curve. Pea gravel was used in wi...
Show Report
T.H.E. Show New York 2025, Part Two: Plenty to See, Hear, and Enjoy
Part One of my T.H.E International Audio Show New York 2025 appeared in Issue 224, To recap: The event was held at the Hilton Hasbrouck Heights/Mea...
Underappreciated Artists
Underappreciated Artists, Part One: Martin Briley
I’ll be the first to admit that my musical tastes do not align with the great majority. My favorite genre is progressive rock (prog, as it is now k...
Wayne's Words
Rock and Roll is Here to Stay
An Unpublished Review of Richard Nader's Rock and Roll Revival, Vol. 2, 1969
This was the first article I ever sent to Rolling Stone, on spec. I...
The Vinyl Beat
A Lifetime of Holiday Record (and CD) Listening
I’m digging into the archives this year to highlight a handful of holiday records I’ve enjoyed throughout life. Some of these I’ve owned only o...
Disciples of Sound
Little Feat: Not Saying Goodbye, Not Yet
The Who once infamously sang, “I hope I die before I get old.” Rock music was long defined by a live-fast-die-young mythology. But the artists who ...
Frankly Speaking
How to Play in a Rock Band, Part 18: Dealing With Burnout
While playing in a rock band can be a total rush, like any field of endeavor, there can be times when you get burned out. It can happen for any num...
The People Who Make Audio Happen
The People Who Make Audio Happen: CanJam SoCal 2025
CanJam SoCal 2025, held this fall in Irvine, California, was a class-act headphones show from start to finish. With a plethora of rooms hosting fol...
Featured
Chicago’s Sonic Sanctuaries: Four Hi‑Fi Listening Bars Channeling the Jazz‑Kissa Spirit
Copper has an exchange program with selected magazines, where we share articles between publications. This one's from Canada's PMA Magazine.
Chic...
Paul's Place
From The Audiophile’s Guide: Controlling Bass Frequencies Through Membrane Absorbers (and How to Build Your Own)
When it comes to controlling bass frequencies in a room, it’s important to remember that most bass problems can be solved through careful placeme...
Your Editor’s Tips for Attending Audio Shows
I’ve written a lot of show reports, to the point where I was starting to repeat myself in some of the advice I was giving. So, I thought I’d write ...
Show 6 More Articles
Load More Issues
Showing issues 214-224. Click "Load More" to see earlier issues.
#225
Capital Audiofest 2025: Must-See Stereo, Part One
by Frank Doris
Dec 01, 2025
#225
Otis Taylor and the Electrics Delivers a Powerful Set of Hypnotic Modern Blues
by Frank Doris
Dec 01, 2025
#225
A Christmas Miracle
by B. Jan Montana
Dec 01, 2025
#225
T.H.E. Show New York 2025, Part Two: Plenty to See, Hear, and Enjoy
by Frank Doris
Dec 01, 2025
#225
Underappreciated Artists, Part One: Martin Briley
by Rich Isaacs
Dec 01, 2025
#225
Rock and Roll is Here to Stay
by Wayne Robins
Dec 01, 2025
#225
A Lifetime of Holiday Record (and CD) Listening
by Rudy Radelic
Dec 01, 2025
#225
Little Feat: Not Saying Goodbye, Not Yet
by Ray Chelstowski
Dec 01, 2025
#225
How to Play in a Rock Band, Part 18: Dealing With Burnout
by Frank Doris
Dec 01, 2025
#225
The People Who Make Audio Happen: CanJam SoCal 2025
by Harris Fogel
Dec 01, 2025
#225
Chicago’s Sonic Sanctuaries: Four Hi‑Fi Listening Bars Channeling the Jazz‑Kissa Spirit
by Olivier Meunier-Plante
Dec 01, 2025
#225
From The Audiophile’s Guide: Controlling Bass Frequencies Through Membrane Absorbers (and How to Build Your Own)
by Paul McGowan
Dec 01, 2025
#225
Your Editor’s Tips for Attending Audio Shows
by Frank Doris
Dec 01, 2025
#225
PS Audio in the News
by Frank Doris
Dec 01, 2025
#225
Back to My Reel-to-Reel Roots, Part 24
by Ken Kessler
Dec 01, 2025
#225
Holiday Music
by Frank Doris
Dec 01, 2025
#225
Puppy Prognostication
by Peter Xeni
Dec 01, 2025
#225
How to Post Comments on Copper
by Frank Doris
Dec 01, 2025
#225
Living Color
by Rudy Radelic
Dec 01, 2025
#224
T.H.E. Show New York 2025, Part One: A New Beginning
by Frank Doris
Nov 03, 2025
#224
Fool’s Leap of Faith is the Extraordinary Octave Records Debut from Singer/Songwriter Tyler Burba and Visit
by Frank Doris
Nov 03, 2025
#224
The Beatles’ “Aeolian Cadences.” What?
by Wayne Robins
Nov 03, 2025
#224
Persona Non Grata
by B. Jan Montana
Nov 03, 2025
#224
Talking With Recording Engineer Barry Diament of Soundkeeper Recordings, Part Two
by Frank Doris
Nov 03, 2025
#224
B Sides, B Movies, and Beware of Zombies
by Rudy Radelic
Nov 03, 2025
#224
The Burn-In Chronicles: 1,000 Hours to Sonic Salvation
by Olivier Meunier-Plante
Nov 03, 2025
#224
A Conversation With Mat Weisfeld of VPI Industries
by Joe Caplan
Nov 03, 2025
#224
Blues-Rocker Kenny Wayne Shepherd Celebrates 30 Years of Ledbetter Heights
by Ray Chelstowski
Nov 03, 2025
#224
Playing in a Rock Band, 17: When Good Gigs Go Bad, Part Two
by Frank Doris
Nov 03, 2025
#224
From The Audiophile’s Guide: Dealing with Odd-Shaped Rooms
by Paul McGowan
Nov 03, 2025
#224
TEAC’s TN-3B-SE Turntable Plays Bob Dylan
by Howard Kneller
Nov 03, 2025
#224
PS Audio in the News
by Frank Doris
Nov 03, 2025
#224
Lost in Translation
by Peter Xeni
Nov 03, 2025
#224
Reel-to-Reel Roots, Part 23: Better Than Rice Krispies
by Ken Kessler
Nov 03, 2025
#224
I Bring Joy!
by Frank Doris
Nov 03, 2025
#224
Screen Test
by Rich Isaacs
Nov 03, 2025
#224
How to Post Comments on Copper
by Frank Doris
Nov 03, 2025
#132
Dr. Patrick Gleeson: The Interview, Part Two
by Rich Isaacs
Oct 07, 2025
#223
World Fusion Meets Flamenco in Gratitude from Steve Mullins and Rim of the Well
by Frank Doris
Oct 06, 2025
#223
Judging Albums by Their Covers
by Rich Isaacs
Oct 06, 2025
#223
Recent Arrivals and 12-inch Royalty
by Rudy Radelic
Oct 06, 2025
#223
Summer of Creem, Part Two
by Wayne Robins
Oct 06, 2025
#223
Recording Engineer Barry Diament of Soundkeeper Recordings: Striving for Natural Sound
by Frank Doris
Oct 06, 2025
#223
Tea on the Terrace
by B. Jan Montana
Oct 06, 2025
#223
How Good Can Car Audio Get?
by Joe Caplan
Oct 06, 2025
#223
The Advantages of a Dedicated Listening Room
by Paul McGowan
Oct 06, 2025
#223
1! 2! 3! 4! Surrounded by the Ramones in Dolby Atmos!
by Frank Doris
Oct 06, 2025
#223
PMC’s prophecy1 Loudspeaker Holds the Line
by Howard Kneller
Oct 06, 2025
#223
Quick Takes: Eddie Daniels, The Secret Trio, Anette Askvik, Zack Lober, Jane Ira Bloom
by Frank Doris
Oct 06, 2025
#223
Back to My Reel-to-Reel Roots, Part 22: Reel-to-Real, or, Noodge and Ye Shall Receive
by Ken Kessler
Oct 06, 2025
#223
Grant-Lee Phillips: A Troubadour for Today Releases In the Hour of Dust
by Ray Chelstowski
Oct 06, 2025
#223
How to Play in a Rock Band, 16: Rehearsing for Success
by Frank Doris
Oct 06, 2025
#223
Joy to the World
by Frank Doris
Oct 06, 2025
#223
The People Who Make Audio Happen: Making Music at EmpowerLogic Studio
by Harris Fogel
Oct 06, 2025
#223
The Art of Listening
by Pascal Ravach
Oct 06, 2025
#223
PS Audio in the News
by Frank Doris
Oct 06, 2025
#223
Trained Ear
by Peter Xeni
Oct 06, 2025
#223
Now You See Her, Now You Don't
by B. Jan Montana
Oct 06, 2025
#223
How to Post Comments on Copper
by Frank Doris
Oct 03, 2025
#222
Take a Musical Trip Back in Time With Jazz Classics: 1940s by Pianist Tom Amend and His Sextet
by Frank Doris
Sep 02, 2025
#222
The Legend of the King's Shipwright
by B. Jan Montana
Sep 02, 2025
#222
We’re Audiophiles, and Deserve Some Respect!
by Frank Doris
Sep 02, 2025
#222
FIDELITY Magazine Visits Revox: 77 Years of Tradition and Innovation
by Maximilian Merk
Sep 02, 2025
#222
How to Play in a Rock Band, 15: Getting Gigs
by Frank Doris
Sep 02, 2025
#222
Talking With Musician, Composer and Record Label Maven David Chesky, Part Two
by Frank Doris
Sep 02, 2025
#221
How to Play in a Rock Band, 14: Show Me the Money!
by Frank Doris
Sep 02, 2025
#222
The Vinyl Beat: Out Through the In Door?
by Rudy Radelic
Sep 02, 2025
#222
The People Who Make Audio Happen: More Images from T.H.E. Show SoCal 2025
by Harris Fogel
Sep 02, 2025
#222
The People Who Make Audio Happen: More From Rock’N’R’Olivia & Roni Lee’s Pre-NAMM All Star Rooftop Jam
by Harris Fogel
Sep 02, 2025
#222
First Chair, Billy Joel Desk
by Wayne Robins
Sep 02, 2025
#222
Guitarist/Songwriter Jamie James Returns With Straight Up
by Ray Chelstowski
Sep 02, 2025
#222
Ozzy, Wildman Survivor
by Mark Lepage
Sep 02, 2025
#222
PS Audio in the News
by Frank Doris
Sep 02, 2025
#222
From The Audiophile’s Guide: Working With the Room
by Paul McGowan
Sep 02, 2025
#222
Back to My Reel-to-Reel Roots, Part 21: The Best Private Members Club…Ever
by Ken Kessler
Sep 02, 2025
#222
Vive la Différence
by Frank Doris
Sep 02, 2025
#222
Sonic Coloration
by Harris Fogel
Sep 02, 2025
#222
Deviated Septum
by Peter Xeni
Sep 02, 2025
#222
How to Post Comments on Copper
by Frank Doris
Sep 02, 2025
#221
Talking With Musician, Composer and Record Label Maven David Chesky, Part One
by Frank Doris
Aug 04, 2025
#221
Jazz Goes off on a Modern Pop Tangent: Octave Records’ Latest by Simple Math and Pianist Charles Blenzig
by Frank Doris
Aug 04, 2025
#221
Musings About AI, Audio, and Music
by Frank Doris
Aug 04, 2025
#221
EveAnna Manley Passes the Torch With the Sale of Manley Labs
by Frank Doris
Aug 04, 2025
#221
No Man Is Free Who Is Not Master of Himself
by B. Jan Montana
Aug 04, 2025
#221
Freedy Johnston’s Can You Fly: a “Perfect” Album, Reissued
by Ray Chelstowski
Aug 04, 2025
#221
More People Who Make Audio Happen: T.H.E. Show SoCal 2025
by Harris Fogel
Aug 04, 2025
#221
Inner Sleeves (And What You Can Learn From Them)
by Rich Isaacs
Aug 04, 2025
#221
Peter Asher's Life, in Concert
by Wayne Robins
Aug 04, 2025
#221
Maria Stader: Opera's Other Maria
by Stephan Haberthuer
Aug 04, 2025
#221
Quantum Technology and the Future of Music and Audio
by Joseph Caplan
Aug 04, 2025
#221
From The Audiophile's Guide: More About Optimizing Your Listening Room
by Paul McGowan
Aug 04, 2025
#221
The Vinyl Beat In a 12-inch Singles World
by Rudy Radelic
Aug 04, 2025
#221
The People Who Make Audio Happen: Rock’N’R’Olivia & Roni Lee’s Pre-NAMM All Star Rooftop Jam
by Harris Fogel
Aug 04, 2025
#221
PS Audio in the News
by Frank Doris
Aug 04, 2025
#221
Back to My Reel-to-Reel Roots, Part 20
by Ken Kessler
Aug 04, 2025
#221
A Bedtime Story
by Peter Xeni
Aug 04, 2025
#221
Radiotrician to the Rescue!
by Frank Doris
Aug 04, 2025
#221
Harmonious Path
by B. Jan Montana
Aug 04, 2025
#221
How to Post Comments on Copper
by Frank Doris
Aug 04, 2025
#220
On the Scene at T.H.E. Show 2025
by B. Jan Montana
Jul 07, 2025
#220
They Say It’s Wonderful: Octave Records Presents Jazz Guitarist/Vocalist Brian Nova in a Set of Jazz Standards
by Frank Doris
Jul 07, 2025
#220
Orchestra in the Age of Algorithms: A Reflection on Meaning in a Post-Existential Romantic World
by David Chesky
Jul 07, 2025
#220
The Kinks – The Journey, Part 3, and an Interview With Drummer Mick Avory
by Frank Doris
Jul 07, 2025
#220
Blues History By Way of Classic Rock Part 2: The Rolling Stones and Other Artists
by Jeff Weiner
Jul 07, 2025
#220
Buzz Me In: Inside the Record Plant Studios, a Book Review
by Frank Doris
Jul 07, 2025
#220
Laura Nyro's Final on Vinyl
by Wayne Robins
Jul 07, 2025
#220
Quick Takes: Stjernebru, Ola Onabulé and Nicolas Meyer, and Patricia Barber’s Modern Cool on Impex
by Frank Doris
Jul 07, 2025
#220
From The Audiophile's Guide: More About Room Treatment, and Working With Empty Rooms
by Paul McGowan
Jul 07, 2025
#220
Confessions of a Setup Man: An Unexpected Audiophile Upgrade
by Frank Doris
Jul 07, 2025
#220
How to Play in a Rock Band, 13: Adventures at the 2025 Montauk Music Festival
by Frank Doris
Jul 07, 2025
#220
What’s the Story with Meters in Home Audio Playback Systems?
by Howard Kneller
Jul 07, 2025
#220
Robin Trower’s Classic For Earth Below Album Rises Again in a Deluxe Edition
by Ray Chelstowski
Jul 07, 2025
#220
The People Who Make Audio Happen: Adventures at NAMM 2025
by Harris Fogel
Jul 07, 2025
#220
The Vinyl Beat: New Grooves and Old Favorites
by Rudy Radelic
Jul 07, 2025
#220
Back to My Reel-to-Reel Roots, Part 19: Reports of Its Demise Are Premature 2
by Ken Kessler
Jul 07, 2025
#220
PS Audio in the News
by Frank Doris
Jul 07, 2025
#220
Shades of Summer
by Frank Doris
Jul 07, 2025
#220
Slow Payment History
by Peter Xeni
Jul 07, 2025
#220
Uplifting
by B. Jan Montana
Jul 07, 2025
#220
How to Post Comments on Copper
by Frank Doris
Jul 07, 2025
#219
Narada — The Other New Age Label, Part One
by Rich Isaacs
Jun 02, 2025
#219
The Wood Brothers Celebrate Their 20th Anniversary With Puff of Smoke
by Ray Chelstowski
Jun 02, 2025
#219
Bruckner for a Desert Island: Ambling in Realms of Eternal Greatness
by Stephan Haberthür
Jun 02, 2025
#219
Another Bucket List Event: the 19th Annual La Jolla Concours d’Elegance
by B. Jan Montana
Jun 02, 2025
#219
The Vinyl Beat: The Cat’s in the Bag?
by Rudy Radelic
Jun 02, 2025
#219
From The Audiophile's Guide: Room Treatment and Working With Existing Setups
by Paul McGowan
Jun 02, 2025
#219
Talking With Yair Raz of Speaker Maker Innovo Audio Designs
by Frank Doris
Jun 02, 2025
#219
Suzanne Vega Paints Her Masterpiece Flying with Angels and Adapting Dylan
by Wayne Robins
Jun 02, 2025
#219
Blues History By Way of Classic Rock, Part One: The Yardbirds' Legacy
by Jeff Weiner
Jun 02, 2025
#219
How to Play in a Rock Band, Part 12: Eating and Drinking on the Job
by Frank Doris
Jun 02, 2025
#219
Living Dangerously with Adona Corporation’s Zero GTX Black Widow Component Rack
by Howard Kneller
Jun 02, 2025
#219
Octave Records Presents Singer/Songwriter Clay Rose With Unrestrained Emotional Intensity on Live at Dharma Barn
by Frank Doris
Jun 02, 2025
#219
Hear the Quality!
by Frank Doris
Jun 02, 2025
Back to My Reel-to-Reel Roots, Part 18: Reports of Its Demise Are Premature 1
by Ken Kessler
Jun 02, 2025
#219
PS Audio in the News
by Frank Doris
Jun 02, 2025
#219
Changing Priorities
by Peter Xeni
Jun 02, 2025
#219
How to Post Comments on Copper
by Frank Doris
Jun 02, 2025
#219
The Beauty of Aging
by James Schrimpf
Jun 02, 2025
Standing Tall
May 05, 2025
#218
AXPONA 2025: Bigger and More Bustling Than Ever
by Frank Doris
May 05, 2025
#218
It’s a Gas: Restoring the Legendary Hill Plasmatronics Loudspeakers
by Frank Doris
May 05, 2025
#218
Strawberry Fields For Ezra
by Wayne Robins
May 05, 2025
#218
How to Play in a Rock Band, 11: The Extremes of Performing Outdoors
by Frank Doris
May 05, 2025
#218
A Visit to Turntable and Cartridge Maker Clearaudio: Feel, Then Measure
by Carsten Barnbeck
May 05, 2025
#218
The Black Hole Boogie Band Brings a Fresh and Funky Sound to Octave Records With Protostar
by Frank Doris
May 05, 2025
#218
I'm Quitting Audio! Here's Why
by Jonson Lee
May 05, 2025
#218
Don Felder: Bringing Musical Gems from The Vault to Light
by Ray Chelstowski
May 05, 2025
#218
The Vinyl Beat Pays a Visit to AXPONA 2025
by Rudy Radelic
May 05, 2025
#218
From The Audiophile’s Guide: Optimizing the Listening Room
by Paul McGowan
May 05, 2025
#218
Where Zeus is Dead, Chaos Rules
by B. Jan Montana
May 05, 2025
#218
Australia’s Melbourne Audio Club Celebrates its 50th Year
by Peter Xeni
May 05, 2025
#218
Channel Surfing
by Frank Doris
May 05, 2025
#218
Back to My Reel-to-Reel Roots, Part 17: Stalking the Wild Revox, Part 2
by Ken Kessler
May 05, 2025
#218
PS Audio in the News: PMG Signature Series Audio Components Make Their Debut
by Frank Doris
May 05, 2025
#218
Standing Tall
by Peter Xeni
May 05, 2025
#218
How to Post Comments on Copper
by Frank Doris
May 05, 2025
#218
Mind Games
by James Schrimpf
May 05, 2025
Florida Audio Expo 2025, Part Two: The Sound of Music
Apr 07, 2025
#217
The Vinyl Beat, AXPONA Edition: Audiophiles Just Want to Have Fun
by Rudy Radelic
Apr 07, 2025
#217
Celebrating National Heart Month
by B. Jan Montana
Apr 07, 2025
#217
Kraftwerk Celebrates 50th Anniversary of Autobahn With New Reissues
by Frank Doris
Apr 07, 2025
#217
The New York Dolls: David Johansen Looks Back
by Wayne Robins
Apr 07, 2025
#217
Florida Audio Expo 2025, Part Two: The Sound of Music
by Frank Doris
Apr 07, 2025
#217
Octave Records Presents Love in the Moonlight: Operatic Fantasies for Violin and Piano
by Frank Doris
Apr 07, 2025
#217
Rescuing Music With X-Rays
by Benjamin A. Senn
Apr 07, 2025
#217
A Film Review: Becoming Led Zeppelin
by Stuart Marvin
Apr 07, 2025
#217
Joe Grushecky and the Houserockers’ Blood on the Bricks, Reissued and Expanded from Omnivore Recordings
by Ray Chelstowski
Apr 07, 2025
#217
From The Audiophile’s Guide: Sample Rates and Their Impact on Digital Audio
by Paul McGowan
Apr 07, 2025
#217
Good Vibrations With a Collection of IsoAcoustics Products
by Howard Kneller
Apr 07, 2025
#217
Book Review:The Musical World of Paul Winter
by Frank Doris
Apr 07, 2025
#217
How to Play in a Rock Band, Part 10: When Good Gigs Go Bad, Part One
by Frank Doris
Apr 07, 2025
#217
The Genesis Museum Collectors Exhibit
by Rich Isaacs
Apr 07, 2025
#217
The People Who Make Audio Happen: Thoughts on CES 2025
by Harris Fogel
Apr 07, 2025
#217
Back to My Reel-to-Reel Roots, Part 16: Stalking the Wild Revox
by Ken Kessler
Apr 07, 2025
#217
PS Audio in the News
by Frank Doris
Apr 07, 2025
#217
Northern Exposure
by Peter Xeni
Apr 07, 2025
#217
Laser-Focused
by Frank Doris
Apr 07, 2025
#217
How to Post Comments on Copper
by Frank Doris
Apr 07, 2025
#217
Air and Ground Transport
by James Schrimpf
Apr 07, 2025
#216
Talking With Triad Magnetics: Demystifying the Science Behind Audio Transformers
by Frank Doris
Mar 03, 2025
#216
Florida Audio Expo 2025: First Impressions (With More to Come)
by Frank Doris
Mar 03, 2025
#216
The Vinyl Beat Special Edition: Cataloging Your Collection Using Discogs
by Rudy Radelic
Mar 03, 2025
#216
Octave Records Presents Compelling Original Jazz from Keyboardist Ryan Benthall in Sovereign Mind
by Frank Doris
Mar 03, 2025
#216
Steely Dan’s Katy Lied, Reissued by Analogue Productions: It Feels So Good
by Frank Doris
Mar 03, 2025
#216
How to Play in a Rock Band, Part Nine: Look Sharp!
by Frank Doris
Mar 03, 2025
#216
Slinky Vagabond: Bowie Replicants
by Wayne Robins
Mar 03, 2025
#216
The People Who Make Audio Happen: Living Colour Unplugged in the Studio
by Harris Fogel
Mar 03, 2025
#216
From The Audiophile's Guide: Understanding Digital Audio, Part Two
by Paul McGowan
Mar 03, 2025
#216
Jimmy Vivino’s Musical Versatility Gets Blues Power on His New Album, Gonna Be 2 of Those Days
by Ray Chelstowski
Mar 03, 2025
#216
Gabriel Fauré: 100 Years After His Death, Celebrate His Music With Five Essential Recordings
by Pierre Dallaire
Mar 03, 2025
#216
A Report From the NAMM Show 2025
by John J. Volanski
Mar 03, 2025
#216
Back to My Reel-to-Reel Roots, Part 15
by Ken Kessler
Mar 03, 2025
#216
PS Audio in the News
by Frank Doris
Mar 03, 2025
#216
The Cat's Meow
by Frank Doris
Mar 03, 2025
#216
Ansuz Acoustics’ PowerSwitch D3: High-End Network Distribution
by Howard Kneller
Mar 03, 2025
#216
Dual-Purpose
by Peter Xeni
Mar 03, 2025
#216
How to Post Comments on Copper
by Frank Doris
Mar 03, 2025
#215
From The Audiophile's Guide: Understanding Digital Audio
by Paul McGowan
Feb 03, 2025
#215
Pianist Tom Amend Digs Into a Legendary Jazz Era on Octave Records’ Latest Release: Jazz Classics: 1960s
by Frank Doris
Feb 03, 2025
#215
Love Story
by B. Jan Montana
Feb 03, 2025
#215
The Roots of Rock and Roll (Sort Of), Part 2
by Jeff Weiner
Feb 03, 2025
#215
Lesley Gore: The Quincy Jones Sessions
by Wayne Robins
Feb 03, 2025
#215
How to Play in a Rock Band, Part Eight: Playing on Bigger Stages
by Frank Doris
Feb 03, 2025
#215
An Informative Encounter with DALI Speakers
by Frank Doris
Feb 03, 2025
#215
Vienna's Finest Audio Show 2024
by Maximilian Merk
Feb 03, 2025
#215
Shining a Light on the Bluesound NODE ICON
by Howard Kneller
Feb 03, 2025
#215
The Vinyl Beat
by Rudy Radelic
Feb 03, 2025
#215
For Singer/Songwriter Paul Thorn, Life is More than Just a Vapor
by Ray Chelstowski
Feb 03, 2025
#215
The People Who Make Audio Happen: Capital Audiofest Edition
by Harris Fogel
Feb 03, 2025
#215
Vinyl: The Most Improbable Comeback of the 21st Century
by Larry Jaffee with Frank Doris
Feb 03, 2025
#215
PS Audio in the News
by Frank Doris
Feb 03, 2025
#215
Back to My Reel-to-Reel Roots, Part 14
by Ken Kessler
Feb 03, 2025
#215
That Old Audio Gang of Mine
by Frank Doris
Feb 03, 2025
#215
High Fi
by Peter Xeni
Feb 03, 2025
#216
Scratching the Surface
by Rich Isaacs
Feb 03, 2025
#215
Lyrical Architecture
by James Schrimpf
Feb 03, 2025
#215
How to Post Comments on Copper
by Frank Doris
Feb 03, 2025
Listening to Miles Davis and Birth of the Blue at a Temple of Jazz
Jan 06, 2025
#214
Sacred Sabbaths
by B. Jan Montana
Jan 06, 2025
#214
Capital Audiofest, Part Two: More Thoughts and Observations
by Frank Doris
Jan 06, 2025
#214
Listening to Miles Davis and Birth of the Blue at a Temple of Jazz
by Frank Doris
Jan 06, 2025
#214
The Great Yacht Rock Scare of 2024
by Wayne Robins
Jan 06, 2025
#214
From The Listening Chair: An Audiophile on the Road Again
by Howard Kneller
Jan 06, 2025
#214
Another Look at AES Show New York 2024
by Harris Fogel
Jan 06, 2025
#214
50 Years of PS Audio,Part Six: The PowerPlant Comes to Life
by Paul McGowan
Jan 06, 2025
#214
Jamie Howarth of Plangent Processes: Making Recordings Sound Better, Part Three
by Frank Doris
Jan 06, 2025
#214
How to Play in a Rock Band, Part Seven: Playing on Medium-Sized Stages
by Frank Doris
Jan 06, 2025
#214
The Vinyl Beat, Special Edition: Miles Davis and Birth of the Blue
by Rudy Radelic
Jan 06, 2025
#214
The Vinyl Beat
by Rudy Radelic
Jan 06, 2025
#214
The Roots of Rock and Roll (Sort Of), Part One
by Jeff Weiner
Jan 06, 2025
#214
PS Audio in the News
by Frank Doris
Jan 06, 2025
#214
Vintage Voltage
by Frank Doris
Jan 06, 2025
#214
Back to My Reel-to-Reel Roots, Part 13: Re-Education
by Ken Kessler
Jan 06, 2025
The Roots of Rock and Roll (Sort Of), Part One
Jan 06, 2025
#214
Octave Records Presents an Evening of Live Jazz With Louisa Amend Quartet Live at the Muse Performance Space
by Frank Doris
Jan 06, 2025
#214
Headphone Hair
by Peter Xeni
Jan 06, 2025
#214
How to Post Comments on Copper
by Frank Doris
Jan 06, 2025
#214
Colors in the Sun
by James Schrimpf
Jan 02, 2025