Skip to content

Commit

Permalink
Update Track.cs
Browse files Browse the repository at this point in the history
Issue #297 Add method to draw tracks on spectrgram.
  • Loading branch information
towsey committed May 2, 2020
1 parent 66d41d0 commit 925e2ca
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/AudioAnalysisTools/Tracks/Track.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ namespace AudioAnalysisTools.Events.Tracks
using System.Linq;
using AudioAnalysisTools.Events.Drawing;
using AudioAnalysisTools.Events.Interfaces;
using AudioAnalysisTools.StandardSpectrograms;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;

public enum TrackType
Expand Down Expand Up @@ -121,6 +124,23 @@ public double StartFrequency
}
}

public static Image<Rgb24> DrawTracksOnSpectrogram(SpectrogramStandard sonogram, List<Track> tracks, TimeSpan segmentStartOffset)
{
var sonogramData = sonogram.Data;
int frameCount = sonogramData.GetLength(0);
int binCount = sonogramData.GetLength(1);
int nyquist = sonogram.NyquistFrequency;
var options = new EventRenderingOptions(new UnitConverters(segmentStartOffset.TotalSeconds, sonogram.Duration.TotalSeconds, nyquist, frameCount, binCount));
var spectrogram = sonogram.GetImage(doHighlightSubband: false, add1KHzLines: true, doMelScale: false);

foreach (var track in tracks)
{
spectrogram.Mutate(x => track.Draw(x, options));
}

return spectrogram;
}

/// <summary>
/// Adds a new point to track given the fram, freq bin and amplitude.
/// </summary>
Expand Down

0 comments on commit 925e2ca

Please sign in to comment.