Outdoor Rock Speakers | Outdoor Speaker Depot (2024)

Outdoor Rock Speakers | Outdoor Speaker Depot (1)

Integrated Outdoor Sound

Enhance your outdoor spaces with our versatile range of rock speakers at Outdoor Speaker Depot. We offer both passive rock speakers for a traditional wired setup, and Bluetooth rock speakers for a wireless audio experience. Meticulously designed to blend with your outdoor landscape, these speakers deliver high-quality sound while maintaining an aesthetic that's pleasing to the eye. Ideal for gardens, patios, or any outdoor venue, our rock speakers bring a unique touch to your outdoor audio experience.

$299Compare at: $509.99You Save: $210.99OSD BTR805 8" Bluetooth® Rock Speaker Outdoor Weather Resistant, Brown/Grey (Pair)
$169.99Compare at: $254.99You Save: $855.25" Bluetooth® Wireless Weather Resistant Rock Speaker Pair, Brown, Grey or Slate - BTR150
$209Compare at: $313.99You Save: $104.998" 2 Way, 200W Rock Speaker, Sandstone Brown, Granite Gray or Slate, Single - RS850
$179Compare at: $268.99You Save: $89.998" 200W Outdoor Weather-Resistant High Performance Rock Speaker Pair, Brown or Granite Grey - RX805
$159Compare at: $238.99You Save: $79.99OSD Audio 8" Omni Rock Speaker 360° Outdoor Weather Resistant Single Brown, Grey, Slate
$149Compare at: $223.99You Save: $74.996.5" High Power Outdoor Weather-Resistant Rock Speaker Pair - Brown, Dark Grey or Light Grey - RS670
$88.43Compare at: $132.99You Save: $44.565.25" 100W Outdoor Weather-Resistant Rock Speaker Pair, Brown, Dark Grey, or Light Grey - RX550
$224.99Compare at: $237.15You Save: $12.16OSD RS850 200W 8" 2-Way Rock Speaker (Single) w/ EW70V Transformer

  • Call Us:
  • 888-779-4968
  • Email:
  • support@osdaudio.com
  • Questions:
  • FAQs


© 2003-2024 OSD Audio. All Rights Reserved.

';var loadinghtml_myFacetResults = '

Outdoor Rock Speakers | Outdoor Speaker Depot (14)

