<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: music code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 22:43:35 GMT</pubDate>
    <description>DZone Snippets: music code</description>
    <item>
      <title>Play audio with a Ruby shell script</title>
      <link>http://snippets.dzone.com/posts/show/5744</link>
      <description>Play an ogg file from the command-line using the program ogg123 from the software package 'vorbis-tools'.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/ruby&lt;br /&gt;&lt;br /&gt;#file: ogg-play.rb&lt;br /&gt;&lt;br /&gt;`ogg123 #{ARGV[0]} &gt; /dev/null 2&gt;&amp;1`&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e.g. &lt;br /&gt;&lt;code&gt;&lt;br /&gt;wget http://upload.wikimedia.org/wikipedia/en/4/4d/Elo_blue_sky.ogg&lt;br /&gt;./ogg-play.rb Elo_blue_sky.ogg&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 09 Jul 2008 19:15:45 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5744</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Flac to mp3</title>
      <link>http://snippets.dzone.com/posts/show/4605</link>
      <description>Converts all *.flac files in the current dir to mp3.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;for file in *.flac&lt;br /&gt;do&lt;br /&gt;	echo Converting $file&lt;br /&gt;	flac123 -q --wav=- "$file" | lame - "$file".mp3&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 02 Oct 2007 18:02:03 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4605</guid>
      <author>scvalex (Alexandru Scvortov)</author>
    </item>
    <item>
      <title>Last.fm favorite artists for social network</title>
      <link>http://snippets.dzone.com/posts/show/3126</link>
      <description>// Returns a list of your top 50 favorite artists from last.fm, suitable for pasting into a Facebook, Myspace, or similar profile&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;require 'net/http'&lt;br /&gt;require 'csv'&lt;br /&gt;user = 'nertzy'&lt;br /&gt;csv = Net::HTTP.get 'ws.audioscrobbler.com', "/1.0/user/#{user}/topartists.txt"&lt;br /&gt;puts CSV::Reader.parse(csv).collect{ |row| row[2] }.join(", ")&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 11 Dec 2006 10:46:42 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3126</guid>
      <author>nertzy (Grant Hutchins)</author>
    </item>
    <item>
      <title>Java - Example Very Simple Player (JMF)</title>
      <link>http://snippets.dzone.com/posts/show/2912</link>
      <description>// Main Class&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package org.jmf.example;&lt;br /&gt;&lt;br /&gt;import javax.swing.JDialog;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;import javax.swing.UIManager;&lt;br /&gt;import javax.swing.UnsupportedLookAndFeelException;&lt;br /&gt;import javax.swing.plaf.metal.MetalLookAndFeel;&lt;br /&gt;&lt;br /&gt;public class ExampleJMF&lt;br /&gt;{&lt;br /&gt;	public static void main(String[] args)&lt;br /&gt;	{&lt;br /&gt;		JFrame.setDefaultLookAndFeelDecorated(true); &lt;br /&gt;		JDialog.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;		&lt;br /&gt;		try&lt;br /&gt;		{&lt;br /&gt;			UIManager.setLookAndFeel(new MetalLookAndFeel());&lt;br /&gt;		}&lt;br /&gt;		catch(UnsupportedLookAndFeelException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		new exampleFrame();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Frame Class&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package org.jmf.example;&lt;br /&gt;&lt;br /&gt;import java.awt.Toolkit;&lt;br /&gt;import java.awt.event.WindowAdapter;&lt;br /&gt;import java.awt.event.WindowEvent;&lt;br /&gt;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;&lt;br /&gt;public class exampleFrame extends JFrame&lt;br /&gt;{&lt;br /&gt;	private static final long serialVersionUID = 1L;&lt;br /&gt;	&lt;br /&gt;	public exampleFrame()&lt;br /&gt;	{&lt;br /&gt;		super("JMF - Example...");&lt;br /&gt;		&lt;br /&gt;		setSize(400, 300);&lt;br /&gt;		setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getWidth())/2, (Toolkit.getDefaultToolkit().getScreenSize().height - getHeight())/2);&lt;br /&gt;		&lt;br /&gt;		addWindowListener(new WindowAdapter()&lt;br /&gt;		{&lt;br /&gt;			public void windowClosing(WindowEvent evt)&lt;br /&gt;			{&lt;br /&gt;				System.exit(0);&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		setContentPane(new examplePanel());&lt;br /&gt;		setVisible(true);&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// Panel Class&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package org.jmf.example;&lt;br /&gt;&lt;br /&gt;import java.awt.Component;&lt;br /&gt;import java.awt.Graphics;&lt;br /&gt;import java.awt.event.ActionEvent;&lt;br /&gt;import java.awt.event.ActionListener;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.net.URL;&lt;br /&gt;&lt;br /&gt;import javax.media.ControllerEvent;&lt;br /&gt;import javax.media.ControllerListener;&lt;br /&gt;import javax.media.Manager;&lt;br /&gt;import javax.media.NoPlayerException;&lt;br /&gt;import javax.media.Player;&lt;br /&gt;import javax.media.RealizeCompleteEvent;&lt;br /&gt;import javax.swing.JPanel;&lt;br /&gt;&lt;br /&gt;public class examplePanel extends JPanel implements ActionListener, ControllerListener&lt;br /&gt;{&lt;br /&gt;	private static final long serialVersionUID = 1L;&lt;br /&gt;	&lt;br /&gt;	private Component visualComponent;&lt;br /&gt;	private Player player;&lt;br /&gt;	&lt;br /&gt;	public examplePanel()&lt;br /&gt;	{&lt;br /&gt;		try&lt;br /&gt;		{&lt;br /&gt;			player = Manager.createPlayer(new URL("file:///tmp/a.mpg"));&lt;br /&gt;			player.addControllerListener(this);&lt;br /&gt;			&lt;br /&gt;			player.start();&lt;br /&gt;		}&lt;br /&gt;		catch(NoPlayerException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		catch(MalformedURLException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		catch(IOException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public void paintComponent(Graphics g)&lt;br /&gt;	{&lt;br /&gt;		super.paintComponent(g);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void actionPerformed(ActionEvent e)&lt;br /&gt;	{&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void controllerUpdate(ControllerEvent c)&lt;br /&gt;	{&lt;br /&gt;		if(player == null)&lt;br /&gt;			return;&lt;br /&gt;		&lt;br /&gt;		if(c instanceof RealizeCompleteEvent)&lt;br /&gt;		{&lt;br /&gt;			if((visualComponent = player.getVisualComponent()) != null)&lt;br /&gt;				add(visualComponent);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 27 Oct 2006 15:53:37 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2912</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>PHP last.fm chart creator</title>
      <link>http://snippets.dzone.com/posts/show/2724</link>
      <description>This code displays the Top 50 artists XML feed from last.fm in a nice presentable way on your website. Can easily be modified to work with any other feed from last.fm, find the full guide at http://www.strydominc.za.net/index.php?p=projectdetail&amp;d=phplastfmchart&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;/**********************************************************************************************&lt;br /&gt;www.strydominc.za.net&lt;br /&gt;Created by Jurgen Strydom, 19-08-2006, jurgen.strydom@gmail.com&lt;br /&gt;Read the readme.txt&lt;br /&gt;Version 1.01, 05-09-2006&lt;br /&gt;**********************************************************************************************/&lt;br /&gt;?&gt;&lt;br /&gt;&lt;link href="lastfmbar.css" rel="stylesheet" type="text/css"&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;//User settings -&gt; needs your attention&lt;br /&gt;$user = "Alkine"; //Your username&lt;br /&gt;$width = 700; //width of the list&lt;br /&gt;&lt;br /&gt;//Code you should not worry about&lt;br /&gt;$file = "http://ws.audioscrobbler.com/1.0/user/$user/topartists.xml";&lt;br /&gt;$xml = simplexml_load_file("$file");&lt;br /&gt;$big = $xml-&gt;artist[0]-&gt;playcount;&lt;br /&gt;$total = count($xml-&gt;artist);&lt;br /&gt;$factor =  $width /$big;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;table width="&lt;?php echo $width ?&gt;" border="0" cellpadding="0" cellspacing="0"&gt;  &lt;br /&gt; &lt;?php&lt;br /&gt; for ($k=0 ; $k&lt;=$total - 1; $k++) {&lt;br /&gt; 	$barlen = round(($xml-&gt;artist[$k]-&gt;playcount * $factor), 0);&lt;br /&gt; ?&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;    &lt;td width="&lt;?php echo $width ?&gt;" height="10" valign="center"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;br /&gt;      &lt;!--DWLayoutTable--&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td width="&lt;?php echo $barlen ?&gt;" height="10" valign="center" class="lastfmbar"&gt;&lt;?php &lt;br /&gt;		if ($barlen &gt;= (($width + 100) /2)) {&lt;br /&gt;			echo "&lt;div align=\"right\"&gt;", $xml-&gt;artist[$k]-&gt;playcount, " - &lt;b&gt;", $xml-&gt;artist[$k]-&gt;name ,"&lt;/b&gt;&lt;/div&gt;";&lt;br /&gt;		}&lt;br /&gt;		if (($barlen &lt; (($width + 100) /2)) &amp;&amp; ($barlen &gt;= ($width / 3))) {&lt;br /&gt;			echo "&lt;div align=\"right\"&gt;", $xml-&gt;artist[$k]-&gt;playcount ," -&lt;/div&gt;";&lt;br /&gt;		}&lt;br /&gt;		if ($barlen &lt; ($width / 3)) {&lt;br /&gt;			echo "&amp;nbsp;";&lt;br /&gt;		}		&lt;br /&gt;		?&gt;&lt;/td&gt;&lt;br /&gt;        &lt;td width="&lt;?php echo $width - $barlen ?&gt;" valign="center"&gt;&lt;?php &lt;br /&gt;		if ($barlen &gt;= (($width + 100) /2)) {&lt;br /&gt;			echo "&amp;nbsp;";&lt;br /&gt;		}&lt;br /&gt;		if (($barlen &lt; (($width + 100) /2)) &amp;&amp; ($barlen &gt;= ($width / 3))) {&lt;br /&gt;			echo "&lt;div align=\"left\"&gt;&lt;b&gt;&amp;nbsp;", $xml-&gt;artist[$k]-&gt;name ,"&lt;/b&gt;&lt;/div&gt;";&lt;br /&gt;		}&lt;br /&gt;		if ($barlen &lt; ($width / 3)) {&lt;br /&gt;			echo "&lt;div align=\"left\"&gt;", $xml-&gt;artist[$k]-&gt;playcount, " - &lt;b&gt;", $xml-&gt;artist[$k]-&gt;name ,"&lt;/b&gt;&lt;/div&gt;";&lt;br /&gt;		}		&lt;br /&gt;		?&gt;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;br /&gt;    &lt;/table&gt;&lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt;  &lt;?php&lt;br /&gt;  }&lt;br /&gt;  ?&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;/**********************************************************************************************&lt;br /&gt;Changelog:&lt;br /&gt;&lt;br /&gt;Version 1.01&lt;br /&gt;Fixed a bug that caused the bar sizes to display incorrectly.&lt;br /&gt;&lt;br /&gt;Version 1&lt;br /&gt;First release.&lt;br /&gt;**********************************************************************************************/&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 27 Sep 2006 22:52:34 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2724</guid>
      <author>Alkine (Jurgen Strydom)</author>
    </item>
    <item>
      <title>Generate and play midi on mobile phone</title>
      <link>http://snippets.dzone.com/posts/show/572</link>
      <description>From a previous snippet, you can play any sound file&lt;br /&gt;(including midi) with pys60. &lt;br /&gt;http://bigbold.com/snippets/posts/show/400&lt;br /&gt;&lt;br /&gt;Now, what if you can generate a midi file as well?&lt;br /&gt;I found a pure python midi file library.&lt;br /&gt;http://www.mxm.dk/products/public/pythonmidi&lt;br /&gt;&lt;br /&gt;I modify it a bit, just to make a single file for easy download.&lt;br /&gt;http://larndham.net/service/pys60/smidi.py&lt;br /&gt;With it, you can play a single note with the following code.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; import smidi&lt;br /&gt;&gt;&gt;&gt; m = smidi.MidiOutFile('C:\\out.mid')&lt;br /&gt;&gt;&gt;&gt; m.header()&lt;br /&gt;&gt;&gt;&gt; m.start_of_track()&lt;br /&gt;&gt;&gt;&gt; m.update_time(0)&lt;br /&gt;&gt;&gt;&gt; m.note_on(note=0x40)  # single note&lt;br /&gt;&gt;&gt;&gt; m.update_time(192)&lt;br /&gt;&gt;&gt;&gt; m.note_off(note=0x40) # stop it after 192&lt;br /&gt;&gt;&gt;&gt; m.update_time(0)&lt;br /&gt;&gt;&gt;&gt; m.end_of_track()&lt;br /&gt;&gt;&gt;&gt; m.eof()&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; from audio import Sound&lt;br /&gt;&gt;&gt;&gt; s = Sound.open('C:\\out.mid')&lt;br /&gt;&gt;&gt;&gt; s.play()&lt;br /&gt;&gt;&gt;&gt; s.close()&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;These 10 lines can be made into a simple function.&lt;br /&gt;Then, you can just type a line and play any note you like&lt;br /&gt;on you mobile phone.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; from smidi import play&lt;br /&gt;&gt;&gt;&gt; play([(64,192), (32, 192)])&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ah... so pythonic. ^_^</description>
      <pubDate>Wed, 10 Aug 2005 00:37:27 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/572</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
    <item>
      <title>Playing sound</title>
      <link>http://snippets.dzone.com/posts/show/400</link>
      <description>py_s60 1.1.3 provides audio module which allow you to&lt;br /&gt;play sound. This should let people write some fun games.&lt;br /&gt;&lt;br /&gt;Here's a quick example.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;from audio import *&lt;br /&gt;f = 'C:\\Nokia\\Sounds\\Digital\\28050.amr'&lt;br /&gt;s = Sound.open(f)&lt;br /&gt;s.play()&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I have tried calling Sound.open(f).play() directly, but&lt;br /&gt;it doesn't seem to work. I may be waiting for file loading&lt;br /&gt;or wait for some callback. I don't know.&lt;br /&gt;&lt;br /&gt;You can play it many times or repeat forever&lt;br /&gt;&lt;code&gt;&lt;br /&gt;s.play(3) # 3 times&lt;br /&gt;s.play(KMdaRepeatForever) # or just use -2&lt;br /&gt;s.stop() # Ok, enough of it&lt;/code&gt;</description>
      <pubDate>Sun, 19 Jun 2005 23:12:00 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/400</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
  </channel>
</rss>
