Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        public static List <LoopInformation> Execute(SByte[] aDataArray, InputMusicInformation aData, string aFilePath)
        {
            List <LoopInformation> lSamePointList = SearchLoopPoints(aDataArray, aData, aFilePath);

            return(SortLoopCount(lSamePointList));
        }
Пример #4
0
        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();
        }
Пример #5
0
		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 );
			}
		}