private void UpdateFileList(object sender, FileSystemEventArgs e) { string[] lFilePathArray = PoolFilePath.Get(directoryInfo); List <string> lFilePathNewList = new List <string>(); // Check New File. for (int i = 0; i < lFilePathArray.Length; i++) { string lFilePath = lFilePathArray[i]; long lTimeStampTicks = File.GetLastWriteTime(lFilePath).Ticks; if (timeStampTicksDictionary.ContainsKey(lFilePath) == false) { timeStampTicksDictionary.Add(lFilePath, lTimeStampTicks); lFilePathNewList.Add(lFilePath); } else if (lTimeStampTicks != timeStampTicksDictionary[lFilePath]) { timeStampTicksDictionary[lFilePath] = lTimeStampTicks; lFilePathNewList.Add(lFilePath); } } for (int i = 0; i < lFilePathNewList.Count; i++) { string lFilePath = lFilePathNewList[i]; //Logger.BreakDebug( "Input:" + lFilePath ); if (Path.GetExtension(lFilePath) == ".meta") { continue; } try { IMusic lMusic = ConstructorCollection.ConstructMusic(lFilePath); if (lMusic != null) { if (musicInformationDictionary.ContainsKey(lFilePath) == false) { filePathList.Add(lFilePath); musicInformationDictionary.Add(lFilePath, new InputMusicInformation(timeStampTicksDictionary[lFilePath], false, lMusic, 0.0d)); } else { musicInformationDictionary[lFilePath] = new InputMusicInformation(timeStampTicksDictionary[lFilePath], false, lMusic, 0.0d); } } } catch (Exception aExpection) { Logger.BreakError("LoopPlaylist Exception:" + aExpection.ToString() + ":" + lFilePath); } } }
private static List <LoopInformation> SearchLoopPoints(SByte[] aDataArray, InputMusicInformation aData, string aFilePath) { List <LoopInformation> lLoopPointList = new List <LoopInformation>(); int lLength = aDataArray.Length; if (lLength > FEADOUT_SAMPLES * 2) { lLength -= FEADOUT_SAMPLES; } int lMinLoopLength = 4410; //SEARCH_WIDTH aData.progress = 0.0d; object l = new object(); for (int i = 0; i < LOOP_POINTS; i++) { searchPointArray[i] = new LoopSearchPointSoundfont(aDataArray, lLength, SEARCH_WIDTH, (lLength - SEARCH_WIDTH - lMinLoopLength) / 120 * i, lMinLoopLength); lock ( l ) { aData.progress += 1.0d / LOOP_POINTS; } } aData.progress = 0.0d; for (int i = 0; i < LOOP_POINTS; i++) { for (int j = 0; j < searchPointArray[i].samePointList.Count; j++) { lLoopPointList.Add(new LoopInformation(44100, searchPointArray[i].basePoint, searchPointArray[i].samePointList[j])); } } return(lLoopPointList); }
public static List <LoopInformation> Execute(SByte[] aDataArray, InputMusicInformation aData, string aFilePath) { List <LoopInformation> lSamePointList = SearchLoopPoints(aDataArray, aData, aFilePath); return(SortLoopCount(lSamePointList)); }
public void OnGUI() { if (Event.current.type != EventType.Repaint) { UpdateFileList(null, null); } GUILayout.BeginVertical(GuiStyleSet.StyleTable.box); { float lHeightHeader = GuiStyleSet.StyleTable.labelHeaderTop.CalcSize(new GUIContent("")).y + GuiStyleSet.StyleTable.textHeader.CalcSize(new GUIContent("")).y + GuiStyleSet.StyleTable.partitionHorizontalHeader.fixedHeight; GUILayout.BeginScrollView(new Vector2(scrollPosition.x, 0.0f), false, true, GuiStyleSet.StyleTable.horizontalbarHeader, GuiStyleSet.StyleTable.verticalbarHeader, GuiStyleSet.StyleGeneral.none, GUILayout.Height(lHeightHeader)); { GUILayout.BeginHorizontal(GuiStyleSet.StyleTable.labelHeader); { bool lIsSelectedAllBefore = isSelectedAll; GUILayout.BeginVertical(GUILayout.Width(GuiStyleSet.StyleGeneral.toggleCheck.fixedWidth)); { GUILayout.FlexibleSpace(); isSelectedAll = GUILayout.Toggle(isSelectedAll, new GUIContent("", "StyleGeneral.ToggleCheck"), GuiStyleSet.StyleGeneral.toggleCheck); GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVerticalHeader"), GuiStyleSet.StyleTable.partitionVerticalHeader); GUILayout.Label(new GUIContent("Name", "StyleTable.TextHeader"), GuiStyleSet.StyleTable.textHeader, GUILayout.MinWidth(160.0f)); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVerticalHeader"), GuiStyleSet.StyleTable.partitionVerticalHeader); GUILayout.Label(new GUIContent("Length", "StyleTable.TextHeader"), GuiStyleSet.StyleTable.textHeader, GUILayout.Width(80.0f)); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVerticalHeader"), GuiStyleSet.StyleTable.partitionVerticalHeader); GUILayout.Label(new GUIContent("Progress", "StyleTable.TextHeader"), GuiStyleSet.StyleTable.textHeader, GUILayout.Width(140.0f)); if (isSelectedAll != lIsSelectedAllBefore) { foreach (string l in filePathList) { if (musicInformationDictionary.ContainsKey(l) == true) { musicInformationDictionary[l].isSelected = isSelectedAll; } } } } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); { scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, true, GuiStyleSet.StyleScrollbar.horizontalbar, GuiStyleSet.StyleScrollbar.verticalbar, GuiStyleSet.StyleScrollbar.view); { GUIStyle[] lViewRow = { GuiStyleSet.StyleTable.viewRowA, GuiStyleSet.StyleTable.viewRowB }; int lCount = 0; for (int i = 0; i < filePathList.Count; i++) { string lFilePath = filePathList[i]; if (musicInformationDictionary.ContainsKey(lFilePath) == true) { InputMusicInformation lMusicInformation = musicInformationDictionary[lFilePath]; GUILayout.BeginHorizontal(lViewRow[lCount % 2]); { lCount++; lMusicInformation.isSelected = GUILayout.Toggle(lMusicInformation.isSelected, new GUIContent("", "StyleGeneral.ToggleCheck"), GuiStyleSet.StyleGeneral.toggleCheck); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVertical"), GuiStyleSet.StyleTable.partitionVertical); if (lFilePath == getPlayingMusic()) { if (GUILayout.Toggle(true, new GUIContent(Path.GetFileName(lFilePath), "StyleTable.ToggleRow"), GuiStyleSet.StyleTable.toggleRow, GUILayout.MinWidth(160.0f)) == false) { playMusic(lFilePath); } } else { if (GUILayout.Toggle(false, new GUIContent(Path.GetFileName(lFilePath), "StyleTable.ToggleRow"), GuiStyleSet.StyleTable.toggleRow, GUILayout.MinWidth(160.0f)) == true) { playMusic(lFilePath); } } GUILayout.Label(new GUIContent("", "StyleTable.PartitionVertical"), GuiStyleSet.StyleTable.partitionVertical); GUILayout.TextField(lMusicInformation.music.Length.MMSS, GuiStyleSet.StyleTable.textRow); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVertical"), GuiStyleSet.StyleTable.partitionVertical); if (musicInformationDictionary[lFilePath].isSelected == true) { if (lMusicInformation.progress > 0.0f) { GUILayout.HorizontalScrollbar(0.0f, ( float )lMusicInformation.progress, 0.0f, 1.01f, "progressbar", GUILayout.Width(132.0f)); } else { GUILayout.Label(new GUIContent("", "StyleProgressbar.Progressbar"), GuiStyleSet.StyleProgressbar.progressbar, GUILayout.Width(132.0f)); } } else { GUILayout.Label(new GUIContent("", "StyleGeneral.None"), GuiStyleSet.StyleGeneral.none, GUILayout.Width(140.0f)); } } GUILayout.EndHorizontal(); } } GUILayout.BeginHorizontal(); { GUILayout.BeginVertical(GUILayout.Width(24.0f)); { GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVertical"), GuiStyleSet.StyleTable.partitionVertical); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVertical"), GuiStyleSet.StyleTable.partitionVertical); GUILayout.BeginVertical(GUILayout.Width(80.0f)); { GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); GUILayout.Label(new GUIContent("", "StyleTable.PartitionVertical"), GuiStyleSet.StyleTable.partitionVertical); GUILayout.BeginVertical(GUILayout.Width(140.0f)); { GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); }
public static void Execute( string aFilePathInput, string aFilePathOutput, InputMusicInformation aData ) { RiffWaveRiff lRiffWaveRiff = ( RiffWaveRiff )PoolCollection.GetRiffWave( aFilePathInput ); WaveformPcm lWaveform = new WaveformPcm( lRiffWaveRiff ); SByte[] lSampleArray = new SByte[lWaveform.format.samples]; lSampleArray = lWaveform.data.sampleByteArray[0]; List<LoopInformation> lLoopList = null; try { if( lWaveform.format.samples > 44100 * 16 ) { lLoopList = LoopSearchTool.Execute( lSampleArray, aData, aFilePathInput ); } else { lLoopList = LoopSearchToolSoundfont.Execute( lSampleArray, aData, aFilePathInput ); } } catch( Exception aExpection ) { Logger.BreakError( aExpection.ToString() + ":LoopTool Exception" ); } for( int i = 0; i < lLoopList.Count; i++ ) { AddCuePoint( lRiffWaveRiff, ( int )lLoopList[i].start.sample, ( int )lLoopList[i].end.sample ); AddSampleLoop( lRiffWaveRiff, ( int )lLoopList[i].start.sample, ( int )lLoopList[i].end.sample ); } Byte[] lDataArrayRead = null; RiffWaveData dataChunk = ( RiffWaveData )lRiffWaveRiff.GetChunk( RiffWaveData.ID ); using ( FileStream u = new FileStream( lRiffWaveRiff.name, FileMode.Open, FileAccess.Read ) ) { AByteArray l = new ByteArrayLittle( u ); int bytePosition = ( int )dataChunk.position; l.SetPosition( bytePosition ); lDataArrayRead = l.ReadBytes( dataChunk.Size ); } SetDataArray( lRiffWaveRiff, lDataArrayRead ); Logger.BreakDebug( "lMemoryStreamWrite" ); MemoryStream lMemoryStreamWrite = new MemoryStream( ( int )lRiffWaveRiff.Size + 8 ); ByteArrayLittle lByteArray = new ByteArrayLittle( lMemoryStreamWrite ); lRiffWaveRiff.WriteByteArray( lByteArray ); Logger.BreakDebug( "WriteByteArray" ); Logger.BreakDebug( "Out:" + aFilePathOutput ); try { using( FileStream u = new FileStream( aFilePathOutput, FileMode.Create, FileAccess.Write, FileShare.Read ) ) { u.Write( lMemoryStreamWrite.GetBuffer(), 0, ( int )lMemoryStreamWrite.Length ); } } catch( Exception aExpection ) { Logger.BreakError( "Write Exception:" + aExpection ); } }