Using WWW to load External Music Files issue

Hiya Guys, this is for the newest version of unity 4.6.1f1

I’ve been trying to use WWW to load local and external music from a full file path location.
I have found various examples including the linked stack overflow question below (along side other examples). However they all seem to fail on the loading of the music.

The problem that occurs is that the process simply never get’s out of this statement which suggests it never loads.

using UnityEngine;
using System.Collections;
using System.Collections.Generic; // needed for the IEnumerator functions
using System.IO; // Needed for file reading
using ExtensionMethods;// Directory Scanner is an extension method so we needs to add that 

public class MusicTest : MonoBehaviour {
	DirectoryInfo pcLocation = new DirectoryInfo ("./"); //this is here for testing purposes so matt doesn't have to create a dynamic path - should find all music files in the game

	string [] extensionsToSearchFor = {".Ogg",".wav"};// for testing purposes, we won't have the mp3 searched for untill this error gets fixed
	
	public AudioSource source; // create our audioSource
	
	public List<AudioClip> clips = new List<AudioClip>(); // create a list of audioclips
	
	[SerializeField] [HideInInspector] private int currentIndex = 0; // create the index location  which we need to use later

	//What to do on load
	void Start(){
		//clips.Clear(); // Remove any clips from the current array *untested
		
		if (source == null) source = gameObject.AddComponent<AudioSource>();
		
		checkSystem();// will remove this currently loads so I don't have to start this every time
		
	}


		

	//The method that will get called when the Find music button gets called which checks the platform
	public void checkSystem(){
		string systemType = returnSystem();// this just returns if we are on a pc or phone etc etc 
		
		if (systemType == "IOS")
		{
			ScanForMusic (IOSSearchLocation); // passes the default location of the certain types of systems
		}
		else if (systemType == "andriod")
		{
			ScanForMusic (andriodLocation);
		}	
		else
		{
			print (systemType);
			ScanForMusic(pcLocation);
		}
	}
	

	// This should create a list of playable music from the given default path 
	void ScanForMusic(DirectoryInfo path)
	{
		string systemType = returnSystem();// pull out the type of system we are running out off 
		
		//This section should be moved to the UI as it is needed for creating the list / return the list 
		//Call the get files by extension method which returns the IEnumerable Fileinfro type , we also give it the list of extensions to look for 
		IEnumerable<FileInfo> files = path.GetFilesByExtensions(extensionsToSearchFor);
		
		//check list isn't empty - not convinced this works with the File type
		if (files != null)
		{
			foreach(var f in files)
			{
				string fullPathName = f.DirectoryName + "\\" + f.Name; // create the fully qualfied name - name with file path - \\ is special character so needs \\
				string fileExtension = f.Extension; // get the extension of the song so we can figure out if we need to change it 
				//print (fullSongName); 
				print (fileExtension);
				systemType = "pc"; // currrently having to do this as variable isn't being passed through  
				if (systemType == "pc") // 
				{
					StartCoroutine(LoadFilePC(fullPathName,fileExtension)); // added for loading of songs on PC which has a different starting file path
				}
				else
				{
					StartCoroutine(LoadFile(fullPathName,fileExtension)); // just use the default method
				}
			}
		}
		else 
		{
			print("No Songs Found");
		}
		
		
	}


	// Play the Current Clip in the index (at the moment just set to 0 so will load the first song in the array 
	public void PlayCurrent()
	{
		print (clips.Count);
		source.clip = clips[currentIndex];
		source.Play();
	}

	
	//Takes the path of the file we want to load and the type of extension of the file
	//Seperate Method is needed as we need to do extra stuff for PC MP3 files and WWW uses an extra / compared to the moblie versions (strickley speaking this is for OSX,PC and MAC)
	// Takes the file and loads it  (I believe the path might have to be using / instead of \ which we are currently passing through) 
	IEnumerator LoadFilePC(string path,string ext)
	{
		print("loading " + path);
		WWW www = new WWW("file:///" + path);// loads a www object with the path of the file -- windows + OSX and windows phones need extra/ - http://docs.unity3d.com/ScriptReference/WWW.html
		print ("file:///" + path);
		if (ext == ".mp3")//// this is because it can't load mp3's on pc so we need to trick it to use oggvorbis
		{
			AudioClip clip = www.GetAudioClip(true,false,AudioType.OGGVORBIS);// trys to load mp3s as type oggvorbis untested// http://forum.unity3d.com/threads/unity-3-2-streaming-of-on-this-platform-is-not-supported-unityengine-www-get_audio.77442/  or http://forum.unity3d.com/threads/www-oggvorbis-vs-www-audioclip-webplayer-playback-problem.161651/
			while(!clip.isReadyToPlay)// while the clip hasn't been downloaded yet it will return www
				yield return www;
			//while(www.progress <0.08){
			//	yield return new WaitForSeconds(1);}
			
			if (!string.IsNullOrEmpty(www.error)) // seeing if there was an error during the download http://docs.unity3d.com/ScriptReference/WWW-error.html
				Debug.Log(www.error);
			
			print("done loading");
			clip.name = Path.GetFileName(path); // add the path of the file to play to the array 
			clips.Add(clip);// add the clip to the array 
			print (clips.Count);
			
		}
		else//Use the standard formating if its anything but mp3
		{	
			print ("hello");
			AudioClip clip = www.GetAudioClip(false);  // create the audioclip using the WWW referenceand its get audio clip function
			
			while(!clip.isReadyToPlay) // while the clip hasn't been downloaded yet it will return www
				yield return www;
			
			if (!string.IsNullOrEmpty(www.error)) // seeing if there was an error during the download http://docs.unity3d.com/ScriptReference/WWW-error.html
				Debug.Log(www.error);
			
			print("done loading");
			clip.name = Path.GetFileName(path);  // add the path of the file to play to the array 
			clips.Add(clip);// add the clip to the array 
		}
		
	}
}

I have tried with multiple examples but yet it always gets stuck at the same part of the process.
I also got a friend to try to see if could get it to work as well on the same version with no luck.

Is there any known issues or fixes for using WWW in unity 4? Or are there any alternative functions/classes for loading?

Any help would be much appreciated!
Thanks

Fyi (i asked this in Unity ID and c# - Using WWW to load External Music Files issue Yield Not Returning - Stack Overflow with no responses)

EDIT Added my code(i’ve taken chunks of actual class to make it clearer as its a mess so sorry! Just FYI if i’ve not copied something): - also I based my code off the answer to this question:

Which i’ve not had any luck getting to run either. I’ve tested this on both a PC and MAC and with an absolute file path and had no luck. I’ve also tested with Wav.

If you don’t need streaming why don’t you just do this:

WWW www = new WWW(url);
yield return www;

if (!string.IsNullOrEmpty(www.error)) 
    Debug.LogError(www.error);
else
    clips.Add(www.audioClip);