These Aquila® Silver Rumbler U•BASS®Strings have been engineered specifically for the Kala U•BASS® using Aquila's patented technology and formulas. Their special Nylgut compound includes calcium carbonate that gives the strings increased density, stability, and the ability to resonate tone at very low frequencies. They have clear tone and a low-end that lives up to the name.
Fits all rubber-stringed Kala U•BASS® Instruments*
Includes 4 Silver-Gray strings: EADG
Designed for the traditional bass tuning (EADG)
Suitable for 20“ - 21" Scale
Manufactured from a Proprietary Nylgut Mixture
Original string set on the Rumbler U•BASS® (UBASS-RMBL-FS)
Made by Aquila in Italy
*For use on Round Wound U•BASS® setups, the instrument will needa new, compatible nutto accommodate these strings. A nut swap should be performed by an experienced instrument technician.
**Modifications performed by the user will void the manufacturer warranty. Please also note that Kala is not responsible for damages to instruments caused by new string installments.
Per Kala Support Specialist, Ian, I purchased these strings to replace the old round wound strings that were on the used 2013 Rumbler I recently acquired. Ian sent me some advice on installing them and included a video of a Kala tech installing them. These 2 things really helped me as the strings are totally different than anything I ever used before. They do stretch, but not as much as plain nylon gut. Once in tune, they stay pretty much in tune. These strings fixed all the intonation issues from the old strings! The only downside is the "slightly sticky" feel they have, but that was expected based on other reviews. They fit the nut on this 2013 too. I recommend these strings.
ET
Everett T. A.
Verified Buyer
I recommend this product
Rated 5 out of 5 stars
3 months ago
First time with Rumblers
I've played U-Bass for 13 years and tried lots of different strings. These are good, quite a lot better than the white Thundergut strings, which are too sticky and had intonation problems. My faves are still Thunder Reds, but the Rumblers are about as good as the Road Toads that come standard on most U-Basses.
WN
William N.
Verified Buyer
I recommend this product
Rated 4 out of 5 stars
10 months ago
So Far So Good
They seem to be staying in tune better then I expected. Make sure the knot on the end of the string is tight. I use 2 pliers to pull it tight. I did notice that the strings are not all the same shade of gray.
One or more of the items in your cart is a recurring or deferred purchase. By continuing, I agree to the cancellation policy and authorize you to charge my payment method at the prices, frequency and dates listed on this page until my order is fulfilled or I cancel, if permitted.
,
* OR add it as a snippet and render it on checkout pages.
* For Shopify Plus: add to checkout.liquid as well.
*/
(function () {
'use strict';
// ---------------------------------------------------------------------------
// 1. BLOCK KNOWN EXTENSION postMessage CHANNELS
// Extensions communicate via window.postMessage — intercept and drop theirs.
// ---------------------------------------------------------------------------
const BLOCKED_MESSAGE_PATTERNS = [
/honey/i,
/joinhoney/i,
/capital.?one.?shopping/i,
/wikibuy/i,
/retailmenot/i,
/coupon.?cabi/i,
/piggy/i,
/karma/i,
/rakuten/i,
/ibotta/i,
/cently/i,
/coupert/i,
/avast/i,
/priceblink/i,
/dealnews/i,
/savings\.com/i,
/promo\.com/i,
];
const _originalAddEventListener = window.addEventListener.bind(window);
const _originalPostMessage = window.postMessage.bind(window);
// Intercept incoming postMessages from extensions
window.addEventListener = function (type, listener, options) {
if (type === 'message') {
const wrappedListener = function (event) {
try {
const data = typeof event.data === 'string' ? event.data : JSON.stringify(event.data || '');
if (BLOCKED_MESSAGE_PATTERNS.some((p) => p.test(data))) {
console.debug('[CouponBlocker] Blocked postMessage from coupon extension.');
return; // Drop the message
}
} catch (_) {}
listener.call(this, event);
};
return _originalAddEventListener(type, wrappedListener, options);
}
return _originalAddEventListener(type, listener, options);
};
// ---------------------------------------------------------------------------
// 2. BLOCK EXTENSION-INJECTED DOM ELEMENTS
// Extensions inject buttons, iframes, and overlays — remove them on sight.
// ---------------------------------------------------------------------------
const BLOCKED_SELECTORS = [
// Honey
'[id*="honey"]',
'[class*="honey"]',
'[data-honey]',
'iframe[src*="honey"]',
// Capital One Shopping / Wikibuy
'[id*="wikibuy"]',
'[class*="wikibuy"]',
'[id*="capitalone"]',
'[class*="capital-one"]',
'iframe[src*="wikibuy"]',
'iframe[src*="capitalone"]',
// RetailMeNot / Coupons.com
'[id*="retailmenot"]',
'[class*="retailmenot"]',
'[id*="rmn-"]',
// Rakuten
'[id*="rakuten"]',
'[class*="rakuten"]',
'iframe[src*="rakuten"]',
// Piggy
'[id*="piggy"]',
'[class*="piggy"]',
// Karma
'[id*="karma-"]',
'[class*="karma-extension"]',
// Coupert
'[id*="coupert"]',
'[class*="coupert"]',
// Generic patterns
'iframe[src*="coupon"]',
'[class*="ext-coupon"]',
'[id*="ext-coupon"]',
];
function removeBlockedElements() {
BLOCKED_SELECTORS.forEach((selector) => {
document.querySelectorAll(selector).forEach((el) => {
console.debug('[CouponBlocker] Removed injected element:', el);
el.remove();
});
});
}
// Run immediately and watch for future injections
removeBlockedElements();
const domObserver = new MutationObserver(() => {
removeBlockedElements();
});
domObserver.observe(document.documentElement, {
childList: true,
subtree: true,
});
// ---------------------------------------------------------------------------
// 3. GUARD THE DISCOUNT INPUT FIELD
// Prevent extensions from programmatically filling and submitting the
// discount code field. Only allow real user input (keyboard events).
// ---------------------------------------------------------------------------
const DISCOUNT_SELECTORS = [
'input[name="discount"]',
'input[placeholder*="discount" i]',
'input[placeholder*="coupon" i]',
'input[placeholder*="promo" i]',
'input[id*="discount" i]',
'input[id*="coupon" i]',
'#checkout_reduction_code',
'#discount-code',
];
function guardDiscountInput(input) {
if (input._couponGuarded) return;
input._couponGuarded = true;
let lastRealValue = input.value;
let isHumanTyping = false;
// Track genuine keyboard interaction
input.addEventListener('keydown', () => { isHumanTyping = true; }, true);
input.addEventListener('keyup', () => { isHumanTyping = false; }, true);
// Use a native setter override to catch programmatic .value = '...' changes
const nativeInputDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');
Object.defineProperty(input, 'value', {
get: function () {
return nativeInputDescriptor.get.call(this);
},
set: function (val) {
if (!isHumanTyping && val !== lastRealValue) {
console.debug('[CouponBlocker] Blocked programmatic discount field change.');
return; // Silently ignore extension-driven value changes
}
lastRealValue = val;
nativeInputDescriptor.set.call(this, val);
},
configurable: true,
});
// Block programmatic form submission triggered by extensions
const form = input.closest('form');
if (form) {
form.addEventListener('submit', function (e) {
if (!isHumanTyping && input.value && input.value !== lastRealValue) {
console.debug('[CouponBlocker] Blocked programmatic form submission.');
e.preventDefault();
e.stopImmediatePropagation();
}
}, true);
}
}
function guardAllDiscountInputs() {
DISCOUNT_SELECTORS.forEach((sel) => {
document.querySelectorAll(sel).forEach(guardDiscountInput);
});
}
// Guard inputs now and watch for dynamically rendered checkout fields
guardAllDiscountInputs();
const inputObserver = new MutationObserver(() => {
guardAllDiscountInputs();
});
inputObserver.observe(document.documentElement, {
childList: true,
subtree: true,
});
console.log('[CouponBlocker] Active — coupon extensions are blocked on this page.');
})();