Skip() 공개 메소드

データを読み飛ばす。
public Skip ( int length ) : bool
length int 読み飛ばす長さ
리턴 bool
예제 #1
0
		}//Read

		/// <summary>
		/// ファイルから Wave データを読み出し。
		/// </summary>
		/// <param name="filename">ファイル名</param>
		/// <param name="length">読み込む長さ</param>
		/// <param name="skip">ファイルの先頭を読み飛ばす長さ</param>
		/// <param name="threshold">閾値。この値以下の音は無音とみなす</param>
		/// <param name="relative">閾値にピーク値からみた相対値を使う</param>
		/// <returns>読み出したデータ</returns>
		static WaveData Read(
			string filename, int skip, int length,
			double threshold ,bool relative)
		{
			WaveReader reader = null;
			FormatHeader header;
			double[] l;
			double[] r;

			using(reader = new WaveReader(filename))
			{
				header = reader.Header;
				reader.Skip(0);
				reader.Read(reader.Length, out l, out r);
			}

			if(relative) threshold *= Math.Max(GetPeekValue(l), GetPeekValue(r));
			skip += Math.Min(GetSilentLength(l, threshold), GetSilentLength(r, threshold));
			if(skip < 0 || skip + length >= l.Length) skip = 0;

			return new WaveTime(header, CopyArray(l, skip, length), CopyArray(r, skip, length));
		}//Read
예제 #2
0
		}//Read

		/// <summary>
		/// ファイルから Wave データを読み出し。
		/// </summary>
		/// <param name="filename">ファイル名</param>
		/// <param name="length">読み込む長さ</param>
		/// <param name="skip">ファイルの先頭を読み飛ばす長さ</param>
		/// <param name="threshold">閾値。この値以下の音は無音とみなす</param>
		/// <param name="relative">閾値にピーク値からみた相対値を使う</param>
		/// <param name="type">リファレンスのタイプ</param>
		/// <returns>読み出したデータ</returns>
		static WaveData Read(
			string filename, int skip, int length,
			double threshold ,bool relative, ReferenceType type)
		{
			WaveReader reader = null;
			FormatHeader header;
			double[] l;
			double[] r;

			using(reader = new WaveReader(filename))
			{
				header = reader.Header;

				// R ch を使いたいのに wave ファイルがモノラルの場合
				if(type != ReferenceType.Left && reader.Header.ch == 1)
				{
					return new WaveTime();
				}

				reader.Skip(0);
				reader.Read(reader.Length, out l, out r);
			}

			if(type == ReferenceType.Left)
			{
				if(relative) threshold *= GetPeekValue(l);
				skip += GetSilentLength(l, threshold);
			}
			else if(type == ReferenceType.Right)
			{
				if(relative) threshold *= GetPeekValue(r);
				skip += GetSilentLength(r, threshold);
			}
			else
			{
				if(relative) threshold *= Math.Max(GetPeekValue(l), GetPeekValue(r));
				skip += Math.Min(GetSilentLength(l, threshold), GetSilentLength(r, threshold));
			}
			if(skip < 0 || skip + length >= l.Length) skip = 0;

			return new WaveTime(header, CopyArray(l, skip, length), CopyArray(r, skip, length));
		}//Read
예제 #3
0
		/// <summary>
		/// ファイルから Wave データを読み出し。
		/// </summary>
		/// <param name="filename">ファイル名</param>
		/// <param name="length">読み込む長さ</param>
		/// <param name="skip">ファイルの先頭を読み飛ばす長さ</param>
		/// <returns>読み出したデータ</returns>
		static WaveData Read(string filename, int skip, int length)
		{
			WaveReader reader = null;
			FormatHeader header;
			double[] l;
			double[] r;

			using(reader = new WaveReader(filename))
			{
				header = reader.Header;
				reader.Skip(skip);
				reader.Read((uint)length, out l, out r);
			}

			return new WaveTime(header, l, r);
		}//Read