//////public
static double
PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_CRESTS =
-600000000;
//////public static double
PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_TROUGHS = -600000000;
//////public static double
PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS
= -600000000;
CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
=
Math.Min
(
CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
,
(double) maxWidth
);
CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
=
Math.Max
(
CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
,
(double)maxWidth
);
///////////////////////////////////////////////////////////////////////////////////////////////////////
CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS
=
Math.Max
(
CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS
,
(double)maxHeight
);
///////////////////////////////////////////////////////////////////////////////////////////////////////
rgead the running code thoroughly thoroughly thoroughly and describe the
theory and analyse the novelty of the theory comparing with citations and other
searches F:\sanjoy_workouts\dnlds\SANJOY NATHS QHENOMENOLOGY AABB WAVE
THEROY.txt
To meet your exact
specification, here's a new C# function that takes a List<CRESTTROUGHObject> (after stacking
and normalized DXF processing), sorts them based on the scaled X coordinate of
the center of gravity (CG), ranks them, and then generates one WAV file per
rank. Each WAV contains amplitudes only for the AABB region of that rank — all
other samples are zero.
csharp
CopyEdit
public
static void GenerateRankedSpectralWavFiles(
List<CRESTTROUGHObject>
allCrestTroughObjects,
int totalSamples,
int sampleRate,
string outputFolder)
{
// Sort by scaled CG_X to identify vertical
spectral alignment
var rankedGroups = allCrestTroughObjects
.GroupBy(obj =>
Math.Round(obj.Scaled_CG_X, 6)) // group by X of CG
.OrderBy(g => g.Key)
.Select((group, rankIndex) => new {
Rank = rankIndex + 1, Objects = group.ToList() })
.ToList();
foreach (var group in rankedGroups)
{
short[] outputSamples = new short[totalSamples];
foreach (var obj in group.Objects)
{
for (int i = obj.StartSampleIndex;
i <= obj.EndSampleIndex; i++)
{
// Clip to avoid overflow
if (i >= 0 && i <
totalSamples)
{
outputSamples[i] =
obj.SavedAmplitudes[i - obj.StartSampleIndex];
}
}
}
string outPath =
Path.Combine(outputFolder, $"Rank_{group.Rank:D3}.wav");
WriteMono16BitPCM_WAV(outPath,
outputSamples, sampleRate);
}
}
Assumptions:
- Each CRESTTROUGHObject contains:
- Scaled_CG_X → normalized/stacked X-CG.
- StartSampleIndex, EndSampleIndex → position
in original WAV.
- SavedAmplitudes[] → original amplitudes within the
AABB region.
- WriteMono16BitPCM_WAV is your
existing method to save a mono 16-bit PCM WAV file.
- Total samples and sample rate are
preserved exactly.
Output:
- Each WAV contains only the signal
portion from one vertical spectral line (ranked by CG_X).
- You get <600 WAV files like Rank_001.wav, Rank_002.wav, etc., with
duration and format matching the input.
Would you like a
version where each spectral line is saved in both audio and visual (DXF or
PNG)? Or combine multiple low-energy lines into one?
Here's a fully
self-contained version of the method WriteMono16BitPCM_WAV, which writes a
mono 16-bit PCM WAV file given:
- string
outPath
→ destination file path
- short[]
outputSamples
→ sample data
- int
sampleRate
→ samples per second (e.g., 8000, 44100)
✅ WriteMono16BitPCM_WAV
Function (C# 7.0, .NET 4.8 Compatible)
csharp
CopyEdit
public
static void WriteMono16BitPCM_WAV(string outPath, short[] outputSamples, int
sampleRate)
{
int byteRate = sampleRate * 2; // mono,
16-bit = 2 bytes per sample
int subchunk2Size = outputSamples.Length * 2;
int chunkSize = 36 + subchunk2Size;
using (BinaryWriter bw = new
BinaryWriter(File.Create(outPath)))
{
// RIFF header
bw.Write(System.Text.Encoding.ASCII.GetBytes("RIFF"));
bw.Write(chunkSize);
bw.Write(System.Text.Encoding.ASCII.GetBytes("WAVE"));
// fmt subchunk
bw.Write(System.Text.Encoding.ASCII.GetBytes("fmt "));
bw.Write(16); // PCM
bw.Write((short)1); // audio format = 1
(PCM)
bw.Write((short)1); // mono
bw.Write(sampleRate);
bw.Write(byteRate);
bw.Write((short)2); // block align =
numChannels * bitsPerSample/8
bw.Write((short)16); // bits per sample
// data subchunk
bw.Write(System.Text.Encoding.ASCII.GetBytes("data"));
bw.Write(subchunk2Size);
foreach (short sample in outputSamples)
{
bw.Write(sample);
}
}
}
📝
Notes
- Supports mono (1-channel)
only.
- Samples are assumed to be 16-bit
signed integers in range [-32768,
32767].
- WAV file conforms to standard
RIFF PCM format and is compatible with all audio software.
Would you like a
version that supports stereo, floating-point WAV, or appends
additional metadata (e.g., cue points, annotations)?
To get the outputFolder (i.e., the folder
where the input WAV file is located) from the full input file path (e.g., F:\mywaves\inputfile.wav), you can use:
✅
Code Snippet (C# 7.0, .NET Framework 4.8 Compatible)
csharp
CopyEdit
string
inputFilePath = @"F:\mywaves\inputfile.wav";
string
outputFolder = Path.GetDirectoryName(inputFilePath);
🔍
Explanation:
- Path.GetDirectoryName(...) extracts the
directory from the full file path.
- For example:
- F:\mywaves\inputfile.wav → F:\mywaves
- C:\Users\Sanjoy\Samples\test.wav → C:\Users\Sanjoy\Samples
If you want to create
a subfolder like "SpectralRanks" under the same input folder:
csharp
CopyEdit
string
outputFolder = Path.Combine(Path.GetDirectoryName(inputFilePath), "SpectralRanks");
Directory.CreateDirectory(outputFolder);
// Ensure it exists
Let me know if you
want this logic wrapped into a helper function like GetOutputFolderFromInputFile(string
inputPath, string subDirName).
strictly dont
change the programming structure of this working running code and incorporate
the List populations as the discussed conditions and rewrite full function with
enhancements public static void
CALL_THIS_BEFORE_GENERATING___RANKED_WAV_FILES___ExportDxf_With_CREST_TROUGH_COUNTER_AS_Y_VALUES___SAAN_STYLES_SINGLE_OUTER_GRAPH_SAANS_NORMALIZED_SCALED_TO_MAX_WIDTH_CG_X_DATABoxesAndText(List<CrestTroughObject>
crestTroughs, string wavPath)
{
string path =
Path.ChangeExtension(wavPath,
"__crest_trough_counter_as_y_scaling_NORMALIZED_SCALED_TO_MAX_WIDTH_CG_X_DATA.dxf");
using (StreamWriter
sw = new StreamWriter(path))
{
sw.WriteLine("0\nSECTION\n2\nENTITIES");
float w =
(float)CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS;
//ct.BoundingBox.Width;
// float h =
// 10000f;
float h =
// 10000f;
(float)
(CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS)
*10000f
;
//
ct.BoundingBox.Height;
float left = 0f;//
cx - w / 2;
float right = w;//
cx + w / 2;
float top = h;//
ct.IsCrest ? 0 + h : 0;
float bottom =
-h;// ct.IsCrest ? 0 : 0 - h;
int color = 6;//
ct.IsCrest ? 5 : 1;
float center_x = w
/ 2;// 0;
//////// Bounding
box edges (4 lines)
sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{left:F3}\n20\n{top:F3}\n30\n0\n11\n{right:F3}\n21\n{top:F3}\n31\n0");
// top
sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{left:F3}\n20\n{bottom:F3}\n30\n0\n11\n{right:F3}\n21\n{bottom:F3}\n31\n0");
// bottom
sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{left:F3}\n20\n{top:F3}\n30\n0\n11\n{left:F3}\n21\n{bottom:F3}\n31\n0");
// left
sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{right:F3}\n20\n{top:F3}\n30\n0\n11\n{right:F3}\n21\n{bottom:F3}\n31\n0");
// right
//////// Axes lines
color = 1;//
sw.WriteLine($"0\nLINE\n8\n0\n62\n8\n10\n{left:F3}\n20\n0.000\n30\n0\n11\n{right:F3}\n21\n0.000\n31\n0");
// X axis
//
sw.WriteLine($"0\nLINE\n8\n0\n62\n8\n10\n{cx:F3}\n20\n{bottom:F3}\n30\n0\n11\n{cx:F3}\n21\n{top:F3}\n31\n0");
// Y axis
sw.WriteLine($"0\nLINE\n8\n0\n62\n8\n10\n{center_x:F3}\n20\n{bottom:F3}\n30\n0\n11\n{center_x:F3}\n21\n{top:F3}\n31\n0");
// Y axis
///
crestTroughs.ToArray<CrestTroughObject>().
///
//done in open and
scan wav files
////////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS.
//////public static
double PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_CRESTS = +600000000;
//////public static
double PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_CRESTS = -600000000;
//////public static
double PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_TROUGHS = +600000000;
//////public static
double PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_TROUGHS = -600000000;
//////public static
double PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
= +600000000;
//////public static
double
PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
= -600000000;
//////public static
double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_CRESTS
= -600000000;
//////public static
double
PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_TROUGHS =
-600000000;
//////public static
double
PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS
= -600000000;
//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS
//////.PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
//////=
//////Math.Min
//////(
//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS
//////.PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
//////,
//////(double)current.WidthMicroseconds
//////);
//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS
//////.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
//////=
//////Math.Max
//////(
//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS
//////.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
//////,
//////(double)current.WidthMicroseconds
//////);
for (int i = 0; i
< crestTroughs.Count; i++)
{
float
_saans_x_width_scales_factor = 1.0f;
float
_saans_y_height_scales_factor = 1.0f;
// var ct =
crestTroughs[i];
CrestTroughObject
ct = crestTroughs[i];
_saans_x_width_scales_factor
=
(float)
((float)CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
/
(ct.WidthMicroseconds));
//
Console.WriteLine("to calculate cx data ====== max mikros found = " +
CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
+ " ct.WidthMicroseconds = " + ct.WidthMicroseconds + "
_saans_x_width_scales_factor= " + _saans_x_width_scales_factor);
_saans_y_height_scales_factor
=
(float)
((float)CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS
.PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS
/
(ct.HeightAmplitude));
//
Console.WriteLine("to calculate cx data ====== max mikros found = " +
CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS
+ " ct.WidthMicroseconds = " + ct.WidthMicroseconds + " _saans_x_width_scales_factor=
" + _saans_x_width_scales_factor);
float cx = ct.CG.X;
cx
=
(float)((_saans_x_width_scales_factor) * cx);
// this is
important to generate ranked wav files
crestTroughs.ElementAt<CrestTroughObject>(i)
.PUBLIC_DOUBLE_NON_DUPLICATE_CG_X_FOR_SAAN_STYLES_NORMALIZATION_DONE_ON_GLOBAL_MAX_WIDH_OF_ALL_AABB_OBJECTS
= (double)cx;
// this is
important to generate ranked wav files
float cy =
ct.IsCrest ? ct.CG.Y : -Math.Abs(ct.CG.Y);
float preserved_cy
= ct.IsCrest ? ct.CG.Y : -Math.Abs(ct.CG.Y);
int
___overallcresttroughcounter =
(int)ct.OVERALL_AABB_COUNTER_EITHER_IT_IS_CREST_OR_IT_IS_TROUGH____COUNTER_TO_RECONSTRUCTION_THE_ACTUAL_QUEUE_STRUCTURE_FROM_THE_STACK_ANALYSIS_DATA;
float
factor___overallcresttroughcounter=(float)(((float)___overallcresttroughcounter)
/((float)(crestTroughs.Count)));
cy = cy *
(factor___overallcresttroughcounter * _saans_y_height_scales_factor);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
crestTroughs.ElementAt<CrestTroughObject>(i)
.
PUBLIC_DOUBLE_NON_DUPLICATE_CG_Y_FOR_SAAN_STYLES_NORMALIZATION_DONE_ON_GLOBAL_MAX_HEIGHTS_OF_ALL_AABB_OBJECTS
=
(double)preserved_cy * _saans_y_height_scales_factor;
//////float w =
ct.BoundingBox.Width;
//////float h =
ct.BoundingBox.Height;
//////float left =
cx - w / 2;
//////float right =
cx + w / 2;
//////float top =
ct.IsCrest ? 0 + h : 0;
//////float bottom
= ct.IsCrest ? 0 : 0 - h;
//////int color =
ct.IsCrest ? 5 : 1;
color = ct.IsCrest
? 5 : 1;
// CG circle
float radius =
Math.Max(1f, (ct.EndSampleIndex - ct.StartSampleIndex) / 10f);
sw.WriteLine($"0\nCIRCLE\n8\n0\n62\n{color}\n10\n{cx:F3}\n20\n{cy:F3}\n30\n0\n40\n{radius:F3}");
// Label text
sw.WriteLine($"0\nTEXT\n8\n0\n62\n{color}\n10\n{cx:F3}\n20\n{cy:F3}\n30\n0\n40\n{radius:F3}\n1\n#i={i}___{factor___overallcresttroughcounter}");
}
sw.WriteLine("0\nENDSEC\n0\nEOF");
}
}//public static
void CALL_THIS_BEFORE_GENERATING___RANKED_WAV_FILES___ExportDxf_With_CREST_TROUGH_COUNTER_AS_Y_VALUES___SAAN_STYLES_SINGLE_OUTER_GRAPH_SAANS_NORMALIZED_SCALED_TO_MAX_WIDTH_CG_X_DATABoxesAndText(List<CrestTroughObject>
crestTroughs, string wavPath)
No comments:
Post a Comment