{"id":9061,"date":"2006-12-21T16:36:00","date_gmt":"2006-12-21T16:36:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/powershell\/2006\/12\/21\/jingle\/"},"modified":"2019-02-18T13:21:02","modified_gmt":"2019-02-18T20:21:02","slug":"jingle","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/jingle\/","title":{"rendered":"Jingle"},"content":{"rendered":"<p>As an&nbsp;attempt to spread some holiday joy, Satish Mathew and I wrote the following script.&nbsp; Hope you enjoy it!&nbsp; <\/p>\n<p>&#8211; Marcel Ortiz<\/p>\n<p>&nbsp;########################################################################################<\/p>\n<p>$notes = write-output `<br \/>&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4C4 4F3 8G3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1A4 `<br \/>&nbsp; 4Bb4 4Bb4 4Bb4 8Bb4&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4A4 4A4 8A4 8A4&nbsp;&nbsp;&nbsp; 4A4 4G3 4G3 4A4&nbsp;&nbsp;&nbsp; 2G3 2C4 `<br \/>&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp; 4A4 4C4 4F3 4G3&nbsp;&nbsp;&nbsp;&nbsp; 1A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4Bb4 4Bb4 4Bb4 `<br \/>&nbsp; 4Bb4 4A4 4A4 8A4 8A4&nbsp;&nbsp;&nbsp; 4C4 4C4 4Bb4 4G3&nbsp;&nbsp;&nbsp;&nbsp; 1F3&nbsp;&nbsp;&nbsp;&nbsp; 4C3 4A4 4G3 4F3&nbsp;&nbsp;&nbsp;&nbsp; 2C3 8C3 8C3&nbsp; `<br \/>&nbsp; 4C3 4A4 4G3 4F3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1D3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4D3 4Bb4 4A4 4G3&nbsp;&nbsp;&nbsp;&nbsp; &#8216;1E3&#8217;&nbsp;&nbsp;&nbsp; 4C4 4C4 4Bb4 4G3 `<br \/>&nbsp; 1A4&nbsp;&nbsp;&nbsp;&nbsp; 4C3 4A4 4G3 4F3&nbsp;&nbsp;&nbsp; 1C3&nbsp;&nbsp;&nbsp;&nbsp; 4C3 4A4 4G3 4F3&nbsp;&nbsp;&nbsp;&nbsp; 1D3 `<br \/>&nbsp; 4D3 4Bb3 4A4 4G3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4C4 4C4 4C4 8C4 8C4&nbsp;&nbsp;&nbsp; 4D4 4C4 4Bb4 4G3&nbsp;&nbsp;&nbsp; 4F3 2C4&nbsp;&nbsp; 4A4 4A4 2A4 `<br \/>&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4C4 4C3 8G3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1A4&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4Bb4 4Bb4 8Bb4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4A4 4A4 8A4 8A4 `<br \/>&nbsp; 4A4 4G3 4G3 4A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2G3 2C4&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp; 4A4 4C4 4F3 8G3 `<br \/>&nbsp; 1A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4Bb4 4Bb4 4Bb4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4A4 4A4 8A4 8A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4C4 4C4 4Bb4 4G3&nbsp;&nbsp;&nbsp;&nbsp; 1F3<\/p>\n<p>function Play([int] $freq, [int] $duration)<br \/>{<br \/>&nbsp; [console]::Beep($freq, $duration);<br \/>}<\/p>\n<p>&nbsp;<\/p>\n<p>#<br \/># Note is given by fn=f0 * (a)^n<br \/># a is the twelth root of 2<br \/># n is the number of half steps from f0, positive or negative.<br \/># f0 used here is A4 at 440 Hz<br \/>#<br \/>$f0 = 440;<br \/>$a = [math]::pow(2,(1\/12)); # Twelth root of 2<br \/>function GetNoteFreq([string]$note)<br \/>{<br \/>&nbsp; # n is the number of half steps from the fixed note.<br \/>&nbsp; $note -match &#8216;([A-G#]{1,2})(\\d+)&#8217; | out-null<br \/>&nbsp; $octave = ([int] $matches[2]) &#8211; 4;<br \/>&nbsp; $n = $octave * 12 + ( GetHalfStepsFromA $matches[1] );<br \/>&nbsp; $freq = $f0 * [math]::Pow($a, $n);<\/p>\n<p>&nbsp; return $freq;<br \/>}<\/p>\n<p>&nbsp;<\/p>\n<p>function GetHalfStepsFromA([string] $note)<br \/>{<br \/>&nbsp; switch($note)<br \/>&nbsp; {<br \/>&nbsp;&nbsp;&nbsp; &#8216;A&#8217;&nbsp; { 0 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;A#&#8217; { 1 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;Bb&#8217; { 1 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;B&#8217;&nbsp; { 2 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;C&#8217;&nbsp; { 3 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;C#&#8217; { 4 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;Db&#8217; { 4 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;D&#8217;&nbsp; { 5 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;D#&#8217; { 6 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;Eb&#8217; { 6 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;E&#8217;&nbsp; { 7 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;F&#8217;&nbsp; { 8 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;F#&#8217; { 9 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;Gb&#8217; { 9 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;G&#8217;&nbsp; { 10 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;G#&#8217; { 11 }<br \/>&nbsp;&nbsp;&nbsp; &#8216;Ab&#8217; { 11 }<br \/>&nbsp; }<br \/>}<\/p>\n<p>&nbsp;<\/p>\n<p>$StandardDuration = 1000;<br \/>foreach($note in $notes)<br \/>{<\/p>\n<p>&nbsp; $note -match &#8216;(\\d)(.+)&#8217; | out-null<br \/>&nbsp; $duration = $StandardDuration \/ ([int] $matches[1]);<br \/>&nbsp; $playNote = $matches[2];<br \/>&nbsp; $freq = GetNoteFreq $playNote;<\/p>\n<p>&nbsp; write-host $playNote;<br \/>&nbsp; Play $freq $duration<br \/>&nbsp; start-sleep -milli 50<br \/>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As an&nbsp;attempt to spread some holiday joy, Satish Mathew and I wrote the following script.&nbsp; Hope you enjoy it!&nbsp; &#8211; Marcel Ortiz &nbsp;######################################################################################## $notes = write-output `&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4C4 4F3 8G3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1A4 `&nbsp; 4Bb4 4Bb4 4Bb4 8Bb4&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4A4 4A4 8A4 8A4&nbsp;&nbsp;&nbsp; 4A4 4G3 4G3 4A4&nbsp;&nbsp;&nbsp; 2G3 2C4 `&nbsp; [&hellip;]<\/p>\n","protected":false},"author":600,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-9061","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"blog_post_summary":"<p>As an&nbsp;attempt to spread some holiday joy, Satish Mathew and I wrote the following script.&nbsp; Hope you enjoy it!&nbsp; &#8211; Marcel Ortiz &nbsp;######################################################################################## $notes = write-output `&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4A4 2A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4A4 4C4 4F3 8G3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1A4 `&nbsp; 4Bb4 4Bb4 4Bb4 8Bb4&nbsp;&nbsp;&nbsp;&nbsp; 4Bb4 4A4 4A4 8A4 8A4&nbsp;&nbsp;&nbsp; 4A4 4G3 4G3 4A4&nbsp;&nbsp;&nbsp; 2G3 2C4 `&nbsp; [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/9061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/600"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=9061"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/9061\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=9061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=9061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=9061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}