Wave GenerateNewWave(int waveCount) { var segments = new WaveSegment[Spawners.Length]; for (var i = 0; i < segments.Length; i++) { segments[i] = GenerateWaveSegment(waveCount, Spawners[i]); } return(new Wave { Segments = segments }); }
IEnumerator RunWaveSegment(WaveSegment segment) { var totalCount = 0; foreach (var spawn in segment.Spawns) { for (var i = 0; i < spawn.MaxSpawnCount; i++) { spawn.Spawn(segment.Source.transform.position); totalCount++; yield return(new WaitForSeconds(spawn.SpawnDiff)); if (totalCount > spawn.Count) { break; } } yield return(new WaitForSeconds(spawn.PostSpawnWait)); } }
/// <summary> /// Makes the pattern into WaveSegments. /// </summary> /// <returns></returns> public WaveSegment[] PatternToWaveSegments() { string[] lines = pattern.Split('\n'); List <WaveSegment> segments = new List <WaveSegment>(); foreach (string line in lines) { WaveSegment segment = new WaveSegment(); string[] spawns = line.Split(' '); for (int i = 0; i < spawns.Length - 1; i++) { segment.spawns.Add(int.Parse(spawns[i])); } segment.wait = int.Parse(spawns[spawns.Length - 1]); segments.Add(segment); } return(segments.ToArray()); }
private void StartWavCut(string sTxtInput, string sWavInput, string sOut) { if (!File.Exists(sTxtInput) || !File.Exists(sWavInput)) throw new WavCutException("File does not exist."); string[] arLines = File.ReadAllLines(sTxtInput); if (arLines == null || arLines.Length < 3) throw new WavCutException("not enough lines"); if (arLines[0] == "wavcut") { } else if (arLines[0] == "wavfindsilence") { CWavcutFindSilence.FindSilence(sWavInput, arLines); return; } else { throw new WavCutException("The first line of the input text file should be wavcut, see trombone.txt"); } // read input file List<int> arOffsets = new List<int>(); int nPrevframe = 0; for (int i = 1; i < arLines.Length; i++) { int nFrame; if (arLines[i] == "" || arLines[i] == null) continue; if (arLines[i].Contains(".")) throw new WavCutException("We don't support decimals"); if (!int.TryParse(arLines[i],out nFrame)) throw new WavCutException("Line" + (i + 1) + " could not parse int"); arOffsets.Add(nFrame); if (nFrame <= nPrevframe) throw new WavCutException("samples must be increasing"); nPrevframe = nFrame; } if (arOffsets.Count <= 0) throw new WavCutException("Error, no points given"); // count number of samples int nSamples = CCountWaveSamples.CountWaveSamples(sWavInput); arOffsets.Add(nSamples); // construct objects that specify the intervals List<WaveSegment> arSegments = new List<WaveSegment>(); for (int i = 0; i < arOffsets.Count; i++) { if (nSamples <= arOffsets[i] && i<arOffsets.Count-1) throw new WavCutException("Error, offset is greater than length of file"); int length = (i == 0) ? arOffsets[i] : arOffsets[i] - arOffsets[i - 1]; Console.WriteLine("track " + i+ " length(s) "+length/44100.0); WaveSegment seg = new WaveSegment(); seg.m_writer = new CWaveWrite(sOut,i,length); seg.m_nStopPoint = arOffsets[i]; arSegments.Add(seg); } // stream through the audio CCutWaveProcessor processor = new CCutWaveProcessor(arSegments); CWavStreamReader.StreamThroughWaveFile(sWavInput,processor); if (nSamples != processor.GetNumberSamplesSeen()) Console.WriteLine("Warning, processor did not see all samples."); // save files and close file handles. for (int i = 0; i < arSegments.Count; i++) { arSegments[i].m_writer.Save(); } }
private void StartWavCut(string sTxtInput, string sWavInput, string sOut) { if (!File.Exists(sTxtInput) || !File.Exists(sWavInput)) { throw new WavCutException("File does not exist."); } string[] arLines = File.ReadAllLines(sTxtInput); if (arLines == null || arLines.Length < 3) { throw new WavCutException("not enough lines"); } if (arLines[0] == "wavcut") { } else if (arLines[0] == "wavfindsilence") { CWavcutFindSilence.FindSilence(sWavInput, arLines); return; } else { throw new WavCutException("The first line of the input text file should be wavcut, see trombone.txt"); } // read input file List <int> arOffsets = new List <int>(); int nPrevframe = 0; for (int i = 1; i < arLines.Length; i++) { int nFrame; if (arLines[i] == "" || arLines[i] == null) { continue; } if (arLines[i].Contains(".")) { throw new WavCutException("We don't support decimals"); } if (!int.TryParse(arLines[i], out nFrame)) { throw new WavCutException("Line" + (i + 1) + " could not parse int"); } arOffsets.Add(nFrame); if (nFrame <= nPrevframe) { throw new WavCutException("samples must be increasing"); } nPrevframe = nFrame; } if (arOffsets.Count <= 0) { throw new WavCutException("Error, no points given"); } // count number of samples int nSamples = CCountWaveSamples.CountWaveSamples(sWavInput); arOffsets.Add(nSamples); // construct objects that specify the intervals List <WaveSegment> arSegments = new List <WaveSegment>(); for (int i = 0; i < arOffsets.Count; i++) { if (nSamples <= arOffsets[i] && i < arOffsets.Count - 1) { throw new WavCutException("Error, offset is greater than length of file"); } int length = (i == 0) ? arOffsets[i] : arOffsets[i] - arOffsets[i - 1]; Console.WriteLine("track " + i + " length(s) " + length / 44100.0); WaveSegment seg = new WaveSegment(); seg.m_writer = new CWaveWrite(sOut, i, length); seg.m_nStopPoint = arOffsets[i]; arSegments.Add(seg); } // stream through the audio CCutWaveProcessor processor = new CCutWaveProcessor(arSegments); CWavStreamReader.StreamThroughWaveFile(sWavInput, processor); if (nSamples != processor.GetNumberSamplesSeen()) { Console.WriteLine("Warning, processor did not see all samples."); } // save files and close file handles. for (int i = 0; i < arSegments.Count; i++) { arSegments[i].m_writer.Save(); } }
/// <summary> /// Convert the label info sentence into a segment file. /// </summary> /// <returns>SegmentFile.</returns> public SegmentFile ToSegmentFile() { SegmentFile segmentFile = new SegmentFile(); foreach (LabelInfo lableInfo in _listLabelInfo) { WaveSegment segment = new WaveSegment(); segment.Label = lableInfo.Label; segment.StartTime = LabelInfo.ConvertToSecond(lableInfo.Start); segment.EndTime = LabelInfo.ConvertToSecond(lableInfo.End); segmentFile.WaveSegments.Add(segment); } segmentFile.UpdateNonSilenceWaveSegments(); return segmentFile; }
public Wave(WaveSegment segment) { AddSegment(segment); }
public void RemoveSegment(WaveSegment segment) { segments.Remove(segment); }
public void AddSegment(WaveSegment segment) { segments.Add(segment); }