private void UpdateAlbumListView(string theID) { LastAlbumId = theID; MusicFolder FolderContents = Subsonic.GetMusicDirectory(theID); lbAlbums.BeginUpdate(); lbAlbums.Items.Clear(); if (AlbumListHistory.Peek() != "Root") { lbAlbums.Items.Add(new MusicFolder("..", AlbumListHistory.Peek())); } foreach (MusicFolder mf in FolderContents.Folders) { lbAlbums.Items.Add(mf); } foreach (Song sg in FolderContents.Songs) { lbAlbums.Items.Add(sg); } lbAlbums.EndUpdate(); }
private static void ReadAndLoadMusicFolderAsync(object obj) { MusicFolder mf = obj as MusicFolder; Debug.Log("Start loading " + mf.Name); foreach (MusicData md in mf.musicdata) { //string musicfilepath = cLocalPath + md.music; FileStream fileStream = new FileStream(md.music, FileMode.Open, FileAccess.Read); fileStream.Seek(0, SeekOrigin.Begin); //创建文件长度缓冲区 byte[] bytes = new byte[fileStream.Length]; //读取文件 fileStream.Read(bytes, 0, (int)fileStream.Length); //释放文件读取流 fileStream.Close(); fileStream.Dispose(); fileStream = null; //Convert Music to AudioClip Can only be deployed in the main thread. //So audioWavDic act as buffer lock (audioWavDic_lock) { //audioDic.Add(md.title, clip); audioWavDic.Add(md.title, bytes); Debug.Log("Add Music:" + md.title); } } return; }
public override int GetHashCode() { unchecked { var hashCode = (ExcelFile != null ? ExcelFile.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (MusicFolder != null ? MusicFolder.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (OutputFolder != null ? OutputFolder.GetHashCode() : 0); return(hashCode); } }
public static List <MusicFolder> LoadSongDataFromDisk() { MUSICPATH = FileManager.GetMusicDataPath() + "/"; debugtext.Add("MyDebug", "MUSICPATH " + MUSICPATH); Debug.Log("MUSICPATH " + MUSICPATH); List <MusicFolder> mf = new List <MusicFolder>(); MusicFolder temp_musicfolder; MusicData temp_music = new MusicData(); //load music files if (Directory.Exists(MUSICPATH)) { musicdir = new DirectoryInfo(MUSICPATH); DirectoryInfo[] musicsets = musicdir.GetDirectories(); for (int i = 0; i < musicsets.Length; i++) { if (File.Exists(MUSICPATH + musicsets[i].Name + "/data.csv")) { // good pack? Debug.Log("Found pack csv:" + musicsets[i].Name); //temp_musicfolder.musicdata.Clear(); try { csvController.GetInstance().loadFile(MUSICPATH + musicsets[i].Name, "data.csv"); List <string[]> musiclist = csvController.GetInstance().getData(); musiclist.RemoveAt(0); temp_musicfolder = new MusicFolder(); temp_musicfolder.Name = musicsets[i].Name; temp_musicfolder.musicdata.Clear(); foreach (string[] info in musiclist) { //temp_music.SetMusicData(info); info[6] = MUSICPATH + musicsets[i].Name + "/" + info[6]; info[7] = MUSICPATH + musicsets[i].Name + "/" + info[7]; MusicData md = new MusicData(info); md.packname = musicsets[i].Name; temp_musicfolder.musicdata.Add(md); } Debug.Log("Loaded pack csv:" + musicsets[i].Name); mf.Add(temp_musicfolder); } catch { Debug.Log(musicsets[i].Name + "load failed!"); } } } } return(mf); }
private static void ReadAndLoadMusicFolder(object obj) { //deprecated MusicFolder mf = obj as MusicFolder; Debug.Log("Start loading " + mf.Name); AudioClip clip; foreach (MusicData md in mf.musicdata) { //string musicfilepath = cLocalPath + md.music; FileStream fileStream = new FileStream(md.music, FileMode.Open, FileAccess.Read); fileStream.Seek(0, SeekOrigin.Begin); //创建文件长度缓冲区 byte[] bytes = new byte[fileStream.Length]; //读取文件 fileStream.Read(bytes, 0, (int)fileStream.Length); //释放文件读取流 fileStream.Close(); fileStream.Dispose(); fileStream = null; if (bytes.Length != 0) { //WWW www = new WWW(musicfilepath); clip = NAudioPlayer.FromMp3Data(bytes); } else { clip = null; } Debug.Log("Load " + md.music); //Read musicbytes Here: //TODO: //Convert Music to AudioClip Can only be deployed in the main thread. //So audioWavDic act as buffer lock (audioWavDic_lock) { audioDic.Add(md.title, clip); //audioWavDic.Add(md.title, musicbytes); Debug.Log("Add Music:" + md.title); } } return; }
public void Write(Android.Content.Context context) { var prefs = Android.Preferences.PreferenceManager.GetDefaultSharedPreferences(context); var editor = prefs.Edit(); editor.PutInt("version", Version); editor.PutInt("messageFilterLevel", MessageFilterLevel); editor.PutString("musicFolder", MusicFolder.Serialize()); editor.PutString("soundFolder", SoundFolder.Serialize()); editor.PutString("projectFolder", ProjectFolder.Serialize()); editor.PutInt("overallVolume", GlobalVolume); editor.PutInt("musicVolume", MusicVolume); editor.PutInt("soundVolume", SoundVolume); editor.PutInt("udpPort", UdpPort); editor.PutInt("tcpPort", TcpPort); editor.PutString("lastProject", RecentFiles.GetFiles().Count > 0 ? RecentFiles.GetFiles()[0].FilePath : String.Empty); editor.PutInt("tagMusicFadeTime", TagMusicFadeTime); editor.PutBoolean("tagMusicFadeOnlyOnChange", TagMusicFadeOnlyOnChange); editor.PutInt("buttonMusicFadeMode", ButtonMusicFadeMode); editor.PutInt("buttonMusicFadeTime", ButtonMusicFadeTime); editor.PutString("playerName", PlayerName); editor.Apply(); }
public void GivenIHaveAMusicFolder() { _folder = new MusicFolder(); }
/// <summary> /// Parse the contents of the iTunes Music Library.xml file into our data structure. /// </summary> /// <param name="fileLocation"></param> private void ParseLibrary(string fileLocation) { // Open the XML library, first as a general stream. using (StreamReader stream = new StreamReader(fileLocation, Encoding.GetEncoding("utf-8"))) { // Then interpret it as an XML file. using (XmlTextReader xmlReader = new XmlTextReader(stream) { XmlResolver = null }) { XPathDocument xPathDocument = new XPathDocument(xmlReader); XPathNavigator xPathNavigator = xPathDocument.CreateNavigator(); XPathNodeIterator nodeIterator = xPathNavigator.Select("/plist/dict"); nodeIterator.MoveNext(); nodeIterator = nodeIterator.Current.SelectChildren(XPathNodeType.All); while (nodeIterator.MoveNext()) { if (nodeIterator.Current.Value.Equals("Music Folder")) { if (nodeIterator.MoveNext()) { // Parse out the location of the music folder used by the active library. _originalMusicFolder = nodeIterator.Current.Value; MusicFolder = _originalMusicFolder.Replace("file://localhost/", string.Empty); // Strip away UNC path if it's in that format. if (MusicFolder.StartsWith("/")) { MusicFolder = $"/{MusicFolder}"; } // Decode back from XML into a usable path. MusicFolder = HttpUtility.UrlDecode(MusicFolder); // Change forward slashes to PC backslashes. MusicFolder = MusicFolder?.Replace('/', Path.DirectorySeparatorChar); } } else if (nodeIterator.Current.Value.Equals("Library Persistent ID")) { if (nodeIterator.MoveNext()) { LibraryPersistentId = nodeIterator.Current.Value; } } } // Can't move on if we don't know where the music is stored. if (MusicFolder == null) { throw new Exception("Unable to parse Music Library element from iTunes Music Library."); } // This query gets us down to the point in the library that contains individual track details. nodeIterator = xPathNavigator.Select("/plist/dict/dict/dict"); while (nodeIterator.MoveNext()) { ParseTrack(nodeIterator.Current.SelectChildren(XPathNodeType.All)); } // After tracks, we're looking at the playlists that are listed in the library. nodeIterator = xPathNavigator.Select("/plist/dict/array/dict"); while (nodeIterator.MoveNext()) { ParsePlaylist(nodeIterator.Current.SelectChildren(XPathNodeType.All)); } xmlReader.Close(); } } }
public void GivenIHaveAMusicFolder() { _folder = _fixture.Create<MusicFolder>(); }
private static IEnumerable <Song> GetSongIds(string albumKey) { MusicFolder albumContens = Subsonic.GetMusicDirectory(albumKey); return(albumContens.Songs); }
public void GivenIHaveAMusicFolder() { _folder = _fixture.Create <MusicFolder>(); }