';var loadinghtml_myFacetRefinery = '';/* GD Set the area to scroll to the results. GDCP */window.GDFacetsScrollToResults = function () {setTimeout(function () {if(window.innerWidth >= 960) {/* Desktop. Keep in mind sticky header */$("html, body").animate({ scrollTop: $("main").offset().top }, 600);} else {/* Mobile and no sticky header */$("html, body").animate({ scrollTop: $(".x-collapsing-breadcrumbs").offset().top }, 600);}}, 150);}/* GD We need to now trigger all the theme scripts that do lazy loading and other crazy fun stuff. GDCP */window.GDFacetsAfterDataLoaded = function (what_to_do) {if(what_to_do=='full_from_back_button') {//elementsUI.site();elementsUI.pages.common();//themeFunctionality.init();themeFunctionality.sharedFunctions.observeDeferred();//themeFunctionality.jsCTGY();try {window.init_custom_selects('ajax_reload');}catch(err) {/* console.log("Check init_custom_selects."); */}} else {elementsUI.pages.common();themeFunctionality.sharedFunctions.observeDeferred();themeFunctionality.jsCTGY();window.init_custom_selects('ajax_reload');}gdRangeFinderFixes();}/* GD GDFacetsReloadFromPrev reloads the facet areas using previous data saved in the #js-GDfacetMemory form */window.GDFacetsReloadFromPrev = function () {/* Get saved JSON data from the 3 form inputs in the #js-GDfacetMemory form */var remember_myFacetSort = $("#js-remember_myFacetSort").val();var remember_myFacetTree = $("#js-remember_myFacetTree").val();var remember_myFacetResults = $("#js-remember_myFacetResults").val();var remember_myFacetRefinery = $("#js-remember_myFacetRefinery").val();var updated_at_least_one = false;/* Use saved data to populate the multiple facet areas. */if(remember_myFacetSort != '') {$("#myFacetSort").html(loadinghtml_myFacetSort);$("#myFacetSort").html(remember_myFacetSort);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetSort to reload."); */}if(remember_myFacetTree != '') {$("#myFacetTree").html(loadinghtml_myFacetTree);$("#myFacetTree").html(remember_myFacetTree);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetTree to reload."); */}if(remember_myFacetResults != '') {$("#myFacetResults").html(loadinghtml_myFacetResults);$("#myFacetResults").html(remember_myFacetResults);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetResults to reload."); */} if(remember_myFacetRefinery != '') {$("#myFacetRefinery").html(loadinghtml_myFacetRefinery);$("#myFacetRefinery").html(remember_myFacetRefinery);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetRefinery to reload."); */} if(updated_at_least_one) {/* GD Now Reinit any Theme JS functions. */GDFacetsAfterDataLoaded('full_from_back_button');/* GD Now scroll the user to the new content. */GDFacetsScrollToResults();}/* console.log("GDFacetsReloadFromPrev() Finished."); */}/* GD Override Function MMProdList_UpdateQuery_SubmitParameters from clientside.mvc?Filename=runtime_ui.js */window.MMProdList_UpdateQuery_SubmitParameters = function ( form, params, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_SubmitParameters"); */var i, j, i_len, j_len, elements, params_output_array;/* We don't want this mmprodlist_updatequery_submitparameters_submitted var to kill the function because we're reusing it now. GDCP *//*if ( window.mmprodlist_updatequery_submitparameters_submitted ){return;}window.mmprodlist_updatequery_submitparameters_submitted = true;*/params_output_array = new Array();params.sort( function( a, b ) { return sortAlphaNumeric( a.name, b.name, true ); } );for ( i = 0, i_len = params.length; i < i_len; i++ ){for ( j = 0, j_len = params[ i ].values.length; j < j_len; j++ ){if ( params[ i ].values[ j ].length ){params_output_array.push( encodeURIComponent( params[ i ].name ) + '=' + encodeURIComponent( params[ i ].values[ j ] ) );}}}/* GD: Append the JSON View to the params array. Force the view to be JSON output. GDCP */params_output_array.push( 'view=json' );params_output_array.push( 'killcache2=' + new Date().getTime());/* We're not setting these listeners anymore. They cause a "hickup" with the overrides we do. GDCP */ /*if ( window.mmprodlist_updatequery_submitparameters_timeout ){clearTimeout( window.mmprodlist_updatequery_submitparameters_timeout );delete window.mmprodlist_updatequery_submitparameters_timeout;}if ( window.mmprodlist_updatequery_submitparameters_timeout_event_attached ){elements = form.getElementsByTagName( '*' );for ( i = 0, i_len = elements.length; i < i_len; i++ ){RemoveEvent( elements[ i ], 'mousedown', window.mmprodlist_updatequery_submitparameters_timeout_event_function );RemoveEvent( elements[ i ], 'mousemove', window.mmprodlist_updatequery_submitparameters_timeout_event_function );RemoveEvent( elements[ i ], 'mouseup', window.mmprodlist_updatequery_submitparameters_timeout_event_function );}}*//* GD NOT SENDING TO NEW WINDOW!window.location.href = [ window.location.protocol, '//', window.location.host, window.location.pathname ].join( '' ) + ( params_output_array.length ? ( '?' + params_output_array.join( '&' ) ) : '' );*//* GD: Set the URL of the page to get the JSON data. */var GDfacets_DataURL = [ window.location.protocol, '//', window.location.host, window.location.pathname ].join( '' ) + ( params_output_array.length ? ( '?' + params_output_array.join( '&' ) ) : '' );/* console.log("GDfacets_DataURL: "+GDfacets_DataURL); *//* GD Populate the areas with something while we load new data. */$("#myFacetResults").html(loadinghtml_myFacetResults);/*$("#myFacetSort").html(loadinghtml_myFacetSort);*//*$("#myFacetTree").html(loadinghtml_myFacetTree);*//*$("#myFacetRefinery").html(loadinghtml_myFacetRefinery);*//* GD Ajax Post to the page so we can get the JSON data back and load the various sections all at once with new data. */$.post(GDfacets_DataURL,function(json_data) { })/*for success*/.done(function(json_data) {/* GD Now scroll the user to the new content. */if(json_data.products_on_page_count > 0) {/* GD Load the various sections all at once with new HTML. */$("#myFacetSort").html(json_data.new_myFacetSort);$("#myFacetTree").html(json_data.new_myFacetTree);$("#myFacetResults").html(json_data.new_myFacetResults);$("#myFacetRefinery").html(json_data.new_myFacetRefinery);/* GD Save the new HTML to the remember form fields. */$("#js-remember_myFacetSort").val(json_data.new_myFacetSort);$("#js-remember_myFacetTree").val(json_data.new_myFacetTree);$("#js-remember_myFacetResults").val(json_data.new_myFacetResults);$("#js-remember_myFacetRefinery").val(json_data.new_myFacetRefinery);$("#js-remember_products_found").val(json_data.products_on_page_count);/* GD Now Reinit any Theme JS functions. */GDFacetsAfterDataLoaded();/* Scroll to results */GDFacetsScrollToResults();} else {/* There are no valid results. */$("#myFacetResults").html('

Sorry, no results match these filters.

Undo the last filter or RESET.

');}})/*for failed*/.fail(function(json_data) {/* console.log( "error reloading avail facets to "+doAjaxFacetURL ); */})/*for completion, whether success or error*/.always(function(json_data) {}); }/* GD Override Function MMProdList_UpdateQuery_SubmitParameters_Timeout from clientside.mvc?Filename=runtime_ui.js*/window.MMProdList_UpdateQuery_SubmitParameters_Timeout = function ( form, submit_delay, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_SubmitParameters_Timeout"); */var i, i_len, elements;submit_delay = stoi_def_nonneg( submit_delay, 0 )if ( window.mmprodlist_updatequery_submitparameters_timeout ){clearTimeout( window.mmprodlist_updatequery_submitparameters_timeout );delete window.mmprodlist_updatequery_submitparameters_timeout;}if ( submit_delay === 0 ){return MMProdList_UpdateQuery_SubmitParameters_LowLevel( form );}window.mmprodlist_updatequery_submitparameters_timeout = setTimeout( function() { MMProdList_UpdateQuery_SubmitParameters_LowLevel( form ); }, submit_delay );if ( !window.mmprodlist_updatequery_submitparameters_timeout_event_attached ){window.mmprodlist_updatequery_submitparameters_timeout_event_attached = true;window.mmprodlist_updatequery_submitparameters_timeout_event_function = function( event ) { MMProdList_UpdateQuery_SubmitParameters_Timeout( form, submit_delay ); };/* We're not setting these listeners anymore. They cause a "hickup" with the overrides we do. GDCP *//*elements = form.getElementsByTagName( '*' );for ( i = 0, i_len = elements.length; i < i_len; i++ ){AddEvent( elements[ i ], 'mousedown', window.mmprodlist_updatequery_submitparameters_timeout_event_function );AddEvent( elements[ i ], 'mousemove', window.mmprodlist_updatequery_submitparameters_timeout_event_function );AddEvent( elements[ i ], 'mouseup', window.mmprodlist_updatequery_submitparameters_timeout_event_function );}*/}}/* GD Override Function MMProdList_UpdateQuery_Notify_Updating from clientside.mvc?Filename=runtime_ui.js*/ window.MMProdList_UpdateQuery_Notify_Updating = function ( form, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_Notify_Updating"); */var i, i_len;/* We're not disabling the facet fields anymore. We can if needed. It's not required. GDCP *//*for ( i = 0, i_len = form.elements.length; i < i_len; i++ ){form.elements[ i ].setAttribute( 'disabled', 'disabled' );}*/}});}

Outdoor Rock Speakers | Outdoor Speaker Depot (2024)

References

Top Articles
Latest Posts
Article information

Author: Greg Kuvalis

Last Updated:

Views: 5942

Rating: 4.4 / 5 (55 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Greg Kuvalis

Birthday: 1996-12-20

Address: 53157 Trantow Inlet, Townemouth, FL 92564-0267

Phone: +68218650356656

Job: IT Representative

Hobby: Knitting, Amateur radio, Skiing, Running, Mountain biking, Slacklining, Electronics

Introduction: My name is Greg Kuvalis, I am a witty, spotless, beautiful, charming, delightful, thankful, beautiful person who loves writing and wants to share my knowledge and understanding with you.