{"id":370,"date":"2012-08-03T11:10:24","date_gmt":"2012-08-03T11:10:24","guid":{"rendered":"http:\/\/garysieling.com\/blog\/?p=370"},"modified":"2012-08-03T11:10:24","modified_gmt":"2012-08-03T11:10:24","slug":"how-to-write-a-wav-file-in-scala","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/","title":{"rendered":"How to Write a Wav File in Scala"},"content":{"rendered":"<p>The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library <a href=\"http:\/\/www.labbookpages.co.uk\/audio\/javaWavFiles.html\">here<\/a> to handle the file format. <\/p>\n<p>One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by converting Java code into various functional languages, and ran into difficulties converting Java types into Clojure types, but have had no such problems with Scala.<\/p>\n<pre lang=\"scala\">\n\nobject pitches {\n\tdef write(filename: String) {\n\t    val G3 = 196;\n\t    val A3 = 220;\n\t    val F4G4 = 369.99\n\t\t\n\t    val notes = Array[Double]( G3, A3, F4G4 );\n\t    val file = new File(filename)\n\t\t\n\t    val sampleRate : Long = 44100; \n\t    val duration : Double = 10.0;\n\t    val bufferSize : Int = 100;\n\t\n\t    val numFrames : Long = \n                (duration * sampleRate).toLong\n\t    val wavFile = \n\t        WavFile.newWavFile(file, 1, numFrames, \n                                   16, sampleRate);\n\t    val buffer : Array[Array[Double]] = \n\t        Array.fill(1, bufferSize)(0.0);\n\t\n\t    var frameCounter : Int = 0;\n\t\n\t    while (frameCounter < numFrames)\n\t    {\n\t        val remaining : Long = \n\t        \t   wavFile.getFramesRemaining();\n\t        val toWrite = \n\t        \t   if (remaining > bufferSize) \n\t        \t      bufferSize \n\t        \t   else \n                              remaining.toInt;\n\t\n\t        for (val s : Int <- 0 to toWrite - 1)\n\t        {\n\t           frameCounter = frameCounter + 1\n\t           for (j : Int <- 0 to (notes.length - 1))\n\t           {\n\t        \tbuffer(0)(s) = buffer(0)(s) + \n\t        \t        Math.sin(2.0 * Math.PI * \n\t        \t   \t         notes(j) * \n\t        \t   \t         frameCounter \/ \n\t        \t   \t         sampleRate) \/ \n\t        \t   \t(notes.length + 1);\n\t           }\n\t        }\n\t\n\t        wavFile.writeFrames(buffer, toWrite)\n\t    }\n\t\n\t    wavFile.close()\n\t}\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How to Write a Wav File in Scala&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[4],"tags":[67,108,178,300,373,480,507,584],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"gary\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Gary Sieling - Software Engineer\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How to Write a Wav File in Scala - Gary Sieling\" \/>\n\t\t<meta property=\"og:description\" content=\"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-08-03T11:10:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2012-08-03T11:10:24+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How to Write a Wav File in Scala - Gary Sieling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#blogposting\",\"name\":\"How to Write a Wav File in Scala - Gary Sieling\",\"headline\":\"How to Write a Wav File in Scala\",\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"},\"datePublished\":\"2012-08-03T11:10:24+00:00\",\"dateModified\":\"2012-08-03T11:10:24+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#webpage\"},\"articleSection\":\"Code Examples, audio, chord, dsp, java, music, scala, signal processing, wav\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"position\":2,\"name\":\"Code Examples\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#listItem\",\"name\":\"How to Write a Wav File in Scala\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#listItem\",\"position\":3,\"name\":\"How to Write a Wav File in Scala\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/\",\"name\":\"gary\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"gary\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#webpage\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/\",\"name\":\"How to Write a Wav File in Scala - Gary Sieling\",\"description\":\"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/how-to-write-a-wav-file-in-scala\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"datePublished\":\"2012-08-03T11:10:24+00:00\",\"dateModified\":\"2012-08-03T11:10:24+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How to Write a Wav File in Scala - Gary Sieling","description":"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by","canonical_url":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#blogposting","name":"How to Write a Wav File in Scala - Gary Sieling","headline":"How to Write a Wav File in Scala","author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"},"datePublished":"2012-08-03T11:10:24+00:00","dateModified":"2012-08-03T11:10:24+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#webpage"},"isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#webpage"},"articleSection":"Code Examples, audio, chord, dsp, java, music, scala, signal processing, wav"},{"@type":"BreadcrumbList","@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.garysieling.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","position":2,"name":"Code Examples","item":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#listItem","name":"How to Write a Wav File in Scala"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#listItem","position":3,"name":"How to Write a Wav File in Scala","previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}}]},{"@type":"Organization","@id":"https:\/\/www.garysieling.com\/blog\/#organization","name":"Gary Sieling","description":"Software Engineer","url":"https:\/\/www.garysieling.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author","url":"https:\/\/www.garysieling.com\/blog\/author\/gary\/","name":"gary","image":{"@type":"ImageObject","@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g","width":96,"height":96,"caption":"gary"}},{"@type":"WebPage","@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#webpage","url":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/","name":"How to Write a Wav File in Scala - Gary Sieling","description":"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/#breadcrumblist"},"author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"creator":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"datePublished":"2012-08-03T11:10:24+00:00","dateModified":"2012-08-03T11:10:24+00:00"},{"@type":"WebSite","@id":"https:\/\/www.garysieling.com\/blog\/#website","url":"https:\/\/www.garysieling.com\/blog\/","name":"Gary Sieling","description":"Software Engineer","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Gary Sieling - Software Engineer","og:type":"article","og:title":"How to Write a Wav File in Scala - Gary Sieling","og:description":"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by","og:url":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/","article:published_time":"2012-08-03T11:10:24+00:00","article:modified_time":"2012-08-03T11:10:24+00:00","twitter:card":"summary_large_image","twitter:title":"How to Write a Wav File in Scala - Gary Sieling","twitter:description":"The following code will play a chord to a Wav file using Scala. This is adapted from sample code and uses the library here to handle the file format. One of the nice things about Scala is the ease of using existing Java code, since it runs on the JVM. I started this project by"},"aioseo_meta_data":{"post_id":"370","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2023-02-04 16:05:57","updated":"2026-07-06 00:43:42","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/\" title=\"Code Examples\">Code Examples<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow to Write a Wav File in Scala\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.garysieling.com\/blog"},{"label":"Code Examples","link":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/"},{"label":"How to Write a Wav File in Scala","link":"https:\/\/www.garysieling.com\/blog\/how-to-write-a-wav-file-in-scala\/"}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/370"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=370"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/370\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}