All for Strings Theory Book 1 - Violin

Manufacturer: Kjos Music
Model #: 84VN
| UPC: 9780849732461
Price: $7.95 (CAD)

This item is temporarily out of stock, but is available to purchase. Most orders will ship in approximately 10-14 days. If shipping will be longer than 14 days we will contact you with an expected date.
 

Description

Features:

All for Strings Theory Book 1 Violin <body> <p>Theory Workbooks 1 and 2 are correlated with the All for Strings method books and are suitable for classroom or individual use. Each page features exercises and games which encompass music fundamentals introduced in the method books. </p> <p>Students start by learning the piano keyboard to increase their understanding of the intervals. They also work with fingering chart exercises so that basic theory can be immediately applied to their instrument. In addition to drawing clefs, notes, key and time signatures, students learn about musical phrases and begin composing. Puzzles and musical math games are also included.</p> </body> </html> <br /> <!-- The preceding spaces are here because some category display formats will cause the products to cascade to the right when displaying product by category. This is caused by the table below being part of the teaser sentence if you have a blank or very short active-e description. These spaces will trick the teaser sentence into thinking that it has something to display sothat the table does not become part of the teaser sentence. You may need to adjust these spaces if you run into this issue.--> <br /> <span style="FONT-WEIGHT: bold">Table of Contents:</span><br /> <br /> <table borderwidth="0"> <tbody> <tr> <td><span style="FONT-WEIGHT: bold">Catalog:</span></td> <td>84VN</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Publisher:</span></td> <td>Kjos Music</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Composer:</span></td> <td>Anderson/frost</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Artist:</span></td> <td>{{ATTR_ARTIST}}</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Arranger:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Voicing:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Level:</span></td> <td>Student</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Pages:</span></td> <td>{{ATTR_PAGES}}</td> </tr> </tbody> </table></div> </div> <div class="full-description-wrapper"> <h2 class="title"><strong>Specifications</strong></h2> <div class="full-description"> <div class="product-attributes-wrap"> <p><label>Instrument: </label>Violin</p> <p><label>Level: </label>Student</p> </div> </div> </div> <div class="full-description-wrapper"> <h2 class="title"><strong>Reviews</strong></h2> <div class="full-description"> <div class="yotpo yotpo-main-widget" data-product-id="26422" data-name="All for Strings Theory Book 1 - Violin" data-url="https://www.tapestrymusic.com/p-7756-all-for-strings-theory-book-1-violin.aspx" data-image-url="https://cdn.tapestrymusic.com/product/large/7756.jpg?format=webp" data-description="Features: All for Strings Theory Book 1 Violin Theory Workbooks 1 and 2 are correlated with the All for Strings method books and are suitable for classroom or individual use. Each page features exercises and games which encompass music fundamentals introduced in the method books. Students start by learning the piano keyboard to increase their understanding of the intervals. They also work with fingering chart exercises so that basic theory can be immediately applied to their instrument. In addition to drawing clefs, notes, key and time signatures, students learn about musical phrases and begin composing. Puzzles and musical math games are also included. Table of Contents: Catalog: 84VN Publisher: Kjos Music Composer: Anderson/frost Artist: {{ATTR_ARTIST}} Arranger: Voicing: Level: Student Pages: {{ATTR_PAGES}} "></div> </div> </div> </div> </div><section class="home-section product-section"><style> .sirvrelated { max-height: 184.5px; width: auto !important; } </style><script> var ga4_products = []; var ga4_chunk; ga4_products.push( { 'item_id' : '7858_11306', 'item_name' : 'Kingsfold Flex Band', 'currency' : 'CAD', 'discount': 0.0000, 'index': 1, 'item_brand' : 'Eighth Note Publications', 'item_category' : 'Print Music', 'item_list_id': 'related_products', 'item_list_name': 'all for strings theory book 1 violin', 'item_variant' : 'David Marlatt 2 Flex Band 2020', 'price' : 50.0000, 'quantity' : 1 } , { 'item_id' : '11009_18202', 'item_name' : 'Bunny Ballads - Viola', 'currency' : 'CAD', 'discount': 0.0000, 'index': 2, 'item_brand' : 'Bunny Ballads', 'item_category' : 'Print Music', 'item_list_id': 'related_products', 'item_list_name': 'all for strings theory book 1 violin', 'item_variant' : 'Kathleen Spring', 'price' : 49.9500, 'quantity' : 1 } , { 'item_id' : '18622_40246', 'item_name' : 'Dingwall SP-1 4 String Bass Gloss Metallic Black', 'currency' : 'CAD', 'discount': 0.0000, 'index': 3, 'item_brand' : 'Dingwall', 'item_category' : 'Guitars, Amps & Accessories', 'item_list_id': 'related_products', 'item_list_name': 'all for strings theory book 1 violin', 'item_variant' : 'Black 5 String', 'price' : 2610.0000, 'quantity' : 1 } , { 'item_id' : '19211_43233', 'item_name' : 'Guild Surfliner Deluxe Glacier Blue Electric Guitar', 'currency' : 'CAD', 'discount': 0.0000, 'index': 4, 'item_brand' : 'Guild', 'item_category' : 'Guitars, Amps & Accessories', 'item_list_id': 'related_products', 'item_list_name': 'all for strings theory book 1 violin', 'item_variant' : 'Blue Solid Body Double Cut', 'price' : 1049.9900, 'quantity' : 1 } ) window.dataLayer.push({ ecommerce : null }); while (ga4_products.length) { ga4_chunk = ga4_products.splice(0, 20); window.dataLayer.push({ 'event' : 'view_item_list', 'ecommerce' : { items: ga4_chunk } }); } </script> <script> /* script.datalayer.xml.config */ var vortx = vortx || {}; vortx.dataLayer = vortx.dataLayer || {}; vortx.dataLayer.productImpressions = vortx.dataLayer.productImpressions || []; vortx.dataLayer.productDetails = vortx.dataLayer.productDetails || []; vortx.dataLayer.cartProducts = vortx.dataLayer.cartProducts || []; vortx.dataLayer.cartDetails = vortx.dataLayer.cartDetails || []; vortx.dataLayer.orderDetails = vortx.dataLayer.orderDetails || []; vortx.dataLayer.orderedProducts = vortx.dataLayer.orderedProducts || []; vortx.googleEnhancedEcommerce = vortx.googleEnhancedEcommerce || {}; $(document).ready(function () { }); </script> <div class="related-products other-products-wrap"> <h2 class="group-header related-items-header other-products-header">Related Products</h2> <div class="screen-reader-only">0 Total Related Products</div> <p class="related-teaser"> </p> <div role="list"> <div class="row list-unstyled related-item-row"> <div role="listitem" class="col-sm-3 col-sm-12 product-grid-item related-item" itemprop="isSimilarTo" itemscope="" itemtype="https://schema.org/Product"> <div class="grid-item-inner"><span id="RelatedProduct_7858-11306" itemprop="offers" itemscope="" itemtype="https://schema.org/Offer"><meta itemprop="price" content="0.0000"> <meta itemprop="priceCurrency" content="CAD"></span><link itemprop="itemCondition" href="https://schema.org/NewCondition"> <meta itemprop="sku" content="ae00-6175"> <meta itemprop="productID" content="7858"> <meta itemprop="image" content="https://cdn.tapestrymusic.com/product/large/7858.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp"><span itemprop="manufacturer" itemscope="" itemtype="https://schema.org/Organization"><meta itemprop="name" content="Eighth Note Publications"></span><meta itemprop="name" content="Kingsfold Flex Band"> <meta itemprop="description" content="<span style="FONT-WEIGHT: bold"><big>Features:</big></span><br /> <br /> This beautiful folk song has been used as the melody for several popular hymns including: I Heard the Voice of Jesus Say, O Sing a Song of Bethleheim, I Feel the Winds of God Today and several others. It is a beautiful work that seems to float along both melodically and harmonically. This arrangement is opened by a solo voice with a sense of a lone player on the top of a hill surrounded by mist. The tune is then played in full quartet voicing leading to other variations and rescorings. Ending, as it began, very peacefully and reflectively. <br> <br> <audio controls> <source src="https://www.enpmusic.com/sound/FB1415.mp3 " type="audio/ogg"> <source src="https://www.enpmusic.com/sound/FB1415.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio> Take a closer look <a href="https://www.enpmusic.com/pdf/FB1415.pdf" target="_blank">here!</a> <br /> <!-- The preceding spaces are here because some category display formats will cause the products to cascade to the right when displaying product by category. This is caused by the table below being part of the teaser sentence if you have a blank or very short active-e description. These spaces will trick the teaser sentence into thinking that it has something to display sothat the table does not become part of the teaser sentence. You may need to adjust these spaces if you run into this issue.--> <br /> <span style="FONT-WEIGHT: bold">Table of Contents:</span><br /> <br /> <table borderwidth="0"> <tbody> <tr> <td><span style="FONT-WEIGHT: bold">Catalog:</span></td> <td>FB1415</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Publisher:</span></td> <td>Eighth Note Publications</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Composer:</span></td> <td>Traditional English</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Artist:</span></td> <td>{{ATTR_ARTIST}}</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Arranger:</span></td> <td>David Marlatt</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Voicing:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Level:</span></td> <td>2 Flex Band</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Pages:</span></td> <td>{{ATTR_PAGES}}</td> </tr> </tbody> </table>"> <meta itemprop="url" content="https://www.tapestrymusic.com/p-7858-kingsfold-flex-band.aspx"><a href="/p-7858-kingsfold-flex-band.aspx" class="related-product-link grid-product-link"><div class="related-item-image-wrap grid-item-image-wrap"><img src="https://cdn.tapestrymusic.com/product/large/7858.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp" alt="Kingsfold Flex Band" class="grid-item-image img-responsive center-block related-item-image"></div> <div class="grid-item-name-wrap related-item-name-wrap">Kingsfold Flex Band</div></a></div> </div> <div role="listitem" class="col-sm-3 col-sm-12 product-grid-item related-item" itemprop="isSimilarTo" itemscope="" itemtype="https://schema.org/Product"> <div class="grid-item-inner"><span id="RelatedProduct_11009-18202" itemprop="offers" itemscope="" itemtype="https://schema.org/Offer"><meta itemprop="price" content="0.0000"> <meta itemprop="priceCurrency" content="CAD"></span><link itemprop="itemCondition" href="https://schema.org/NewCondition"> <meta itemprop="sku" content="ae00-9288"> <meta itemprop="productID" content="11009"> <meta itemprop="image" content="https://cdn.tapestrymusic.com/product/large/11009.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp"><span itemprop="manufacturer" itemscope="" itemtype="https://schema.org/Organization"><meta itemprop="name" content="Bunny Ballads"></span><meta itemprop="name" content="Bunny Ballads - Viola"> <meta itemprop="description" content="<span style="FONT-WEIGHT: bold"><big>Features:</big></span><br /> <br /> The very beginning stages of learning the viola are so important. Supporting the complete Suzuki Triangle, Bunny Ballads gives teachers, parents, and children a rewarding, fun, and pedagogically sound way to learn these important beginning skills. <br><br> <strong>Teachers</strong>, you will be able to extend the pre-twinkle time without boredom, giving you time to help the student build important life-long technical habits. <br><br> <strong>Parents</strong>, you will have an aid to make the pre-twinkle time both productive and fun. Your child will also have a nice keepsake from the beginning of their Suzuki journey. <br><br> <strong>Kids</strong>, you will enjoy the stories, songs and activities in Bunny Ballads. <br /> <!-- The preceding spaces are here because some category display formats will cause the products to cascade to the right when displaying product by category. This is caused by the table below being part of the teaser sentence if you have a blank or very short active-e description. These spaces will trick the teaser sentence into thinking that it has something to display sothat the table does not become part of the teaser sentence. You may need to adjust these spaces if you run into this issue.--> <br /> <span style="FONT-WEIGHT: bold">Table of Contents:</span><br /> <br /> <table borderwidth="0"> <tbody> <tr> <td><span style="FONT-WEIGHT: bold">Catalog:</span></td> <td>BBB-VA</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Publisher:</span></td> <td>Bunny Ballads</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Composer:</span></td> <td>Kathleen Spring</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Artist:</span></td> <td>{{ATTR_ARTIST}}</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Arranger:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Voicing:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Level:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Pages:</span></td> <td>{{ATTR_PAGES}}</td> </tr> </tbody> </table>"> <meta itemprop="url" content="https://www.tapestrymusic.com/p-11009-bunny-ballads-viola.aspx"><a href="/p-11009-bunny-ballads-viola.aspx" class="related-product-link grid-product-link"><div class="related-item-image-wrap grid-item-image-wrap"><img src="https://cdn.tapestrymusic.com/product/large/11009.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp" alt="Bunny Ballads - Viola" class="grid-item-image img-responsive center-block related-item-image"></div> <div class="grid-item-name-wrap related-item-name-wrap">Bunny Ballads - Viola</div></a></div> </div> <div class="clearfix visible-xs entity-product-extra-small-clear"></div> <div role="listitem" class="col-sm-3 col-sm-12 product-grid-item related-item" itemprop="isSimilarTo" itemscope="" itemtype="https://schema.org/Product"> <div class="grid-item-inner"><span id="RelatedProduct_18622-40246" itemprop="offers" itemscope="" itemtype="https://schema.org/Offer"><meta itemprop="price" content="0.0000"> <meta itemprop="priceCurrency" content="CAD"></span><link itemprop="itemCondition" href="https://schema.org/NewCondition"> <meta itemprop="sku" content="ae00-19049"> <meta itemprop="productID" content="18622"> <meta itemprop="image" content="https://cdn.tapestrymusic.com/product/large/18622.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp"><span itemprop="manufacturer" itemscope="" itemtype="https://schema.org/Organization"><meta itemprop="name" content="Dingwall"></span><meta itemprop="name" content="Dingwall SP-1 4 String Bass Gloss Metallic Black"> <meta itemprop="description" content="<HTML><p>The SP1 is the latest addition to our ever-expanding Ready To Play range and, as the model name suggests, draws much of its inspiration from the Custom Shop Super P. The initial brief was to come up with a more affordable instrument that combined elements of Leo Fender’s iconic blueprint with some of the innovative features for which Dingwall Guitars are now famous, including the customary multi-scale fingerboard. Select 4- or 5-strings, and from Metallic Black, Vintageburst, Dark Candy Green, and Ducati Pearl White finishes.<br></p><p>BODY &amp; NECK<br>The first thing we did was to make the body profile thinner, so you get a lightweight body, but with a more solid tone. The body is alder, while the bolt-on neck is a single piece of maple. The rosewood fingerboard is flawlessly finished, with smoothly rounded edges and 22 banjo-sized frets. <br><br>Aside from the multi-scale design, visually, the first thing you’ll notice that’s different about the SP1 is the scratchplate, which started out as a hand-painted design by Hugh Fisher. We’ve now digitized Hugh’s designs and had them UV printed. Each one is slightly transparent, so the colour of the body also influences the look of the pickguard. And because the pickguard material is transparent, we can print any colour.<br><br>“I don’t think it’s coincidental that the bassists who first recognized Dingwall’s potential were session guys who play and record bass day in, day out. These players need a versatile instrument that can deliver a studio-quality sound, be comfortable to play and remain straightforward to use. The Dingwall SP1 ticks all those boxes, and you can expect to see a lot more of them around in the future.” – Sheldon Dingwall<br><br>&nbsp;</p><p></p><p>PICKUPS &amp; ELECTRONICS<br>The SP1 is passive, so there are no batteries or EQ boost, but the quality of the tonewoods, alnico-loaded pickups, and the overall construction mean that there’s absolutely no need for them. The front control is volume, and the back is a master tone. Between these is our Quad-Tone Pickup Selector. In its first position, fully clockwise, this selects the front pickup alone; one click clockwise is the front plus the back pickup in series, then in parallel; and finally, the back pickup on its own.<br><br>We spent years refining the pickup design for the SP1, and the end result has been so successful that we’re now using the same concept in our Custom Shop Super P.” – Sheldon Dingwall.“</p></HTML> <br /> <!-- The preceding spaces are here because some category display formats will cause the products to cascade to the right when displaying product by category. This is caused by the table below being part of the teaser sentence if you have a blank or very short active-e description. These spaces will trick the teaser sentence into thinking that it has something to display sothat the table does not become part of the teaser sentence. You may need to adjust these spaces if you run into this issue.--> <br /> <table borderwidth="0"> <tbody> <tr> <td><span style="FONT-WEIGHT: bold">Model:</span></td> <td>SP1-4-BLK-R-SH</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Manufacturer:</span></td> <td>Dingwall</td> </tr> </tbody> </table>"> <meta itemprop="url" content="https://www.tapestrymusic.com/p-18622-dingwall-sp-1-4-string-bass-gloss-metallic-black.aspx"><a href="/p-18622-dingwall-sp-1-4-string-bass-gloss-metallic-black.aspx" class="related-product-link grid-product-link"><div class="related-item-image-wrap grid-item-image-wrap"><img src="https://cdn.tapestrymusic.com/product/large/18622.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp" alt="Dingwall SP-1 4 String Bass Gloss Metallic Black" class="grid-item-image img-responsive center-block related-item-image"></div> <div class="grid-item-name-wrap related-item-name-wrap">Dingwall SP-1 4 String Bass Gloss Metallic Black</div></a></div> </div> <div role="listitem" class="col-sm-3 col-sm-12 product-grid-item related-item" itemprop="isSimilarTo" itemscope="" itemtype="https://schema.org/Product"> <div class="grid-item-inner"><span id="RelatedProduct_19211-43233" itemprop="offers" itemscope="" itemtype="https://schema.org/Offer"><meta itemprop="price" content="0.0000"> <meta itemprop="priceCurrency" content="CAD"></span><link itemprop="itemCondition" href="https://schema.org/NewCondition"> <meta itemprop="sku" content="ae00-20181"> <meta itemprop="productID" content="19211"> <meta itemprop="image" content="https://cdn.tapestrymusic.com/product/large/19211.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp"><span itemprop="manufacturer" itemscope="" itemtype="https://schema.org/Organization"><meta itemprop="name" content="Guild"></span><meta itemprop="name" content="Guild Surfliner Deluxe Glacier Blue Electric Guitar"> <meta itemprop="description" content="<HTML><p>Inspired by the Pacific coastline, California-based Guild crafted the Surfliner® electric offset solid body guitar that delivers classic styling with modern features for the masses. <br><br> The Surfliner Deluxe elevates the Surfliner platform with all new appointments. Introducing Guild’s first-ever roasted maple neck, for a dark-aged appearance with added stiffness and stability. A bound Rosewood fingerboard with block inlays complements the satin finished C-shaped 25.5" scale neck providing a smooth playing experience. <br><br> Outfitted with a bridge HB-2 Humbucker with Alnico II magnets, the HB-2 was developed to recreate the rich, warm tone of vintage Guild humbuckers in a standard-size format. The HB-2 is paired perfectly with the chiming single-coil tones of the two DeArmond Aerosonic middle and neck pickups. The Surfliner Deluxe debuts a classic 5-way blade switch. This instantly recognizable pickup switching offers quick access from rhythm to solo tones at the flick of a switch. <br><br> The new Guild Floating Vibrato Tailpiece (GFVT), developed for the Surfliner Deluxe, expands the Surfliner platform to new playing styles, enabling a diverse array of vibrato effects, from subtle flutters to deep swells. The GFVT features an embossed "G" for classic Guild DNA and is equipped with a nylon insert and an easily accessible tension screw for ultimate control of bar tension. <br><br> Built with a lightweight Poplar solid body, the new Surfliner Deluxe features a gloss finish and matching headstock. It's available in Glacier Blue Metallic, Scarlett Red Metallic, Evergreen Metallic, Rose Quartz Metallic, and Black Metallic finishes. <br><br> </p><ul><li>Roasted Maple Neck with Bound Rosewood Fingerboard and Block Inlays </li><li>HSS Pickup Configuration Featuring DeArmond Aerosonic Single Coil and Guild HB-2 Humbucker Pickups </li><li>Traditional 5-way Blade Switch </li><li>New Guild Floating Vibrato Tailpiece </li><li>Solid Poplar Body with Vintage-Inspired Offset Appeal </li><li>Available in Glacier Blue Metallic, Scarlett Red Metallic, Evergreen Metallic, Rose Quartz Metallic and Black Metallic Finishes with Matching Headstock</li></ul></HTML> <br /> <!-- The preceding spaces are here because some category display formats will cause the products to cascade to the right when displaying product by category. This is caused by the table below being part of the teaser sentence if you have a blank or very short active-e description. These spaces will trick the teaser sentence into thinking that it has something to display sothat the table does not become part of the teaser sentence. You may need to adjust these spaces if you run into this issue.--> <br /> <table borderwidth="0"> <tbody> <tr> <td><span style="FONT-WEIGHT: bold">Model:</span></td> <td>SURFLINER-DLX-GBM</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Manufacturer:</span></td> <td>Guild</td> </tr> </tbody> </table>"> <meta itemprop="url" content="https://www.tapestrymusic.com/p-19211-guild-surfliner-deluxe-glacier-blue-electric-guitar.aspx"><a href="/p-19211-guild-surfliner-deluxe-glacier-blue-electric-guitar.aspx" class="related-product-link grid-product-link"><div class="related-item-image-wrap grid-item-image-wrap"><img src="https://cdn.tapestrymusic.com/product/large/19211.jpg?crop.type=trim&w=290&h=290&canvas.width=300&canvas.height=300&format=webp" alt="Guild Surfliner Deluxe Glacier Blue Electric Guitar" class="grid-item-image img-responsive center-block related-item-image"></div> <div class="grid-item-name-wrap related-item-name-wrap">Guild Surfliner Deluxe Glacier Blue Electric Guitar</div></a></div> </div> <div class="clearfix visible-xs entity-product-extra-small-clear"></div> </div> </div> </div></section><section class="container"><div class="klevu-recs" id="k-8dc2ce60-ca0f-4591-9386-bb1754e38ceb"></div></section><section class="container"><div class="klevu-recs" id="k-832dd952-863d-4354-bdcf-f9cf950aa030"></div></section><section class="container"><div class="klevu-recs" id="k-ad0faf23-2224-454a-86da-7e94eb1d3fe5"></div></section><script> /* script.datalayer.xml.config */ var vortx = vortx || {}; vortx.dataLayer = vortx.dataLayer || {}; vortx.dataLayer.productImpressions = vortx.dataLayer.productImpressions || []; vortx.dataLayer.productDetails = vortx.dataLayer.productDetails || []; vortx.dataLayer.cartProducts = vortx.dataLayer.cartProducts || []; vortx.dataLayer.cartDetails = vortx.dataLayer.cartDetails || []; vortx.dataLayer.orderDetails = vortx.dataLayer.orderDetails || []; vortx.dataLayer.orderedProducts = vortx.dataLayer.orderedProducts || []; vortx.googleEnhancedEcommerce = vortx.googleEnhancedEcommerce || {}; $(document).ready(function () { }); </script> <script> (function() { var sirvBase = 'https://cdn.tapestrymusic.com/product/large/'; var sirvParams = '?w=300&h=300&scale.option=fill&format=webp'; function fixYotpoImages() { document.querySelectorAll('.yotpo img[src]').forEach(function(img) { if (img.src.indexOf('cdn.tapestrymusic.com') !== -1) return; var link = img.closest('a[href]'); if (!link) return; var match = link.href.match(/\/p-(\d+)-/); if (!match) return; img.src = sirvBase + match[1] + '.jpg' + sirvParams; img.removeAttribute('srcset'); }); } new MutationObserver(fixYotpoImages).observe( document.body || document.documentElement, { childList: true, subtree: true } ); })(); </script><script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "Kjos Music All for Strings Theory Book 1 - Violin", "image": [ "https://cdn.tapestrymusic.com/product/large/7756.jpg?format=webp" ], "description": "<span style="FONT-WEIGHT: bold"><big>Features:</big></span><br /> <br /> <html> <head> <title>All for Strings Theory Book 1 Violin <body> <p>Theory Workbooks 1 and 2 are correlated with the All for Strings method books and are suitable for classroom or individual use. Each page features exercises and games which encompass music fundamentals introduced in the method books. </p> <p>Students start by learning the piano keyboard to increase their understanding of the intervals. They also work with fingering chart exercises so that basic theory can be immediately applied to their instrument. In addition to drawing clefs, notes, key and time signatures, students learn about musical phrases and begin composing. Puzzles and musical math games are also included.</p> </body> </html> <br /> <!-- The preceding spaces are here because some category display formats will cause the products to cascade to the right when displaying product by category. This is caused by the table below being part of the teaser sentence if you have a blank or very short active-e description. These spaces will trick the teaser sentence into thinking that it has something to display sothat the table does not become part of the teaser sentence. You may need to adjust these spaces if you run into this issue.--> <br /> <span style="FONT-WEIGHT: bold">Table of Contents:</span><br /> <br /> <table borderwidth="0"> <tbody> <tr> <td><span style="FONT-WEIGHT: bold">Catalog:</span></td> <td>84VN</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Publisher:</span></td> <td>Kjos Music</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Composer:</span></td> <td>Anderson/frost</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Artist:</span></td> <td>{{ATTR_ARTIST}}</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Arranger:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Voicing:</span></td> <td></td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Level:</span></td> <td>Student</td> </tr> <tr> <td><span style="FONT-WEIGHT: bold">Pages:</span></td> <td>{{ATTR_PAGES}}</td> </tr> </tbody> </table>", "sku": "ae00-6073", "mpn": "84VN", "brand": { "@type": "Brand", "name": "Kjos Music" }, "offers": [ { "@type": "Offer", "name": "Kjos Music All for Strings Theory Book 1 - Violin Anderson/frost Student 0", "url": "https://www.tapestrymusic.com/p-7756-all-for-strings-theory-book-1-violin.aspx", "image": ["https://cdn.tapestrymusic.com/product/large/7756.jpg?format=webp"], "priceCurrency": "CAD", "price": "7.9500", "sku":"ae00-6073^84VN", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "priceValidUntil": "5/20/2026", "gtin": "9780849732461" } ] } </script></div> <!--End of Xmlpackage 'product.simpleproduct.xml.config' --> <!-- CONTENTS END --> </div> </div> </div> <div class="why-tapestry"> <div class="container"> <div class="row"> <div class="col-md-4"> <h3 style="margin-top:0;">Why Tapestry Music?</h3> <p>Tapestry Music has been a BC family owned business since 1996.  With 3 locations in White Rock, Vancouver and Victoria, Tapestry offers in store & online shopping, music lessons and repair services. As a music education specialist, Tapestry is respected and recommended by music educators across Canada.</p> </div> <div class="col-md-8"> <div class="row"> <div class="col-md-4"> <div class="guarantee-icon"><em class="fas fa-comments-dollar"></em></div> <div class="wwd-heading"><strong>Best Price</strong> <p>Guarantee</p> </div> <p>Tapestry will match the selling price of any identical product from any Canadian retailer that has that item in-stock, up until 30 days after purchase.</p> </div> <div class="col-md-4"> <div class="guarantee-icon"><em class="fas fa-shipping-fast"></em></div> <div class="wwd-heading"><strong>FREE SHIPPING</strong> <p>On  orders over $149</p> </div> <p>We don't charge shipping or handling on orders over $149 (before tax and shipping calculation). There are a few reasonable exceptions like very large or heavy items as well as shipping to remote areas.</p> </div> <div class="col-md-4"> <div class="guarantee-icon"><em class="fas fa-exchange-alt"></em></div> <div class="wwd-heading"><strong>30-Day</strong> <p>Returns</p> </div> <p>Exchange or return for full refund items purchased within 30 days if in unused new condition and in original packaging.</p> </div> </div> </div> </div> </div> </div> <div class="footer-wrapper"> <div class="container"> <div class="footer-row"> <div class="hours-loc-pos"> <h2>Locations & Hours </h2> <div class="row baseline-margin"> <div class="col-md-4"> <h4>White Rock & Online Orders (604) 538-0906</h4> <p>Mon to Fri  9:30 AM - 5:30 PM<br /> Saturdays  10 AM - 5 PM<br /> <br /> </p> <p><iframe frameborder="0" height="300" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2616.1729115797016!2d-122.80371438431965!3d49.02631827930431!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x5485c37922f01ffd%3A0xa6cc0198c5cbbbe8!2s1335+Johnston+Rd%2C+White+Rock%2C+BC+V4B+3Z3%2C+Canada!5e0!3m2!1sen!2sus!4v1545240206731" width="600" style="border-width: 0px; border-style: initial;"></iframe><br /> </p> </div> <div class="col-md-4"> <h4>Vancouver <br /> (604) 736-3036</h4> <p>Mon to Sat  10 AM - 6 PM<br /> Sundays  11 AM - 5 PM</p> <iframe frameborder="0" height="300" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2603.8155033661437!2d-123.10388862343596!3d49.260942771389615!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x548673e22a50433f%3A0xd3695af53f791869!2s2705%20Main%20St%2C%20Vancouver%2C%20BC%20V5T%203E9!5e0!3m2!1sen!2sca!4v1748896336348!5m2!1sen!2sca" style="border:0;" width="600"></iframe> </div> <div class="col-md-4"> <h4>Victoria <br /> (250) 590-0752</h4> <p>Mon to Sat  10 AM - 6 PM<br /> Sundays  12 PM - 4 PM</p> <iframe frameborder="0" height="300" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2647.3373059102914!2d-123.36989692348237!3d48.43086567127743!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x548f7483a233fd57%3A0x6d7662a15da2f693!2s1824%20Government%20St%2C%20Victoria%2C%20BC%20V8T%204N5!5e0!3m2!1sen!2sca!4v1706393289791!5m2!1sen!2sca" style="border:0;" width="600"></iframe> </div> </div> </div> <div style="text-align: center;"> <form method="POST" action="https://tapestrymusic.activehosted.com/proc.php" id="_form_14_" class="_form _form_14 _inline-form _inline-style _dark" data-styles-version="5"> <input type="hidden" name="u" value="14" /> <input type="hidden" name="f" value="14" /> <input type="hidden" name="s" /> <input type="hidden" name="c" value="0" /> <input type="hidden" name="m" value="0" /> <input type="hidden" name="act" value="sub" /> <input type="hidden" name="v" value="2" /> <input type="hidden" name="or" value="f7b909eea844a441aeced8dc22234aac" /> <div class="_form-content"> <div class="_form_element _x88839845 _inline-style _clear"> <div class="_html-code"> <p class="h4"> Sign up for our newsletter to get insider deals and new product information. </p> </div> </div> <div class="row"> <div class="col-md-3"> </div> <div class="col-md-6"> <div class="_form_element _x93203614 _inline-style"> <div class="_field-wrapper"> <input class="form-control" type="text" id="fullname" name="fullname" placeholder="Type your name" /> </div> </div> <div class="_form_element _x01792967 _inline-style"> <div class="_field-wrapper"> <input class="form-control" type="text" id="email" name="email" placeholder="Type your email" /> </div> </div> </div> <div class="col-md-3"> </div> </div> <div class="_form_element _x79912005 _inline-style center-block" style="width:300px;"> <label for="ls" class="_form-label"> Please verify your request* </label> <div class="g-recaptcha" data-sitekey="6LcwIw8TAAAAACP1ysM08EhCgzd6q5JAOUR1a0Go"> </div> </div> <div class="_button-wrapper _inline-style"> <button class="btn btn-default" id="_form_14_submit" type="submit"> Submit </button> </div> <div class="_clear-element"> </div> </div> <div class="_form-thank-you" style="display:none;"> </div> </form> </div> <script type="text/javascript"> window.cfields = []; window._show_thank_you = function(id, message, trackcmp_url, email) { var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you'); form.querySelector('._form-content').style.display = 'none'; thank_you.innerHTML = message; thank_you.style.display = 'block'; const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias; var visitorObject = window[vgoAlias]; if (email && typeof visitorObject !== 'undefined') { visitorObject('setEmail', email); visitorObject('update'); } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) { // Site tracking URL to use after inline form submission. _load_script(trackcmp_url); } if (typeof window._form_callback !== 'undefined') window._form_callback(id); }; window._show_unsubscribe = function(id, message, trackcmp_url, email) { var form = document.getElementById('_form_' + id + '_'), unsub = form.querySelector('._form-thank-you'); var branding = form.querySelector('._form-branding'); if (branding) { branding.style.display = 'none'; } form.querySelector('._form-content').style.display = 'none'; unsub.style.display = 'block'; form.insertAdjacentHTML('afterend', message) const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias; var visitorObject = window[vgoAlias]; if (email && typeof visitorObject !== 'undefined') { visitorObject('setEmail', email); visitorObject('update'); } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) { // Site tracking URL to use after inline form submission. _load_script(trackcmp_url); } if (typeof window._form_callback !== 'undefined') window._form_callback(id); }; window._show_error = function(id, message, html) { var form = document.getElementById('_form_' + id + '_'), err = document.createElement('div'), button = form.querySelector('button'), old_error = form.querySelector('._form_error'); if (old_error) old_error.parentNode.removeChild(old_error); err.innerHTML = message; err.className = '_error-inner _form_error _no_arrow'; var wrapper = document.createElement('div'); wrapper.className = '_form-inner'; wrapper.appendChild(err); button.parentNode.insertBefore(wrapper, button); var submitButton = form.querySelector('[id^="_form"][id$="_submit"]'); submitButton.disabled = false; submitButton.classList.remove('processing'); if (html) { var div = document.createElement('div'); div.className = '_error-html'; div.innerHTML = html; err.appendChild(div); } }; window._show_pc_confirmation = function(id, header, detail, show, email) { var form = document.getElementById('_form_' + id + '_'), pc_confirmation = form.querySelector('._form-pc-confirmation'); var branding = form.querySelector('._form-branding'); if (branding) { branding.style.display = 'none'; } if (pc_confirmation.style.display === 'none') { form.querySelector('._form-content').style.display = 'none'; pc_confirmation.innerHTML = "<div class='_form-title'>" + header + "</div>" + "<br><p>" + detail + "</p>" + "<button class='_submit' id='hideButton'>Manage preferences</button>"; pc_confirmation.style.display = 'block'; } else { form.querySelector('._form-content').style.display = 'inline'; pc_confirmation.style.display = 'none'; } var hideButton = document.getElementById('hideButton'); // Add event listener to the button hideButton.addEventListener('click', function() { var submitButton = document.querySelector('#_form_14_submit'); submitButton.disabled = false; submitButton.classList.remove('processing'); window.location.href = window.location.href; }); const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias; var visitorObject = window[vgoAlias]; if (email && typeof visitorObject !== 'undefined') { visitorObject('setEmail', email); visitorObject('update'); } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) { // Site tracking URL to use after inline form submission. _load_script(trackcmp_url); } if (typeof window._form_callback !== 'undefined') window._form_callback(id); }; window._load_script = function(url, callback, isSubmit) { var head = document.querySelector('head'), script = document.createElement('script'), r = false; var submitButton = document.querySelector('#_form_14_submit'); script.charset = 'utf-8'; script.src = url; if (callback) { script.onload = script.onreadystatechange = function() { if (!r && (!this.readyState || this.readyState == 'complete')) { r = true; callback(); } }; } script.onerror = function() { if (isSubmit) { if (script.src.length > 10000) { _show_error("14", "Sorry, your submission failed. Please shorten your responses and try again."); } else { _show_error("14", "Sorry, your submission failed. Please try again."); } submitButton.disabled = false; submitButton.classList.remove('processing'); } } head.appendChild(script); }; (function() { if (window.location.search.search("excludeform") !== -1) return false; var getCookie = function(name) { var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)')); return match ? match[2] : null; } var setCookie = function(name, value) { var now = new Date(); var time = now.getTime(); var expireTime = time + 1000 * 60 * 60 * 24 * 365; now.setTime(expireTime); document.cookie = name + '=' + value + '; expires=' + now + ';path=/; Secure; SameSite=Lax;'; } var addEvent = function(element, event, func) { if (element.addEventListener) { element.addEventListener(event, func); } else { var oldFunc = element['on' + event]; element['on' + event] = function() { oldFunc.apply(this, arguments); func.apply(this, arguments); }; } } var _removed = false; var form_to_submit = document.getElementById('_form_14_'); var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false; var getUrlParam = function(name) { if (name.toLowerCase() !== 'email') { var params = new URLSearchParams(window.location.search); return params.get(name) || false; } // email is a special case because a plus is valid in the email address var qString = window.location.search; if (!qString) { return false; } var parameters = qString.substr(1).split('&'); for (var i = 0; i < parameters.length; i++) { var parameter = parameters[i].split('='); if (parameter[0].toLowerCase() === 'email') { return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]); } } return false; }; var acctDateFormat = "%m/%d/%Y"; var getNormalizedDate = function(date, acctFormat) { var decodedDate = decodeURIComponent(date); if (acctFormat && acctFormat.match(/(%d|%e).*%m/gi) !== null) { return decodedDate.replace(/(\d{2}).*(\d{2}).*(\d{4})/g, '$3-$2-$1'); } else if (Date.parse(decodedDate)) { var dateObj = new Date(decodedDate); var year = dateObj.getFullYear(); var month = dateObj.getMonth() + 1; var day = dateObj.getDate(); return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`; } return false; }; var getNormalizedTime = function(time) { var hour, minutes; var decodedTime = decodeURIComponent(time); var timeParts = Array.from(decodedTime.matchAll(/(\d{1,2}):(\d{1,2})\W*([AaPp][Mm])?/gm))[0]; if (timeParts[3]) { // 12 hour format var isPM = timeParts[3].toLowerCase() === 'pm'; if (isPM) { hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`; } else { hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1]; } } else { // 24 hour format hour = timeParts[1]; } var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour; var minutes = timeParts[2]; return `${normalizedHour}:${minutes}`; }; for (var i = 0; i < allInputs.length; i++) { var regexStr = "field\\[(\\d+)\\]"; var results = new RegExp(regexStr).exec(allInputs[i].name); if (results != undefined) { allInputs[i].dataset.name = allInputs[i].name.match(/\[time\]$/) ? `${window.cfields[results[1]]}_time` : window.cfields[results[1]]; } else { allInputs[i].dataset.name = allInputs[i].name; } var fieldVal = getUrlParam(allInputs[i].dataset.name); if (fieldVal) { if (allInputs[i].dataset.autofill === "false") { continue; } if (allInputs[i].type == "radio" || allInputs[i].type == "checkbox") { if (allInputs[i].value == fieldVal) { allInputs[i].checked = true; } } else if (allInputs[i].type == "date") { allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat); } else if (allInputs[i].type == "time") { allInputs[i].value = getNormalizedTime(fieldVal); } else { allInputs[i].value = fieldVal; } } } var remove_tooltips = function() { for (var i = 0; i < tooltips.length; i++) { tooltips[i].tip.parentNode.removeChild(tooltips[i].tip); } tooltips = []; }; var remove_tooltip = function(elem) { for (var i = 0; i < tooltips.length; i++) { if (tooltips[i].elem === elem) { tooltips[i].tip.parentNode.removeChild(tooltips[i].tip); tooltips.splice(i, 1); return; } } }; var create_tooltip = function(elem, text) { var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {}; if (elem.type != 'radio' && elem.type != 'checkbox') { tooltip.className = '_error'; arrow.className = '_error-arrow'; inner.className = '_error-inner'; inner.innerHTML = text; tooltip.appendChild(arrow); tooltip.appendChild(inner); elem.parentNode.appendChild(tooltip); } else { tooltip.className = '_error-inner _no_arrow'; tooltip.innerHTML = text; elem.parentNode.insertBefore(tooltip, elem); new_tooltip.no_arrow = true; } new_tooltip.tip = tooltip; new_tooltip.elem = elem; tooltips.push(new_tooltip); return new_tooltip; }; var resize_tooltip = function(tooltip) { var rect = tooltip.elem.getBoundingClientRect(); var doc = document.documentElement, scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)); if (scrollPosition < 40) { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _below'; } else { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _above'; } }; var resize_tooltips = function() { if (_removed) return; for (var i = 0; i < tooltips.length; i++) { if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]); } }; var validate_field = function(elem, remove) { var tooltip = null, value = elem.value, no_error = true; remove ? remove_tooltip(elem) : false; if (elem.type != 'checkbox') elem.className = elem.className.replace(/ ?_has_error ?/g, ''); if (elem.getAttribute('required') !== null) { if (elem.type == 'radio' || (elem.type == 'checkbox' && /any/.test(elem.className))) { var elems = form_to_submit.elements[elem.name]; if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) { no_error = elem.checked; } else { no_error = false; for (var i = 0; i < elems.length; i++) { if (elems[i].checked) no_error = true; } } if (!no_error) { tooltip = create_tooltip(elem, "Please select an option."); } } else if (elem.type =='checkbox') { var elems = form_to_submit.elements[elem.name], found = false, err = []; no_error = true; for (var i = 0; i < elems.length; i++) { if (elems[i].getAttribute('required') === null) continue; if (!found && elems[i] !== elem) return true; found = true; elems[i].className = elems[i].className.replace(/ ?_has_error ?/g, ''); if (!elems[i].checked) { no_error = false; elems[i].className = elems[i].className + ' _has_error'; err.push("Checking %s is required".replace("%s", elems[i].value)); } } if (!no_error) { tooltip = create_tooltip(elem, err.join('<br/>')); } } else if (elem.tagName == 'SELECT') { var selected = true; if (elem.multiple) { selected = false; for (var i = 0; i < elem.options.length; i++) { if (elem.options[i].selected) { selected = true; break; } } } else { for (var i = 0; i < elem.options.length; i++) { if (elem.options[i].selected && (!elem.options[i].value || (elem.options[i].value.match(/\n/g))) ) { selected = false; } } } if (!selected) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Please select an option."); } } else if (value === undefined || value === null || value === '') { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "This field is required."); } } if (no_error && (elem.id == 'field[]' || elem.id == 'ca[11][v]')) { if (elem.className.includes('phone-input-error')) { elem.className = elem.className + ' _has_error'; no_error = false; } } if (no_error && elem.name == 'email') { if (!value.match(/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i)) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Enter a valid email address."); } } if (no_error && /date_field/.test(elem.className)) { if (!value.match(/^\d\d\d\d-\d\d-\d\d$/)) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Enter a valid date."); } } tooltip ? resize_tooltip(tooltip) : false; return no_error; }; var needs_validate = function(el) { if(el.getAttribute('required') !== null){ return true } if(el.name === 'email' && el.value !== ""){ return true } if((el.id == 'field[]' || el.id == 'ca[11][v]') && el.className.includes('phone-input-error')){ return true } return false }; var validate_form = function(e) { var err = form_to_submit.querySelector('._form_error'), no_error = true; if (!submitted) { submitted = true; for (var i = 0, len = allInputs.length; i < len; i++) { var input = allInputs[i]; if (needs_validate(input)) { if (input.type == 'tel') { addEvent(input, 'blur', function() { this.value = this.value.trim(); validate_field(this, true); }); } if (input.type == 'text' || input.type == 'number' || input.type == 'time') { addEvent(input, 'blur', function() { this.value = this.value.trim(); validate_field(this, true); }); addEvent(input, 'input', function() { validate_field(this, true); }); } else if (input.type == 'radio' || input.type == 'checkbox') { (function(el) { var radios = form_to_submit.elements[el.name]; for (var i = 0; i < radios.length; i++) { addEvent(radios[i], 'click', function() { validate_field(el, true); }); } })(input); } else if (input.tagName == 'SELECT') { addEvent(input, 'change', function() { validate_field(this, true); }); } else if (input.type == 'textarea'){ addEvent(input, 'input', function() { validate_field(this, true); }); } } } } remove_tooltips(); for (var i = 0, len = allInputs.length; i < len; i++) { var elem = allInputs[i]; if (needs_validate(elem)) { if (elem.tagName.toLowerCase() !== "select") { elem.value = elem.value.trim(); } validate_field(elem) ? true : no_error = false; } } if (!no_error && e) { e.preventDefault(); } resize_tooltips(); return no_error; }; addEvent(window, 'resize', resize_tooltips); addEvent(window, 'scroll', resize_tooltips); var hidePhoneInputError = function(inputId) { var errorMessage = document.getElementById("error-msg-" + inputId); var input = document.getElementById(inputId); errorMessage.classList.remove("phone-error"); errorMessage.classList.add("phone-error-hidden"); input.classList.remove("phone-input-error"); }; var initializePhoneInput = function(input, defaultCountry) { return window.intlTelInput(input, { utilsScript: "https://unpkg.com/intl-tel-input@17.0.18/build/js/utils.js", autoHideDialCode: false, separateDialCode: true, initialCountry: defaultCountry, preferredCountries: [] }); } var setPhoneInputEventListeners = function(inputId, input, iti) { input.addEventListener('blur', function() { var errorMessage = document.getElementById("error-msg-" + inputId); if (input.value.trim()) { if (iti.isValidNumber()) { iti.setNumber(iti.getNumber()); if (errorMessage.classList.contains("phone-error")){ hidePhoneInputError(inputId); } } else { showPhoneInputError(inputId) } } else { if (errorMessage.classList.contains("phone-error")){ hidePhoneInputError(inputId); } } }); input.addEventListener("countrychange", function() { iti.setNumber(''); }); input.addEventListener("keydown", function(e) { var charCode = (e.which) ? e.which : e.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode !== 8) { e.preventDefault(); } }); }; var showPhoneInputError = function(inputId) { var errorMessage = document.getElementById("error-msg-" + inputId); var input = document.getElementById(inputId); errorMessage.classList.add("phone-error"); errorMessage.classList.remove("phone-error-hidden"); input.classList.add("phone-input-error"); }; window['recaptcha_callback'] = function() { // Get all recaptchas in the DOM (there may be more than one form on the page). var recaptchas = document.getElementsByClassName("g-recaptcha"); for (var i in recaptchas) { // Set the recaptcha element ID, so the recaptcha can be applied to each element. var recaptcha_id = "recaptcha_" + i; recaptchas[i].id = recaptcha_id; var el = document.getElementById(recaptcha_id); if (el != null) { var sitekey = el.getAttribute("data-sitekey"); var stoken = el.getAttribute("data-stoken"); grecaptcha.render(recaptcha_id, {"sitekey":sitekey,"stoken":stoken}); } } }; //_load_script("https://www.google.com/recaptcha/api.js?onload=recaptcha_callback&render=explicit"); var _form_serialize = function(form){if(!form||form.nodeName!=="FORM"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===""){continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"tel":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(" ")+encodeURIComponent(form.elements[i].value));break;case"text":case"number":case"date":case"time":case"hidden":case"password":case"button":case"reset":case"submit":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"checkbox":case"radio":if(form.elements[i].checked){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value))}break;case"file":break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"select-multiple":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break}}return q.join("&")}; const formSupportsPost = false; var form_submit = function(e) { e.preventDefault(); if (validate_form()) { // use this trick to get the submit button & disable it using plain javascript var submitButton = e.target.querySelector('#_form_14_submit'); submitButton.disabled = true; submitButton.classList.add('processing'); var serialized = _form_serialize( document.getElementById('_form_14_') ).replace(/%0A/g, '\\n'); var err = form_to_submit.querySelector('._form_error'); err ? err.parentNode.removeChild(err) : false; async function submitForm() { var formData = new FormData(); const searchParams = new URLSearchParams(serialized); searchParams.forEach((value, key) => { if (key !== 'hideButton') { formData.append(key, value); } //formData.append(key, value); }); let request = { headers: { "Accept": "application/json" }, body: formData, method: "POST" }; let pageUrlParams = new URLSearchParams(window.location.search); if (pageUrlParams.has('t')) { request.headers.Authorization = 'Bearer ' + pageUrlParams.get('t'); } const response = await fetch('https://tapestrymusic.activehosted.com/proc.php?jsonp=true', request); return response.json(); } if (formSupportsPost) { submitForm().then((data) => { eval(data.js); }); } else { _load_script('https://tapestrymusic.activehosted.com/proc.php?' + serialized + '&jsonp=true', null, true); } } return false; }; addEvent(form_to_submit, 'submit', form_submit); })(); </script> <div class="clearfix"></div> </div> </div> </div> <footer> <section class="footer-wrapper" id="footer"> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="content-wrapper"> <div class="social-wrapper"> <p class="footer-desc footer-fonts-style display-4">Social</p> <div class="social-wrap"> <div class="soc-item"><a href="https://www.facebook.com/tapestrymusicstore" target="_blank"><em class="footer-iconfont socicon-facebook socicon fab fa-facebook-f"></em> </a></div> <div class="soc-item"><a href="https://www.instagram.com/tapestrymusicstore" target="_blank"><em class="footer-iconfont socicon-twitter socicon fa-brands fab fa-instagram"></em> </a></div> <div class="soc-item"><a href="https://x.com/tapestrymusic" target="_blank"><em class="footer-iconfont socicon-twitter socicon fa-brands fab fa-x-twitter"></em> </a></div> <div class="soc-item"><a href="https://www.youtube.com/@tapestrymusicshop" target="_blank"><em class="footer-iconfont socicon-youtube socicon fa-brands fab fa-youtube"></em> </a></div> </div> </div> </div> </div> <div class="col-md-12"> <div class="border-wrap"> </div> </div> </div> <div class="row items-wrapper"> <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3 card"> <div class="text-wrapper"> <p class="footer-logo footer-fonts-style display-4"><a href="/"><img alt="Tapestry Music" class="img-responsive logo-main-image" src="https://cdn.tapestrymusic.com/logos/tapestry-logo-light-transparent.svg" style="max-width: 248px; padding: 0.5rem 0;" /></a></p> <p class="footer-desc footer-fonts-style display-4"><strong>Tapestry Music</strong></p> <p class="footer-text footer-fonts-style display-4"><strong><a href="tel:1-888-347-7480">Online Orders:</a></strong><a href="tel:1-888-347-7480"> 1-</a><a href="tel:1-888-347-7480">(888) 347-7480</a></p> <p class="footer-text footer-fonts-style display-4"><a href="tel:1-604-538-0906"><strong>White Rock: </strong>(604) 538-0906</a></p> <p class="footer-text footer-fonts-style display-4"><a href="tel:1-604-736-3036"><strong>Vancouver: </strong>(604) 736-3036</a></p> <p class="footer-text footer-fonts-style display-4"><a href="tel:1-250-590-0752"><strong>Victoria: </strong>(250) 590-0752</a></p> <p class="footer-text footer-fonts-style display-4">Tapestry Music empowers every musical journey with a deep commitment to community, expertise, and passion. We foster growth and connection through personalized service, comprehensive education, and a shared love for music, ensuring that every musician feels supported, inspired, and equipped to pursue their musical dreams.</p> <div class="footer-section-btn"><a class="btn btn-primary-outline display-4" href="/t-contact.aspx">Contact Us</a></div> </div> </div> <div class="col-xs-12 col-sm-4 col-md-2 col-lg-2 card"> <div class="list-wrapper"> <p class="footer-desc footer-fonts-style display-4">Customer Service</p> <ul class="list footer-fonts-style display-4"> <li class="item-wrap"><a href="/t-contact.aspx" rel="nofollow">Contact Us</a></li> <li class="item-wrap"><a href="/account.aspx#OrderHistory" rel="nofollow">Order Tracking</a></li> <li class="item-wrap"><a data-toggle="modal" href="#miniwish-modal" rel="nofollow">Wishlist</a></li> <li class="item-wrap"><a href="/account.aspx" rel="nofollow">Your Account</a></li> <li class="item-wrap"><a href="/account.aspx#OrderHistory" rel="nofollow">Orders</a></li> <li class="item-wrap"><a href="/aepostpayment.aspx" rel="nofollow">Make an Account Payment</a></li> <li class="item-wrap"><a href="/aemanagecc" rel="nofollow">Manage Credit Cards</a></li> <li class="item-wrap"><a href="http://www.tapestrymusic.com/t-25-point-instrument-inspection.aspx">25 Point Instrument Inspection</a></li> </ul> </div> </div> <div class="col-xs-12 col-sm-4 col-md-2 col-lg-2 card"> <div class="list-wrapper"> <p class="footer-desc footer-fonts-style display-4">Store Policies & Info</p> <ul class="list footer-fonts-style display-4"> <li class="item-wrap"><a href="/t-shipping-policy.aspx" rel="nofollow">Shipping</a></li> <li class="item-wrap"><a href="/t-refund-policy.aspx" rel="nofollow">Returns</a></li> <li class="item-wrap"><a href="/t-privacy.aspx" rel="nofollow">Privacy Policy</a></li> <li class="item-wrap"><a href="/t-termsconditions.aspx" rel="nofollow">Terms</a></li> <li class="item-wrap"><a href="https://www.tapestrymusic.com/images/document/2025RentalTermsandConditions.pdf" rel="nofollow" target="_blank">Rental Agreement Terms & Conditions</a></li> <li class="item-wrap"><a href="https://www.tapestrymusic.com/images/document/2025TapestryMusictermsandConditionsMandarin.pdf" rel="nofollow"> </a><a href="https://www.tapestrymusic.com/images/document/2025TapestryMusictermsandConditionsMandarin.pdf">Rental Agreement Terms & Conditions (Mandarin)</a></li> <li class="item-wrap"><a href="https://www.tapestrymusic.com/t-financing.aspx">Affirm Financing</a></li> <li class="item-wrap"><a href="https://www.tapestrymusic.com/t-promotion-exclusions.aspx">Promotion Exclusions</a></li> <li class="item-wrap"><a href="/t-dataretentionpolicy.aspx" rel="nofollow">Data Retention</a></li> </ul> </div> </div> <div class="col-xs-12 col-sm-4 col-md-2 col-lg-2 card"> <div class="list-wrapper"> <p class="footer-desc footer-fonts-style display-4">Helpful Links</p> <ul class="list footer-fonts-style display-4"> <li class="item-wrap"><a class="text-info" href="/c-422-deals-clearance.aspx">Deals & Clearance</a></li> <li class="item-wrap"><a class="text-info" href="/c-124-accessories.aspx">Guitars, Amps & Accessories</a></li> <li class="item-wrap"><a href="https://www.tapestrymusic.com/c-539-ukuleles-accessories.aspx" target="_self">Ukuleles & Accessories</a></li> <li class="item-wrap"><a class="text-info" href="https://www.tapestrymusic.com/c-125-folk-instruments.aspx" target="_self">Folk Instruments</a></li> <li class="item-wrap"><a class="text-info" href="/c-127-pro-audio.aspx">Pro Audio & Recording</a></li> <li class="item-wrap"><a class="text-info" href="/c-122-brass.aspx">Brass</a></li> <li class="item-wrap"><a class="text-info" href="/c-121-woodwinds.aspx">Woodwinds</a></li> <li class="item-wrap"><a class="text-info" href="/c-196-classroom-and-kids.aspx">Classroom & Kids</a></li> <li class="item-wrap"><a class="text-info" href="/c-128-drums-percussion.aspx">Drums & Percussion</a></li> <li class="item-wrap"><a class="text-info" href="/c-129-general-accessories.aspx">General Accessories</a></li> <li class="item-wrap"><a class="text-info" href="/c-130-print-music-digital-downloads.aspx">Print Music & Digital Downloads</a></li> <li class="item-wrap"><a class="text-info" href="/e-manufacturerlist.aspx">Brands</a></li> <li class="item-wrap"><a class="text-info" href="/news.aspx">News</a></li> <li class="item-wrap"><a class="text-info" href="/t-reviews.aspx">Reviews</a></li> </ul> </div> </div> <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3 card"> <div class="list-wrapper"> <p class="footer-desc footer-fonts-style display-4">Simple & Secure Experience</p> <p class="footer-desc footer-fonts-style display-4">Payment Methods</p> <ul class="list footer-fonts-style display-4"> <li><div class="payment-methods-wrap"> <div class="cards-accepted"><span id="payment-method-imagespp" class="cardname paypal"></span><span id="payment-method-imagesaf" class="cardname affirm"></span><span id="payment-method-images5" class=" cardname americanexpress"></span><span id="payment-method-images2" class=" cardname mastercard"></span><span id="payment-method-images1" class=" cardname visa"></span></div> </div></li> </ul> <p> </p> <p class="footer-desc footer-fonts-style display-4">Secure Checkout</p> <ul class="list footer-fonts-style display-4"> <li> <div style="text-align:center;"><em aria-hidden="true" class="fa fa-shield" style="font-size:32px;vertical-align:top;"></em> <span style="vertical-align: middle; font-size: 18px;">Secured with SSL</span></div> </li> </ul> <p> </p> <p class="footer-desc footer-fonts-style display-4">Trusted & Approved</p> <ul class="list footer-fonts-style display-4"> <li> <div id="y-badges" class="yotpo yotpo-badge badge-init"> </div> </li> </ul> </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="border-wrap"> </div> </div> <div class="col-xs-8 col-sm-10 col-md-10"> <p class="footer-copy footer-fonts-style display-4"> </p> © Tapestry Music 2026. All Rights Reserved.     <p> </p> </div> <div class="col-xs-4 col-sm-2 col-md-2"> <p class="footer-copy footer-fonts-style text-right display-4"><a class="text-blue" href="/sitemap.aspx">Site Map</a></p> </div> </div> </div> </section> </footer> <!-- Minicart modal --> <div class="minicart-wrap"> <div id="minicart-modal" class="modal minicart-modal" data-keyboard="true" tabindex="-1"> <div class="modal-dialog" role="region" aria-label="modal dialog"> <div class="modal-content"> <div class="modal-header"> <a href="#" class="switch-mini-link js-switch-to-miniwish off"> <span aria-hidden="true"> <i class="fa fa-angle-left"></i> </span> View wishlist </a> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> <i class="fa fa-times-circle-o"></i> </span> </button> <h2 class="minicart-title modal-title"> Shopping Cart: <span class="minicart-title-count js-cart-title-count">0</span> <span class="minicart-items-label js-cart-count-label"> Items </span> </h2> </div> <div class="modal-body"> <div class="minicart-content-wrap"> <div class="minicart-message-area js-minicart-message-area"> </div> <div class="minicart-contents js-minicart-contents"> <div class="empty-mini-cart-text"> Your shopping cart is currently empty. </div> </div> </div> </div> <div class="modal-footer minicart-footer"> <div class="row"> <div class="col-sm-6 text-left-sm"> <div class="minicart-discount off"> Discounts: <span class="minicart-discount js-minicart-discount"></span> </div> <div class="minicart-total-area"> <div class="minicart-total-wrap"> Total: <span class="minicart-total js-minicart-total">$0.00 (CAD)</span> </div> </div> </div> <div class="col-sm-6"> <div class=""> <button type="button" id="minicart-close-button" class="btn btn-default close-minicart-button">Close</button> <button type="button" id="minicart-checkout-button" class="btn btn-primary minicart-checkout-button" data-return-url="/p-7756-all-for-strings-theory-book-1-violin.aspx">Checkout</button> </div> </div> </div> </div> </div> </div> </div> </div> <!-- Miniwish modal --> <div class="minicart-wrap"> <div id="miniwish-modal" class="modal minicart-modal" data-keyboard="true" tabindex="-1"> <div class="modal-dialog" role="region" aria-label="modal dialog"> <div class="modal-content"> <div class="modal-header"> <a href="#" class="switch-mini-link js-switch-to-minicart off"> <span aria-hidden="true"> <i class="fa fa-angle-left"></i> </span> View cart </a> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> <i class="fa fa-times-circle-o"></i> </span> </button> <h2 class="minicart-title modal-title"> Your Wishlist: <span class="minicart-title-count js-wish-title-count">0</span> <span class="minicart-items-label js-wish-count-label"> Items </span> </h2> </div> <div class="modal-body"> <div class="minicart-content-wrap"> <div class="minicart-message-area js-miniwish-message-area"> </div> <div class="minicart-contents js-miniwish-contents"> <div class="empty-mini-cart-text"> Your wish list is currently empty. </div> </div> </div> </div> <div class="modal-footer minicart-footer"> <div class="row"> <div class="col-sm-6 text-left-sm"> <div class="minicart-total-area"> <div class="minicart-total-wrap"> Total: <span class="minicart-total js-miniwish-total">$0.00 (CAD)</span> </div> </div> </div> <div class="col-sm-6"> <button type="button" id="miniwish-close-button" class="btn btn-default close-miniwish-button">Close</button> <button type="submit" data-url="/minicart/movealltocart" id="miniwish-move-all-to-cart" class="btn btn-primary minicart-checkout-button js-wishlist-button off"> Move all to Cart </button> </div> </div> </div> </div> </div> </div> </div> <!-- Minicart and miniwish resources (javascript and overlay html) --> <div class="minicart-loading-overlay js-minicart-loading-overlay off"> <div class="minicart-overlay"></div> <div class="minicart-loading"> <div class="minicart-loading-message js-minicart-loading-message">Loading...</div> <div class="loading-animation loading-style-dark"></div> </div> </div> <script src="/scripts/_skin_bundle_2a59354f3da09b60835d68828d972922?v=kdf-7QzJ_71lvhQgUumLmvqe9ch32Wnp3Kyzz7tJ5GI1"></script> <script type="text/javascript"> adnsf$.minicart.initialize( { minicart_DeleteWaitMessage: "Deleting...", miniwish_MoveSingleMessage: "Moving item to cart.", miniwish_MoveAllMessage: "Moving all items to cart.", minicart_UpdateFailureMessage: "Sorry, there was an error updating your cart.", miniwish_UpdateFailureMessage: "Sorry, there was an error updating your wishlist.", minicart_CountLabel: "Items", minicart_CountLabelSingular: "Item", checkoutUrl: "/shoppingcart.aspx", loginUrl: "/signin.aspx" }); adnsf$.minicart.cartEnabled = true; adnsf$.minicart.wishEnabled = true; adnsf$.minicart.onCheckoutPage = false; </script> <div class="live-chat-wrapper"> <div class="live-chat"> </div> </div> <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="ShippingModal" id="ShippingModal"> <div class="modal-dialog modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> <em class="fas fa-times-circle"></em> </span> </button> <!--<h3 class="modal-title text-center">Shipping Costs, Free and Expedited</h3>--> </div> <div class="modal-body"> <div class="row"> <div class="col-md-12"> <style> @import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;600;700&display=swap'); </style> <div style="font-family: 'Barlow', sans-serif;"> <h2>TAPESTRY MUSIC SHIPPING POLICY</h2> <p><strong>FREE SHIPPING in Canada on orders over $149!</strong></p> <p>Ship-to address must match billing address. Need to ship elsewhere? <br /> <a href="mailto:info@tapestrymusic.com?subject=Shipping%20Question">Let us know</a><br /> <em>Consignment items are subject to special shipping rates.</em><br /> </p> <div style="border: 2px solid #d4a843; background-color: #fdf8ec; padding: 20px; margin: 25px 0; border-radius: 4px;"> <h3 style="margin-top: 0; color: #a07c2a;">⚠ OVERSIZED & HEAVY ITEMS</h3> <p style="margin-bottom: 0;">Items such as pianos, cellos, large amplifiers, keyboard stands, and drum kits may incur an additional freight charge. For a shipping quote, email <a href="mailto:info@tapestrymusic.com?subject=Oversized%20Item%20Shipping%20Quote">info@tapestrymusic.com</a> before placing your order.</p> </div> <h3>CANADIAN SHIPPING</h3> <table style="border-collapse: collapse; width: 100%; max-width: 400px; margin-bottom: 10px; font-family: 'Barlow', sans-serif;"> <thead> <tr> <th style="text-align: left; padding: 6px 12px; border-bottom: 2px solid #4a4d58;">Order Total</th> <th style="text-align: left; padding: 6px 12px; border-bottom: 2px solid #4a4d58;">Shipping</th> </tr> </thead> <tbody> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">Under $25</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$12.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$25 - $50</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$14.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$50 - $75</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$16.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$75 - $149</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$18.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">Over $149</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;"><strong>FREE</strong></td> </tr> </tbody> </table> <p style="font-size: 14px; color: #666;">Free shipping does not apply to Yukon, Northwest Territories, Nunavut, or remote communities.<br /> <a href="mailto:info@tapestrymusic.com?subject=Shipping%20Question">Email us</a> for rates to these areas.<span style="font-family: Barlow, sans-serif; color: #000000;"><em><br /> </em></span></p> <h3>USA SHIPPING</h3> <table style="border-collapse: collapse; width: 100%; max-width: 400px; margin-bottom: 10px; font-family: 'Barlow', sans-serif;"> <thead> <tr> <th style="text-align: left; padding: 6px 12px; border-bottom: 2px solid #4a4d58;">Order Total</th> <th style="text-align: left; padding: 6px 12px; border-bottom: 2px solid #4a4d58;">Shipping</th> </tr> </thead> <tbody> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">Under $25</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$12.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$25 - $50</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$18.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$50 - $75</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$21.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$75 - $149</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$24.99</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">Over $149</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$29.99</td> </tr> </tbody> </table> <p style="font-size: 14px; color: #666;">Rates apply to the contiguous 48 states.</p> <h3>INTERNATIONAL SHIPPING</h3> <table style="border-collapse: collapse; width: 100%; max-width: 400px; margin-bottom: 10px; font-family: 'Barlow', sans-serif;"> <thead> <tr> <th style="text-align: left; padding: 6px 12px; border-bottom: 2px solid #4a4d58;">Order Total</th> <th style="text-align: left; padding: 6px 12px; border-bottom: 2px solid #4a4d58;">Shipping</th> </tr> </thead> <tbody> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">Under $25</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$49.00</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$25 - $50</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$79.00</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$50 - $75</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$99.00</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$75 - $149</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$149.00</td> </tr> <tr> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">Over $149</td> <td style="padding: 6px 12px; border-bottom: 1px solid #ddd;">$249.00</td> </tr> </tbody> </table> <p style="font-size: 14px; color: #666;">All orders shipped outside Canada are subject to customs and duty at the buyer's expense. Refused shipments will be refunded less all shipping costs incurred.</p> <p><span style="font-size: 14px;"><strong>Out-of-stock items: we'll contact you with an estimated wait time.</strong></span></p> </div> </div> <!-- <div class="col-md-12"><img src="/images/shipping.svg" alt="Shipping" class="img-responsive text-center center-block" width="128px" loading="lazy"></div> --> </div> </div> </div> </div> </div> <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="AffirmModal" id="AffirmModal"> <div class="modal-dialog modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> <em class="fas fa-times-circle"></em> </span> </button> <h3 class="modal-title text-center">Play Now & Pay Later with Affirm!</h3> </div> <div class="modal-body"> <div class="row"> <div class="col-md-12"> <p style="text-align: center;"> <img alt="Affirm Financing" src="https://images.ctfassets.net/4rc1asww3mw7/26uTl302EqMKkCc23JeB2I/e99483f998dc10a539fef149b308b348/Homepage_Hero_Banner.jpg?w=1168&q=90&fm=avif" class="img-responsive center-block" style="max-width: 100%;" /> </p> <div class="text-center"> <p><strong><span style="font-size: 20px;">Flexible financing with Affirm is available at Tapestry Music</span></strong><br /> Pay over time with monthly or biweekly payment plans. Get an instant decision at checkout—no hidden fees, ever.</p> <br /> <p><strong><span style="font-size: 16px;">Buying with Affirm is easy!<br /> </span></strong><br /> <strong>Step 1 – Fill your cart</strong><br /> Shop online or in-store. Select Affirm at checkout and enter a few details for an instant decision.<br /> <br /> <strong>Step 2 – Choose how to pay<br /> </strong> Pick the payment option that works for you and your budget—from 4 interest-free payments every 2 weeks to monthly installments. Options depend on your purchase amount, and a down payment may be required.<br /> <br /> <strong>Step 3 – Make your payments<br /> </strong> Manage your payments in the Affirm app or online. Set up AutoPay so you never miss a payment. If you do, there are no late fees, ever.<br /> </p> <em>*Financing for out-of-stock items begins when the order is placed<br /> </em> <br /> <p>Learn more:<br /> <a href="https://www.affirm.com/en-ca/how-it-works" target="_blank">How Affirm works (Canada)</a><br /> <a href="https://businesshub.affirm.com/hc/article_attachments/9445858204436" target="_blank">Affirm Business Info Sheet</a></p> <p> </p> <p style="text-align: left;"><span style="font-size: 10px;"><span style="caret-color: #212121; font-family: Aptos; font-size: 10px; color: #212121;">Payment options through Affirm Canada Holdings Ltd. (“Affirm”). Your rate will be 0–31.99% APR (where available and subject to provincial regulatory limitations). APR offered is based on creditworthiness and subject to an eligibility check. Not all customers will be eligible for 0% APR. Payment options depend on your purchase amount, may vary by merchant, and may not be available in all provinces/territories. Actual payment option terms will be shown at checkout. A down payment (or a payment due today) may be required. Affirm accepts debit cards and PAD as forms of repayment on payment options. Select payment options may be eligible for repayment in the form of credit cards. Please review the terms and conditions of your credit card when using it as a form of repayment. Sample payment options may be: a $800 purchase could be split into 12 monthly payments of $72.21 at 15% APR, or 4 interest-free payments of $200 every 2 weeks. For more information, please see<span class="Apple-converted-space"> </span></span><a href="https://www.affirm.com/en-ca/how-it-works" class="ms-outlook-linkify" style="color: #0086f0; font-family: Aptos;">https://www.affirm.com/en-ca/how-it-works</a><span style="caret-color: #212121; font-family: Aptos; color: #212121;">.</span></span></p> </div> <!-- <p>Choose your parts and add them to the cart.</p> <p>When you are ready to checkout, select the Affirm option as your payment method. </p> <p><strong>Play now and pay over time.</strong></p> <h5>Flexible Payment Methods</h5> <ul> <li>Pay in 4 or Pay Monthly</li> <li>Extra time with no late fees</li> <li>No impact to your credit score</li> </ul> --> </div> <!-- <div class="col-md-12"><img src="/images/affirm.svg" alt="Affirm" class="img-responsive text-center center-block" width="128px" loading="lazy"></div> --> </div> </div> </div> </div> </div> <script type="text/javascript"> window.postalCodeRegexConfiguration = { postalCodeRegexMapUrl: "/country/postalcoderegexmap", }; </script> <script src="/scripts/_skin_bundle_b8715fbfc319d710da56b418d5cee1db?v=ZxD66Iob3gqKa-c2dSgQibi-lqw-eEROqwWOU36ooAw1"></script> <script type="text/javascript"> adnsf$.initializeAddToCartForms( { ajaxAddToCartUrl: "/minicart/ajaxaddtocart", ajaxAddKitToCartUrl: "/minicart/ajaxaddkittocart", addToCartMessage: "Adding to cart", addToWishMessage: "Adding to wishlist", invalidQuatityMessage: "Please enter a valid quantity", addToCartFailureMessage: "Your item was not added to the cart because of an error", addToWishFailureMessage: "Your item was not added to the wishlist because of an error", checkoutUrl: "/shoppingcart.aspx", loginUrl: "/signin.aspx" }); adnsf$.validator.unobtrusive.adapters.addSingleVal('min', 'val'); vortx.browser.detect(); if (vortx.browser.isIE) { vortx.browser.warnOfDeprecation( 'browser-detection-notice', 'It appears that your web browser is a bit old. For a more safe and modern experience, please change or upgrade your web browser.' ); } </script> <link rel="stylesheet" href="/skins/react-reboot/Css/footer.min.css?v=0.4" /> <script> (function () { var mmapiws = window.__mmapiws = window.__mmapiws || {}; mmapiws.accountId = '993362'; var loadDeviceJs = function () { var element = document.createElement('script'); element.async = true; element.src = 'https://device.maxmind.com/js/device.js'; document.body.appendChild(element); }; if (window.addEventListener) { window.addEventListener('load', loadDeviceJs, false); } else if (window.attachEvent) { window.attachEvent('onload', loadDeviceJs); } })(); </script> <!--Xmlpackage 'script.bodyclose' --> <script type="text/javascript"> var google_tag_params = { ecomm_prodid: '7756-26422--', ecomm_pagetype: 'product', ecomm_totalvalue: 0.00 }; </script> <!--End of xmlpackage 'script.bodyclose' --> <script> $(function (e) { let password = $('#Password'); if(password.length > 0) { password.css('display', 'inline-block'); password.after('<em class="fa fa-eye" id="togglePassword" style="z-index:999; position:relative; margin-left:-30px; margin-top:24px; cursor:pointer; display:inline-block;"></em>'); }; $('#togglePassword').click(function (e) { password.attr('type') === 'password' ? password.attr('type', 'text') : password.attr('type', 'password'); $(this).toggleClass('fa-eye-slash'); }); }); </script> <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="PromoModal" id="PromoModal"> <div class="modal-dialog modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> <em class="fas fa-times-circle"></em> </span> </button> <h3 class="modal-title text-center">Save 15% Off Select Products!</h3> </div> <div class="modal-body"> <div class="row"> <div class="col-md-12"> <p>Save 15% on In-stock, Standard Priced products.</p> <p>Participating products display a 15% discount on the product page.</p> <p>Choose your items and add them to the cart.</p> <p>When you are ready to checkout, the discount will automatically apply.</p> <p>Discount does not apply to discounted items, used, and demo instruments.</p> </div> </div> </div> </div> </div> </div> <!-- Klevu template --> <script src="/skins/react-reboot/scripts/klevu-theme-breeze_essence.js"></script> <!--Xmlpackage 'promo-window' --> <script> (function(options) { $(function(){ if (Cookies.get('promoWindow') == 'visited') { return false; } else { setTimeout(function () { $('#promoWindow').fadeIn("fast"); }, options.windowDelay); $(".promoClose").on("click", function(){ $("#promoWindow").remove(); }); Cookies.set('promoWindow', 'visited', { expires: options.cookieExpires }); } }); }) ({ windowDelay: 3000, cookieExpires: 1 }); </script> <!--End of xmlpackage 'promo-window' --> <!-- body close scripts --> <!--Xmlpackage 'shareasale' --> <!--End of xmlpackage 'shareasale' --> </body> </html>