Merry christmas

rated by 0 users
This post has 3 Replies | 2 Followers

Top 25 Contributor
Posts 55
Top Contributor
Sylvain LESIRE Posted: 12-15-2008 1:54 AM

Hi everybody,

Sure during Christmas holidays some powershell user will have some great music.

I find this script on a french Microsoft script center, but It need to here on forum and script library.

Merry Christmas To U

Sylv1

Web site link : http://forums.microsoft.com/TechNet-FR/ShowPost.aspx?PostID=2555221&SiteID=45

#Merry Christmas.ps1

$notes = write-output `
  4A4 4A4 2A4        4A4 4A4 2A4        4A4 4C4 4F3 8G3             1A4 `
  4Bb4 4Bb4 4Bb4 8Bb4     4Bb4 4A4 4A4 8A4 8A4    4A4 4G3 4G3 4A4    2G3 2C4 `
  4A4 4A4 2A4       4A4 4A4 2A4    4A4 4C4 4F3 4G3     1A4        4Bb4 4Bb4 4Bb4 4Bb4 `
  4Bb4 4A4 4A4 8A4 8A4    4C4 4C4 4Bb4 4G3     1F3     4C3 4A4 4G3 4F3     2C3 8C3 8C3  `
  4C3 4A4 4G3 4F3       1D3      4D3 4Bb4 4A4 4G3     '1E3'    4C4 4C4 4Bb4 4G3 `
  1A4     4C3 4A4 4G3 4F3    1C3     4C3 4A4 4G3 4F3     1D3 `
  4D3 4Bb3 4A4 4G3         4C4 4C4 4C4 8C4 8C4    4D4 4C4 4Bb4 4G3    4F3 2C4   4A4 4A4 2A4 `
  4A4 4A4 2A4      4A4 4C4 4C3 8G3      1A4     4Bb4 4Bb4 4Bb4 8Bb4      4Bb4 4A4 4A4 8A4 8A4 `
  4A4 4G3 4G3 4A4       2G3 2C4     4A4 4A4 2A4     4A4 4A4 2A4    4A4 4C4 4F3 8G3 `
  1A4       4Bb4 4Bb4 4Bb4 4Bb4      4Bb4 4A4 4A4 8A4 8A4      4C4 4C4 4Bb4 4G3     1F3

function Play([int] $freq, [int] $duration)
{
  [console]::Beep($freq, $duration);
}

 

#
# Note is given by fn=f0 * (a)^n
# a is the twelth root of 2
# n is the number of half steps from f0, positive or negative.
# f0 used here is A4 at 440 Hz
#
$f0 = 440;
$a = [math]::pow(2,(1/12)); # Twelth root of 2
function GetNoteFreq([string]$note)
{
  # n is the number of half steps from the fixed note.
  $note -match '([A-G#]{1,2})(\d+)' | out-null
  $octave = ([int] $matches[2]) - 4;
  $n = $octave * 12 + ( GetHalfStepsFromA $matches[1] );
  $freq = $f0 * [math]::Pow($a, $n);

  return $freq;
}

 

function GetHalfStepsFromA([string] $note)
{
  switch($note)
  {
    'A'  { 0 }
    'A#' { 1 }
    'Bb' { 1 }
    'B'  { 2 }
    'C'  { 3 }
    'C#' { 4 }
    'Db' { 4 }
    'D'  { 5 }
    'D#' { 6 }
    'Eb' { 6 }
    'E'  { 7 }
    'F'  { 8 }
    'F#' { 9 }
    'Gb' { 9 }
    'G'  { 10 }
    'G#' { 11 }
    'Ab' { 11 }
  }
}

 

$StandardDuration = 1000;
foreach($note in $notes)
{

  $note -match '(\d)(.+)' | out-null
  $duration = $StandardDuration / ([int] $matches[1]);
  $playNote = $matches[2];
  $freq = GetNoteFreq $playNote;

  write-host $playNote;
  Play $freq $duration
  start-sleep -milli 50
}

Top 25 Contributor
Posts 209
Microsoft MVP
Top Contributor

cool, thanks a lot! I noticed you uploaded it to the script library, too.

I just tried it, and it's great fun!

Top 25 Contributor
Posts 55
Top Contributor

Thanks Tobias

 

it was more easy to find in script library, but great to have news on forum, that's why I put it on 2 paths

 

Merry Christmas

see U

Top 10 Contributor
Posts 260
Microsoft MVP
Top Contributor

And thanks from me for this script. A lilttle bit of jollity at this time goes a long way. I've blogged this too!

 

Page 1 of 1 (4 items) | RSS
Concentrated Tech NSoftware Dell Compellent Sponsored by Idera and Concentrated Tech and NSoftware and Dell Compellent
Copyright 2011 PowerShell.com. All rights reserved.