private void button___TO_DECORATE_THE_SEQUENCES_WITH_DIFFERENT_STYLES_Click(object sender, EventArgs e)
{
//we assume the notepad++ so we dont save when reload current
//we assume the notepad++ so we dont save when reload current
//we assume the notepad++ so we dont save when reload current
//////TRYS_NOTES_NOS ###### MILLISECOND ###### CURR_NOTES_VELOCITY ###### CURR_NOTES_PATCH ###### PERCENTAGES_DURATIONS_COMMASEPS_PTCHBNDS ###### WITHIN_NOTES_PTCHBENDS_VALUES ###### CHANNEL ###### TRACK ###### NOTES_NUMBERS ###### NOTES_FREQUENCYS ######
//////61 ###### 1000 ###### 127 ###### 73 ###### 0,100 ###### 8192,16368 ###### 3 ###### 3 ###### D4 ###### 293.66 ###### ROW_NUMBER=0
//////62 ###### 1000 ###### 127 ###### 71 ###### 0,100 ###### 8192,16368 ###### 3 ###### 3 ###### D#4/Eb4 ###### 311.13 ###### ROW_NUMBER=1
//////63 ###### 1000 ###### 127 ###### 73 ###### 0,100 ###### 8192,16368 ###### 3 ###### 3 ###### E4 ###### 329.63 ###### ROW_NUMBER=2
//////57 ###### 1000 ###### 127 ###### 73 ###### 0,100 ###### 8192,16368 ###### 3 ###### 3 ###### A#3/Bb3 ###### 233.08 ###### ROW_NUMBER=3
//////53 ###### 1000 ###### 127 ###### 66 ###### 0,100 ###### 8192,16368 ###### 3 ###### 3 ###### F#3/Gb3 ###### 185 ###### ROW_NUMBER=4
//////52 ###### 1000 ###### 127 ###### 68 ###### 0,100 ###### 8192,16368 ###### 3 ###### 3 ###### F3 ###### 174.61 ###### ROW_NUMBER=5
//////LYRSYLLS ###### INDINOTES ###### TRYS_NOTES_NOS ###### MILLISECOND ###### CURR_NOTES_VELOCITY ###### CURR_NOTES_PATCH ###### PERCENTAGES_DURATIONS_COMMASEPS_PTCHBNDS ###### WITHIN_NOTES_PTCHBENDS_VALUES ###### CHANNEL ###### TRACK ###### NOTES_NUMBERS ###### NOTES_FREQUENCYS ###### JERK_MILLIS_GAP ###### JERK_UP_PITCHBEND ###### JERK_DOWN_PITCH_BEND ######
//////- ###### n ###### 64 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### F4 ###### 349.23 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=0
//////- ###### s ###### 64 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### F4 ###### 349.23 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=1
//////- ###### s ###### 53 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### F#3/Gb3 ###### 185 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=2
//////- ###### g ###### 57 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### A#3/Bb3 ###### 233.08 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=3
//////- ###### d ###### 64 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### F4 ###### 349.23 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=4
//////- ###### r ###### 55 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### G#3/Ab3 ###### 349.23 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=5
//////- ###### r ###### 55 ###### 324 ###### 127 ###### 73 ###### 0,3,20,22,30,38,48,60,68,98,100 ###### 8192,2000,11000,6000,8000,600,9000,8000,3000,11000,8000 ###### 3 ###### 3 ###### G#3/Ab3 ###### 349.23 ###### 0 ###### 0 ###### 0 ###### ROW_NUMBER=6
///FOR REFERENCES openFileDialogForDXFFiles.Filter = "dstv/nc1 Files (.nc1)|*.nc1|AdvanceSteels dstv/nc1 Files (.nc)|*.nc|All Files (*.*)|*.*";
// Open file dialog to select PDF file
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "COMPOSERF Files|*.dataGridView___COMPOSER|SAANCOMPOSER FILES|*.SAANCOMPOSER|All Files (*.*)|*.*";
string ___dummyfilesnamesformids_currentdatagridsstates_timestamps =
ExcelFormulaParser_GT_PARSERSample.Program.public_static_string_GT_folder;
//+ System.DateTime.Now.ToString("ddmmyyyyhhmmss").TrimEnd().TrimStart().Trim() + ".dataGridView___COMPOSER";
openFileDialog.FileName = ___dummyfilesnamesformids_currentdatagridsstates_timestamps;
this.___selected_filesnames_for_inputdataGridView___COMPOSER_files = "";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string inputdataGridView___COMPOSER = openFileDialog.FileName;
// string outputPdfPath = inputPdfPath + "_output_with_circle.pdf"; // Output file path
this.___selected_filesnames_for_inputdataGridView___COMPOSER_files = inputdataGridView___COMPOSER;
Console.WriteLine("inputdataGridView___COMPOSER = " + inputdataGridView___COMPOSER);
to___load_current_composer_textfiles_data_to_preclean_then_datagrids_state_to_files(inputdataGridView___COMPOSER);
System.Windows.Forms.MessageBox.Show("We will call GenerateOddEvenRagaFile" + inputdataGridView___COMPOSER);
SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
.RagaPaltas_OddEvenConcatenator
.GenerateOddEvenRagaFile
(
inputdataGridView___COMPOSER
// ,
// inputdataGridView___COMPOSER.Replace(".dataGridView___COMPOSER", "_extended_durations_loops_003") + ".dataGridView___COMPOSER"
);
System.Windows.Forms.MessageBox.Show("We will call RagaPaltas_DiagonalConcatenator" + inputdataGridView___COMPOSER);
SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
.RagaPaltas_DiagonalConcatenator
.GenerateDiagonalDecoratedFile
(
inputdataGridView___COMPOSER
// ,
// inputdataGridView___COMPOSER.Replace(".dataGridView___COMPOSER", "_extended_durations_loops_003") + ".dataGridView___COMPOSER"
);
System.Windows.Forms.MessageBox.Show("We will call RagaPaltas_ZigZagDiagonalConcatenator" + inputdataGridView___COMPOSER);
SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
.RagaPaltas_ZigZagDiagonalConcatenator
.GenerateZigzagDiagonalDecoratedFile
(
inputdataGridView___COMPOSER
// ,
// inputdataGridView___COMPOSER.Replace(".dataGridView___COMPOSER", "_extended_durations_loops_003") + ".dataGridView___COMPOSER"
);
System.Windows.Forms.MessageBox.Show("We will call RagaPaltas_SpiralDiagonal_merges_0_to_360_Composer" + inputdataGridView___COMPOSER);
SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
.RagaPaltas_SpiralDiagonal_merges_0_to_360_Composer
.GenerateSpiralDiagonalDecoratedFile
(
inputdataGridView___COMPOSER
// ,
// inputdataGridView___COMPOSER.Replace(".dataGridView___COMPOSER", "_extended_durations_loops_003") + ".dataGridView___COMPOSER"
);
System.Windows.Forms.MessageBox.Show("We will call NecklacePatternComposer" + inputdataGridView___COMPOSER);
SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
.NecklacePatternComposer
.ComposeFromNecklacePattern
(
inputdataGridView___COMPOSER
// ,
// inputdataGridView___COMPOSER.Replace(".dataGridView___COMPOSER", "_extended_durations_loops_003") + ".dataGridView___COMPOSER"
);
//System.Windows.Forms.MessageBox.Show("We will call RagaPaltasGenerator___reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER on inputdataGridView___COMPOSER " + inputdataGridView___COMPOSER);
//////SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
////// .RagaPaltasGenerator___reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER
////// .GenerateExtendedRagaFile
////// (
////// inputdataGridView___COMPOSER
////// ,
////// inputdataGridView___COMPOSER.Replace(".dataGridView___COMPOSER","_extended_durations_loops_003")+".dataGridView___COMPOSER"
////// );
///
///
///
/// //stopping this it copies all durations to all notes and generates nxn data structures
//////SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
////// .RagaPaltasGenerator___reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER
////// .GenerateExtendedRagaFile___ALL_THE_NOTES_WITH_SAMES_DURATIONS_OF_OTHER_NOTES
////// //.GenerateExtendedRagaFile
////// (
////// inputdataGridView___COMPOSER
////// ,
////// inputdataGridView___COMPOSER + "_SAMES_durations_REPEATS_loops_003" + ".dataGridView___COMPOSER"
////// );
// to___load_current_composer_textfiles_data_to_preclean_then_datagrids_state_to_files
// hangs
////// //I:\R___DES\RAGA_GUIDES_TOO_IMPORTANT\alaiyasshrutikakks\only7.txt
////// System.Windows.Forms.MessageBox.Show("We will call RagaPaltasGroupwisePermuter_WithMeasureBoundaries on inputdataGridView___COMPOSER " + inputdataGridView___COMPOSER);
////// //i will generate only first 5990 rows
////// SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
////// .RagaPaltasGroupwisePermuter_WithMeasureBoundaries
////// .GenerateRagaFiles_WithMeasurewiseDurationPermutations
////// //.GenerateExtendedRagaFile
////// (
////// inputdataGridView___COMPOSER
////// // ,
//////// inputdataGridView___COMPOSER + "_WITH_PERMUTED(UPTO_8_NOTES)__durations_loops_003" + ".dataGridView___COMPOSER"
////// );
// hangs
//////System.Windows.Forms.MessageBox.Show("We will call RagaPaltasGenerator___reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER on inputdataGridView___COMPOSER " + inputdataGridView___COMPOSER);
////////i will generate only first 5990 rows
//////SAANS_ROUGH_BEATS_COMPOSER_FOR_ON_SELECTIONS_LOOP_CYCLES
//////.RagaPaltasGenerator___PERMUTED_DURATIONS_SEQUENCES_COPIERS_reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER
//////.GenerateExtendedRagaFile___ALL_THE_NOTES_WITH_PERMUTED_DURATIONS_OF_OTHER_NOTES
////////.GenerateExtendedRagaFile
//////(
//////inputdataGridView___COMPOSER
//////,
//////inputdataGridView___COMPOSER + "_WITH_PERMUTED(UPTO_8_NOTES)__durations_loops_003" + ".dataGridView___COMPOSER"
//////);
}// if (openFileDialog.ShowDialog() == DialogResult.OK)
this.dataGridView___COMPOSER.ClearSelection();
}// private void button___TO_DECORATE_THE_SEQUENCES_WITH_DIFFERENT_STYLES_Click(object sender, EventArgs e)
public class NecklacePatternComposer
{
public static void ComposeFromNecklacePattern(string inputFile)
{
var fundamentalSequence = RagaPaltas_OddEvenConcatenator.LoadCleanNotesFromFile(inputFile);
if (fundamentalSequence.Count == 0)
{
Console.WriteLine("No valid notes found in input.");
return;
}//if (fundamentalSequence.Count == 0)
var reversedSequence = RagaPaltas_OddEvenConcatenator.CloneList(fundamentalSequence);
reversedSequence.Reverse();
var necklace = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
necklace.AddRange(fundamentalSequence);
necklace.AddRange(reversedSequence);
int length = necklace.Count;
string input = Microsoft.VisualBasic.Interaction.InputBox("Enter comma/space/semicolon separated offset indices (e.g. 3,5,7):", "Offset Index Pattern", "3, 5, 7");
var tokens = input.Split(new[] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);
var offsets = tokens.Select(t => int.TryParse(t.Trim(), out int num) ? num : -1).Where(i => i >= 0).ToList();
if (offsets.Count == 0)
{
Console.WriteLine("No valid offsets provided.");
return;
}//if (offsets.Count == 0)
var result = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int i = 0; i < length; i++)
{
foreach (var offset in offsets)
{
int index = (i + offset) % length;
result.Add(necklace[index]);
}//foreach (var offset in offsets)
for (int j = offsets.Count - 1; j >= 0; j--)
{
int index = (i + offsets[j]) % length;
result.Add(necklace[index]);
}//for (int j = offsets.Count - 1; j >= 0; j--)
}//for (int i = 0; i < length; i++)
string outputPath = inputFile + "__NecklaceOffsetDecorated.dataGridView___COMPOSER";
RagaPaltas_OddEvenConcatenator.SaveNotesToFile(outputPath, result);
Console.WriteLine("Saved decorated necklace sequence to: " + outputPath);
}//public static void ComposeFromNecklacePattern(string inputFile)
}//public class NecklacePatternComposer
//////using System;
//////using System.Collections.Generic;
//////using System.Linq;
//////using System.Windows.Forms;
//////using Microsoft.VisualBasic;
//////public class NecklacePatternComposer
//////{
////// public static void GenerateNecklaceDecoratedSequence(List<string> fundamentalSequence)
////// {
////// // Step 1: Create necklace (fundamental + reverse)
////// var reversed = new List<string>(fundamentalSequence);
////// reversed.Reverse();
////// var necklace = new List<string>(fundamentalSequence);
////// necklace.AddRange(reversed); // Length = 2n
////// int n = fundamentalSequence.Count;
////// int fullLength = 2 * n;
////// // Step 2: Get offset input
////// string input = Microsoft.VisualBasic.Interaction.InputBox(
////// "Enter offset sequence (comma/semicolon/space separated):",
////// "Offset Pattern", "3, 5, 7");
////// if (string.IsNullOrWhiteSpace(input)) return;
////// var offsetTokens = input.Split(new[] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);
////// var offsets = offsetTokens.Select(token => int.TryParse(token.Trim(), out var num) ? num : -1)
////// .Where(num => num >= 0).ToList();
////// if (offsets.Count == 0)
////// {
////// MessageBox.Show("No valid offsets entered.", "Error");
////// return;
////// }//if (offsets.Count == 0)
////// var reversedOffsets = new List<int>(offsets);
////// reversedOffsets.Reverse();
////// var finalSequence = new List<string>();
////// // Step 3: Apply all i + r and i + reversed(r) for i in 0 to 2n - 1
////// for (int i = 0; i < fullLength; i++)
////// {
////// foreach (var offset in offsets)
////// {
////// int idx = (i + offset) % fullLength;
////// finalSequence.Add(necklace[idx]);
////// }//foreach (var offset in offsets)
////// foreach (var offset in reversedOffsets)
////// {
////// int idx = (i + offset) % fullLength;
////// finalSequence.Add(necklace[idx]);
////// }//foreach (var offset in reversedOffsets)
////// }//for (int i = 0; i < fullLength; i++)
////// // Step 4: Save or preview result
////// string preview = string.Join(" ", finalSequence.Take(50)) + (finalSequence.Count > 50 ? " ..." : "");
////// MessageBox.Show("Preview of generated sequence:\n" + preview, "Preview");
////// // Optional: Save to file or export to data grid
////// // SaveSequenceToFile("decorated_sequence.txt", finalSequence);
////// }//public class NecklacePatternComposer
////// // Example loader
////// public static List<string> LoadNotesFromFile(string path)
////// {
////// var lines = System.IO.File.ReadAllLines(path);
////// return lines.Where(line => !string.IsNullOrWhiteSpace(line)).ToList();
////// }//public static List<string> LoadNotesFromFile(string path)
////// // Optional file saver
////// public static void SaveSequenceToFile(string path, List<string> sequence)
////// {
////// System.IO.File.WriteAllLines(path, sequence);
////// MessageBox.Show("Saved to " + path);
////// }//public static void SaveSequenceToFile(string path, List<string> sequence)
//////}//public class NecklacePatternComposer
public class RagaPaltas_ZigZagDiagonalConcatenator
{
const string Separator = "######";
const int MaxNotesPerFile = 5990;
public static void GenerateZigzagDiagonalDecoratedFile(string inputFile)
{
var rawNotes = RagaPaltas_OddEvenConcatenator.LoadCleanNotesFromFile(inputFile);
Console.WriteLine("Loaded valid notes: " + rawNotes.Count);
int n = rawNotes.Count;
if (n == 0) return;
// Form n x n matrix
var grid = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS[n, n];
for (int col = 0; col < n; col++)
{
for (int row = 0; row < n; row++)
{
grid[row, col] = RagaPaltas_OddEvenConcatenator.CloneList(rawNotes)[row];
}
}
var finalList = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
// Traverse diagonals
for (int d = 0; d <= 2 * (n - 1); d++)
{
var diagList = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int row = 0; row < n; row++)
{
int col = d - row;
if (col >= 0 && col < n)
{
diagList.Add(grid[row, col]);
}
}
if (d % 2 == 0)
{
finalList.AddRange(diagList); // forward
}
else
{
diagList.Reverse(); // reverse
finalList.AddRange(diagList);
}
}
string outputPath = inputFile + "__ZigzagDiagonalDecorated.dataGridView___COMPOSER";
RagaPaltas_OddEvenConcatenator.SaveNotesToFile(outputPath, finalList);
Console.WriteLine("Saved zigzag diagonal-decorated notes to: " + outputPath);
}//public static void GenerateZigzagDiagonalDecoratedFile(string inputFile)
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadCleanNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
int lineIndex = 0;
foreach (var line in File.ReadLines(path))
{
if (lineIndex++ == 0) continue; // skip header
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
string indinote = parts[1];
if (string.IsNullOrWhiteSpace(indinote) || indinote == "|" || indinote == "&" || indinote == "@" || indinote == "{" || indinote == "}" || indinote == "[" || indinote == "]" || indinote == "(" || indinote == ")")
continue;
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS();
try { note.PUBLIC_STRING_THE_LYR_FOUND = parts[0]; } catch { note.PUBLIC_STRING_THE_LYR_FOUND = "LYR"; }
try { note.PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1]; } catch { note.PUBLIC_STRING_THE_INDINOTE_FOUND = "S"; }
try { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]); } catch { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = 60; }
try { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture); } catch { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 500; }
try { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]); } catch { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = 100; }
try { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]); } catch { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = 73; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = "0,100"; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = "8192,8192"; }
try { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]); } catch { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = 1; }
try { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]); } catch { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = 1; }
try { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = 0; }
try { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]); } catch { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = 0; }
try { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]); } catch { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = 0; }
try { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture); } catch { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = 0; }
try { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = 0; }
try { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture); } catch { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = 0; }
try { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture); } catch { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = 0; }
try { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]); } catch { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = 6; }
try { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21]); } catch { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = 64; }
notes.Add(note);
}
return notes;
}
private static PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS CloneNote(PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS note)
{
return new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY,
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
};
} //private static PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS CloneNote(PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS note)
//////public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> CloneList(List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> list)
//////{
////// return list.Select(CloneNote).ToList();
//////}//private static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> CloneList(List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> list)
//////public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
//////{
////// using (var writer = new StreamWriter(path))
////// {
////// foreach (var note in notes.Take(MaxNotesPerFile))
////// {
////// var fields = new string[22];
////// fields[0] = note.PUBLIC_STRING_THE_LYR_FOUND;
////// fields[1] = note.PUBLIC_STRING_THE_INDINOTE_FOUND;
////// fields[2] = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString();
////// fields[3] = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture);
////// fields[4] = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString();
////// fields[5] = note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString();
////// fields[6] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS;
////// fields[7] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES;
////// fields[8] = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString();
////// fields[9] = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString();
////// fields[10] = "to_fill";
////// fields[11] = "51.97";
////// fields[12] = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture);
////// fields[13] = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString();
////// fields[14] = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString();
////// fields[15] = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture);
////// fields[16] = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture);
////// fields[17] = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture);
////// fields[18] = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture);
////// fields[19] = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString();
////// fields[20] = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString();
////// writer.WriteLine(string.Join(" " + Separator + " ", fields));
////// }//foreach (var note in notes.Take(MaxNotesPerFile))
////// }//using (var writer = new StreamWriter(path))
//////}//public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
}//public class RagaPaltas_ZigZagDiagonalConcatenator
public class RagaPaltas_SpiralDiagonal_merges_0_to_360_Composer
{
const string Separator = "######";
public static void GenerateSpiralDiagonalDecoratedFile(string inputFile)
{
var fundamentalSequence = RagaPaltas_OddEvenConcatenator.LoadCleanNotesFromFile(inputFile);
var reversedSequence = RagaPaltas_OddEvenConcatenator.CloneList(fundamentalSequence);
reversedSequence.Reverse();
var groupedSequence = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
groupedSequence.AddRange(fundamentalSequence);
groupedSequence.AddRange(reversedSequence);
int copies = 1;
try
{
string response = Microsoft.VisualBasic.Interaction.InputBox("Enter number of copies for spiral:", "Spiral Copies", "1");
copies = int.TryParse(response, out int result) ? Math.Max(1, result) : 1;
}
catch { copies = 1; }
var spiralList = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int i = 0; i < copies; i++)
spiralList.AddRange(RagaPaltas_OddEvenConcatenator.CloneList(groupedSequence));
int size = (int)Math.Ceiling(Math.Sqrt(spiralList.Count));
var spiralGrid = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS[size, size];
int top = 0, bottom = size - 1, left = 0, right = size - 1, index = 0;
while (top <= bottom && left <= right && index < spiralList.Count)
{
for (int i = left; i <= right && index < spiralList.Count; i++) spiralGrid[top, i] = spiralList[index++];
top++;
for (int i = top; i <= bottom && index < spiralList.Count; i++) spiralGrid[i, right] = spiralList[index++];
right--;
for (int i = right; i >= left && index < spiralList.Count; i--) spiralGrid[bottom, i] = spiralList[index++];
bottom--;
for (int i = bottom; i >= top && index < spiralList.Count; i--) spiralGrid[i, left] = spiralList[index++];
left++;
}
var mergedDiagonals = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int angle = 0; angle < 360; angle++)
{
double radians = angle * Math.PI / 180;
double sin = Math.Sin(radians);
double cos = Math.Cos(radians);
for (int d = -size + 1; d < size; d++)
{
var diagList = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int x = 0; x < size; x++)
{
for (int y = 0; y < size; y++)
{
double proj = x * cos + y * sin;
if (Math.Round(proj) == d && spiralGrid[y, x] != null)
{
diagList.Add(spiralGrid[y, x]);
}
}
}
mergedDiagonals.AddRange(diagList);
}
}
string outputPath = inputFile + "__SpiralSection_0_to_360_Diagonals.dataGridView___COMPOSER";
RagaPaltas_OddEvenConcatenator.SaveNotesToFile(outputPath, mergedDiagonals);
Console.WriteLine("Saved spiral diagonals to: " + outputPath);
}
}//public class RagaPaltas_SpiralDiagonal_merges_0_to_360_Composer
public class RagaPaltas_DiagonalConcatenator
{
const string Separator = "######";
const int MaxNotesPerFile = 5990;
public static void GenerateDiagonalDecoratedFile(string inputFile)
{
var allNotes = LoadCleanNotesFromFile(inputFile);
int n = allNotes.Count;
Console.WriteLine("Loaded " + n + " clean notes.");
// Create n x n matrix
var grid = new List<List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>>();
for (int i = 0; i < n; i++)
grid.Add(CloneList(allNotes)); // Copy for each column
var finalList = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
// Traverse diagonals: for sum d = 0 to 2n-2
for (int d = 0; d <= 2 * (n - 1); d++)
{
var sublist = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int i = 0; i < n; i++)
{
int j = d - i;
if (j >= 0 && j < n)
{
sublist.Add(CloneNote(grid[i][j]));
}// if (j >= 0 && j < n)
}//for (int i = 0; i < n; i++)
// Add direct diagonal
finalList.AddRange(sublist);
// Add reverse of diagonal
sublist.Reverse();
finalList.AddRange(sublist);
}//for (int d = 0; d <= 2 * (n - 1); d++)
SaveNotesToFile(inputFile + "__DiagonalDecorated_1_1___to___n_n_everystages_straights_and_reversed.dataGridView___COMPOSER", finalList);
}
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadCleanNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
int lineIndex = 0;
foreach (var line in File.ReadLines(path))
{
if (lineIndex++ == 0) continue; // skip header
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
string indinote = parts[1];
if (string.IsNullOrWhiteSpace(indinote) || indinote == "|" || indinote == "&" || indinote == "@" || indinote == "{" || indinote == "}" || indinote == "[" || indinote == "]" || indinote == "(" || indinote == ")")
continue;
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS();
try { note.PUBLIC_STRING_THE_LYR_FOUND = parts[0]; } catch { note.PUBLIC_STRING_THE_LYR_FOUND = "LYR"; }
try { note.PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1]; } catch { note.PUBLIC_STRING_THE_INDINOTE_FOUND = "S"; }
try { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]); } catch { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = 60; }
try { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture); } catch { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 500; }
try { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]); } catch { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = 100; }
try { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]); } catch { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = 73; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = "0,100"; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = "8192,8192"; }
try { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]); } catch { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = 1; }
try { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]); } catch { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = 1; }
try { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = 0; }
try { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]); } catch { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = 0; }
try { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]); } catch { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = 0; }
try { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture); } catch { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = 0; }
try { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = 0; }
try { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture); } catch { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = 0; }
try { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture); } catch { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = 0; }
try { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]); } catch { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = 6; }
try { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21]); } catch { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = 64; }
notes.Add(note);
}
return notes;
}
private static PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS CloneNote(PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS note)
{
return new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY,
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
};
}
private static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> CloneList(List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> list)
{
return list.Select(CloneNote).ToList();
}
public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
{
using (var writer = new StreamWriter(path))
{
foreach (var note in notes.Take(MaxNotesPerFile))
{
var fields = new string[22];
fields[0] = note.PUBLIC_STRING_THE_LYR_FOUND;
fields[1] = note.PUBLIC_STRING_THE_INDINOTE_FOUND;
fields[2] = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString();
fields[3] = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture);
fields[4] = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString();
fields[5] = note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString();
fields[6] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS;
fields[7] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES;
fields[8] = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString();
fields[9] = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString();
fields[10] = "to_fill";
fields[11] = "51.97";
fields[12] = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture);
fields[13] = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString();
fields[14] = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString();
fields[15] = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture);
fields[16] = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture);
fields[17] = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture);
fields[18] = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture);
fields[19] = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString();
fields[20] = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString();
writer.WriteLine(string.Join(" " + Separator + " ", fields));
}
}
}
}// public class RagaPaltas_DiagonalConcatenator
public class RagaPaltas_OddEvenConcatenator
{
const string Separator = "######";
const int MaxNotesPerFile = 5990;
public static void GenerateOddEvenRagaFile(string inputFile)
{
var allNotes = LoadCleanNotesFromFile(inputFile);
Console.WriteLine("Loaded clean notes: " + allNotes.Count);
int copies = 1;
try
{
string response = Microsoft.VisualBasic.Interaction.InputBox("Enter number of copies to concatenate:", "Repeat Count", "1");
copies = int.TryParse(response, out int result) ? Math.Max(1, result) : 1;
}
catch { copies = 1; }
// Concatenate sequence n times
var concatenated = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int i = 0; i < copies; i++)
concatenated.AddRange(CloneList(allNotes));
// Separate odds and evens
var oddNotes = concatenated.Where((n, idx) => idx % 2 == 1).ToList();
var evenNotes = concatenated.Where((n, idx) => idx % 2 == 0).ToList();
var finalList = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
finalList.AddRange(oddNotes);
finalList.AddRange(evenNotes);
SaveNotesToFile(inputFile + "__OddEvenDecorated.dataGridView___COMPOSER", finalList);
}//public static void GenerateOddEvenRagaFile(string inputFile)
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadCleanNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
int lineIndex = 0;
foreach (var line in File.ReadLines(path))
{
if (lineIndex++ == 0) continue; // skip header
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
string indinote = parts[1];
if (string.IsNullOrWhiteSpace(indinote) || indinote == "|" || indinote == "&" || indinote == "@" || indinote == "{" || indinote == "}" || indinote == "[" || indinote == "]" || indinote == "(" || indinote == ")")
continue;
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS();
try { note.PUBLIC_STRING_THE_LYR_FOUND = parts[0]; } catch { note.PUBLIC_STRING_THE_LYR_FOUND = "LYR"; }
try { note.PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1]; } catch { note.PUBLIC_STRING_THE_INDINOTE_FOUND = "S"; }
try { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]); } catch { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = 60; }
try { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture); } catch { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 500; }
try { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]); } catch { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = 100; }
try { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]); } catch { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = 73; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = "0,100"; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = "8192,8192"; }
try { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]); } catch { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = 1; }
try { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]); } catch { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = 1; }
try { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = 0; }
try { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]); } catch { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = 0; }
try { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]); } catch { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = 0; }
try { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture); } catch { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = 0; }
try { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = 0; }
try { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture); } catch { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = 0; }
try { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture); } catch { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = 0; }
try { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]); } catch { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = 6; }
try { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21]); } catch { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = 64; }
notes.Add(note);
}//foreach (var line in File.ReadLines(path))
return notes;
}// public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadCleanNotesFromFile(string path)
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> CloneList(List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> list)
{
return list.Select(note => new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY,
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
}).ToList();
}// private static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> CloneList(List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> list)
public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
{
using (var writer = new StreamWriter(path))
{
foreach (var note in notes.Take(MaxNotesPerFile))
{
if(note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY<=0)
{
note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 3;
}//if(note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY<=0)
var fields = new string[22];
fields[0] = note.PUBLIC_STRING_THE_LYR_FOUND;
fields[1] = note.PUBLIC_STRING_THE_INDINOTE_FOUND;
fields[2] = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString();
fields[3] = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture);
fields[4] = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString();
fields[5] = note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString();
fields[6] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS;
fields[7] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES;
fields[8] = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString();
fields[9] = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString();
fields[10] = "to_fill";
fields[11] = "51.97";
fields[12] = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture);
fields[13] = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString();
fields[14] = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString();
fields[15] = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture);
fields[16] = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture);
fields[17] = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture);
fields[18] = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture);
fields[19] = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString();
fields[20] = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString();
writer.WriteLine(string.Join(" " + Separator + " ", fields));
}//foreach (var note in notes.Take(MaxNotesPerFile))
}//using (var writer = new StreamWriter(path))
}// public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
}// public class RagaPaltas_OddEvenConcatenator
// NEW CLASS: Handles grouping notes between | or @@, permutes durations, and writes chunks of 5990
//////using System;
//////using System.Collections.Generic;
//////using System.Globalization;
//////using System.IO;
//////using System.Linq;
public class RagaPaltasGroupwisePermuter_WithMeasureBoundaries
{
const string Separator = "######";
const int MaxNotesPerFile = 5990;
public static void GenerateRagaFiles_WithMeasurewiseDurationPermutations(string inputFile)
{
var allNotes = LoadNotesFromFile(inputFile);
Console.WriteLine("Loaded base notes: " + allNotes.Count);
var outputNotes = new List<List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>>();
var currentChunk = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
outputNotes.Add(new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>(allNotes)); // Add original
currentChunk.AddRange(allNotes);
var groupedMeasures = new List<List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>>();
var currentMeasure = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int i = 0; i < allNotes.Count; i++)
{
var current = allNotes[i];
currentMeasure.Add(current);
bool isLast = i == allNotes.Count - 1;
bool isPipe = current.PUBLIC_STRING_THE_LYR_FOUND == "|";
bool isDoubleAt = i > 0 && allNotes[i - 1].PUBLIC_STRING_THE_LYR_FOUND == "@" && current.PUBLIC_STRING_THE_LYR_FOUND == "@";
if (isPipe || isDoubleAt || isLast)
{
groupedMeasures.Add(new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>(currentMeasure));
currentMeasure.Clear();
}//if (isPipe || isDoubleAt || isLast)
}//for (int i = 0; i < allNotes.Count; i++)
int fileCounter = 1;
int accumulatedNotes = allNotes.Count;
foreach (var measure in groupedMeasures)
{
if (measure.Count <= 1) continue; // skip solo | or @
var durations = measure.Select(n => n.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY).ToList();
var permutations = GetPermutations(durations);
foreach (var perm in permutations)
{
var permuted = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
for (int i = 0; i < measure.Count; i++)
{
var copy = CloneNote(measure[i]);
copy.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = perm[i];
permuted.Add(copy);
}//for (int i = 0; i < measure.Count; i++)
if (accumulatedNotes + permuted.Count > MaxNotesPerFile)
{
SaveNotesToFile(inputFile + $"_measuresboundaried_PERMUTED_part{fileCounter}.dataGridView___COMPOSER", currentChunk);
fileCounter++;
currentChunk = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
accumulatedNotes = 0;
}//if (accumulatedNotes + permuted.Count > MaxNotesPerFile)
currentChunk.AddRange(permuted);
accumulatedNotes += permuted.Count;
}//foreach (var perm in permutations)
}//foreach (var measure in groupedMeasures)
SaveNotesToFile(inputFile + $"_PERMUTED_part{fileCounter}.dataGridView___COMPOSER", currentChunk);
}//public static void GenerateRagaFiles_WithMeasurewiseDurationPermutations(string inputFile)
private static PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS CloneNote(PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS note)
{
return new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY,
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
};
}//private static PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS CloneNote(PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS note)
private static List<List<double>> GetPermutations(List<double> list)
{
var result = new List<List<double>>();
Permute(list, 0, result);
return result;
}
private static void Permute(List<double> list, int start, List<List<double>> result)
{
if (start >= list.Count)
{
result.Add(new List<double>(list));
return;
}//if (start >= list.Count)
for (int i = start; i < list.Count; i++)
{
(list[start], list[i]) = (list[i], list[start]);
Permute(list, start + 1, result);
(list[start], list[i]) = (list[i], list[start]);
}//for (int i = start; i < list.Count; i++)
}//private static void Permute(List<double> list, int start, List<List<double>> result)
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
int lineIndex = 0;
foreach (var line in File.ReadLines(path))
{
if (lineIndex++ == 0) continue; // skip header
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS();
try { note.PUBLIC_STRING_THE_LYR_FOUND = parts[0]; } catch { note.PUBLIC_STRING_THE_LYR_FOUND = "LYR"; }
try { note.PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1]; } catch { note.PUBLIC_STRING_THE_INDINOTE_FOUND = "S"; }
try { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]); } catch { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = 60; }
try { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture); } catch { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 500; }
try { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]); } catch { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = 100; }
try { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]); } catch { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = 73; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = "0,100"; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = "8192,8192"; }
try { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]); } catch { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = 1; }
try { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]); } catch { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = 1; }
try { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = 0; }
try { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]); } catch { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = 0; }
try { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]); } catch { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = 0; }
try { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture); } catch { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = 0; }
try { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = 0; }
try { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture); } catch { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = 0; }
try { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture); } catch { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = 0; }
try { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]); } catch { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = 6; }
try { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21]); } catch { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = 64; }
notes.Add(note);
}// foreach (var line in File.ReadLines(path))
return notes;
}//public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadNotesFromFile(string path)
public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
{
using (var writer = new StreamWriter(path))
{
foreach (var note in notes.Take(MaxNotesPerFile))
{
if (note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY <= 0)
{
note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 3;
}//if(note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY<=0)
var fields = new string[22];
fields[0] = note.PUBLIC_STRING_THE_LYR_FOUND;
fields[1] = note.PUBLIC_STRING_THE_INDINOTE_FOUND;
fields[2] = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString();
fields[3] = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture);
fields[4] = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString();
fields[5] = note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString();
fields[6] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS;
fields[7] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES;
fields[8] = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString();
fields[9] = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString();
fields[10] = "to_fill";
fields[11] = "51.97";
fields[12] = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture);
fields[13] = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString();
fields[14] = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString();
fields[15] = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture);
fields[16] = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture);
fields[17] = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture);
fields[18] = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture);
fields[19] = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString();
fields[20] = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString();
writer.WriteLine(string.Join(" " + Separator + " ", fields));
}//foreach (var note in notes.Take(MaxNotesPerFile))
}//using (var writer = new StreamWriter(path))
}//public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
}//public class RagaPaltasGroupwisePermuter_WithMeasureBoundaries
//////using System;
//////using System.Collections.Generic;
//////using System.Globalization;
//////using System.IO;
//////using System.Linq;
public class RagaPaltasGenerator___PERMUTED_DURATIONS_SEQUENCES_COPIERS_reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER
{
const string Separator = "######";
public static void GenerateExtendedRagaFile___ALL_THE_NOTES_WITH_PERMUTED_DURATIONS_OF_OTHER_NOTES(string inputFile, string outputFile)
{
var baseNotes = LoadNotesFromFile(inputFile);
if (baseNotes.Count == 0)
{
Console.WriteLine("No valid notes found in input file.");
System.Windows.Forms.MessageBox.Show("No valid notes found in input file.");
return;
}//if (baseNotes.Count == 0)
if (baseNotes.Count >= 9)
{
System.Windows.Forms.MessageBox.Show("Will note do permutations if the basenotes count >=9 ");
return;
}//if(baseNotes.Count>=9)
var outputNotes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
var allDurPermutations = GetPermutations(baseNotes.Select(n => n.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY).ToList());
int logging_counter = 0;
foreach (var durationSet in allDurPermutations)
{
for (int i = 0; i < baseNotes.Count; i++)
{
var note = baseNotes[i];
var newNote = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = durationSet[i],
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
};
logging_counter++;
if(logging_counter<5990)
{
outputNotes.Add(newNote);
}// if(logging_counter<5990)
}//for (int i = 0; i < baseNotes.Count; i++)
}//foreach (var durationSet in allDurPermutations)
SaveNotesToFile(outputFile, outputNotes);
}
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
int lines_number_in_files = 0;
foreach (var line in File.ReadLines(path))
{
if(lines_number_in_files>0)
{
//not to load the header lines
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS();
try { note.PUBLIC_STRING_THE_LYR_FOUND = parts[0]; } catch { note.PUBLIC_STRING_THE_LYR_FOUND = "LYR"; }
try { note.PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1]; } catch { note.PUBLIC_STRING_THE_INDINOTE_FOUND = "S"; }
try { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]); } catch { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = 60; }
try { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture); } catch { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 500; }
try { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]); } catch { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = 100; }
try { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]); } catch { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = 73; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = "0,100"; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = "8192,8192"; }
try { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]); } catch { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = 1; }
try { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]); } catch { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = 1; }
try { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = 0; }
try { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]); } catch { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = 0; }
try { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]); } catch { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = 0; }
try { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture); } catch { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = 0; }
try { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = 0; }
try { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture); } catch { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = 0; }
try { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture); } catch { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = 0; }
try { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]); } catch { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = 6; }
try { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21]); } catch { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = 64; }
notes.Add(note);
}//if(lines_number_in_files>0)
lines_number_in_files++;
}
return notes;
}
public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
{
int permuted_notes_counter = 0;
System.Windows.Forms.MessageBox.Show("Total permuted durations notes count = " + notes.Count + " we will save only 5990 notes");
using (var writer = new StreamWriter(path))
{
foreach (var note in notes)
{
permuted_notes_counter++;
if(permuted_notes_counter<5990)
{
if (note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY <= 0)
{
note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 3;
}//if(note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY<=0)
var fields = new string[22];
try { fields[0] = note.PUBLIC_STRING_THE_LYR_FOUND ?? "LYR"; } catch { fields[0] = "LYR"; }
try { fields[1] = note.PUBLIC_STRING_THE_INDINOTE_FOUND ?? "S"; } catch { fields[1] = "S"; }
try { fields[2] = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString(); } catch { fields[2] = "60"; }
try { fields[3] = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture); } catch { fields[3] = "500"; }
try { fields[4] = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString(); } catch { fields[4] = "100"; }
try { fields[5] = note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString(); } catch { fields[5] = "73"; }
try { fields[6] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS ?? "0,100"; } catch { fields[6] = "0,100"; }
try { fields[7] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES ?? "8192,8192"; } catch { fields[7] = "8192,8192"; }
try { fields[8] = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString(); } catch { fields[8] = "1"; }
try { fields[9] = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString(); } catch { fields[9] = "1"; }
fields[10] = "to_fill";
fields[11] = "51.97";
try { fields[12] = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture); } catch { fields[12] = "0"; }
try { fields[13] = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString(); } catch { fields[13] = "0"; }
try { fields[14] = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString(); } catch { fields[14] = "0"; }
try { fields[15] = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture); } catch { fields[15] = "0"; }
try { fields[16] = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture); } catch { fields[16] = "0"; }
try { fields[17] = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture); } catch { fields[17] = "0"; }
try { fields[18] = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture); } catch { fields[18] = "0"; }
try { fields[19] = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString(); } catch { fields[19] = "6"; }
try { fields[20] = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString(); } catch { fields[20] = "64"; }
writer.WriteLine(string.Join(" " + Separator + " ", fields));
}//if(permuted_notes_counter<5990)
}//foreach (var note in notes)
}
}
private static List<List<double>> GetPermutations(List<double> list)
{
var result = new List<List<double>>();
Permute(list, 0, result);
return result;
}// private static List<List<double>> GetPermutations(List<double> list)
private static void Permute(List<double> list, int start, List<List<double>> result)
{
if (start >= list.Count)
{
result.Add(new List<double>(list));
return;
}
for (int i = start; i < list.Count; i++)
{
(list[start], list[i]) = (list[i], list[start]);
Permute(list, start + 1, result);
(list[start], list[i]) = (list[i], list[start]);
}
}
// LoadNotesFromFile and SaveNotesToFile remain unchanged (already includes try-catch)
} // class end
//////using System;
//////using System.Collections.Generic;
//////using System.Globalization;
//////using System.IO;
//////using System.Linq;
public class RagaPaltasGenerator___reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER
{
const string Separator = "######";
public static void GenerateExtendedRagaFile___ALL_THE_NOTES_WITH_SAMES_DURATIONS_OF_OTHER_NOTES(string inputFile, string outputFile)
{
var baseNotes = LoadNotesFromFile(inputFile);
if (baseNotes.Count == 0)
{
Console.WriteLine("No valid notes found in input file.");
return;
}
var outputNotes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
foreach (var donorNote in baseNotes)
{
foreach (var recipientNote in baseNotes)
{
var cloneList = baseNotes.Select(note => new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = donorNote.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY,
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = recipientNote.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
}).ToList();
outputNotes.AddRange(cloneList);
}
}
SaveNotesToFile(outputFile, outputNotes);
}
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
foreach (var line in File.ReadLines(path))
{
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS();
try { note.PUBLIC_STRING_THE_LYR_FOUND = parts[0]; } catch { note.PUBLIC_STRING_THE_LYR_FOUND = "LYR"; }
try { note.PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1]; } catch { note.PUBLIC_STRING_THE_INDINOTE_FOUND = "S"; }
try { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]); } catch { note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = 60; }
try { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture); } catch { note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 500; }
try { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]); } catch { note.INT_CURRENT_NOTES_VELOCITY_0_TO_127 = 100; }
try { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]); } catch { note.INT_CURRENT_NOTES_PATCH_0_TO_127 = 73; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = "0,100"; }
try { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7]; } catch { note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = "8192,8192"; }
try { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]); } catch { note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = 0; }
try { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]); } catch { note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = 0; }
try { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = 0; }
try { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]); } catch { note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND = 0; }
try { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]); } catch { note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = 0; }
try { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture); } catch { note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = 0; }
try { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture); } catch { note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = 0; }
try { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture); } catch { note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = 0; }
try { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture); } catch { note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = 0; }
try { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]); } catch { note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = 6; }
try { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21]); } catch { note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = 64; }
notes.Add(note);
}
return notes;
}
public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
{
using (var writer = new StreamWriter(path))
{
foreach (var note in notes)
{
if (note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY <= 0)
{
note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 3;
}//if(note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY<=0)
var fields = new string[22];
try { fields[0] = note.PUBLIC_STRING_THE_LYR_FOUND ?? "LYR"; } catch { fields[0] = "LYR"; }
try { fields[1] = note.PUBLIC_STRING_THE_INDINOTE_FOUND ?? "S"; } catch { fields[1] = "S"; }
try { fields[2] = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString(); } catch { fields[2] = "60"; }
try { fields[3] = note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture); } catch { fields[3] = "500"; }
try { fields[4] = note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString(); } catch { fields[4] = "100"; }
try { fields[5] = note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString(); } catch { fields[5] = "73"; }
try { fields[6] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS ?? "0,100"; } catch { fields[6] = "0,100"; }
try { fields[7] = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES ?? "8192,8192"; } catch { fields[7] = "8192,8192"; }
try { fields[8] = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString(); } catch { fields[8] = "0"; }
try { fields[9] = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString(); } catch { fields[9] = "0"; }
fields[10] = "to_fill";
fields[11] = "51.97";
try { fields[12] = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture); } catch { fields[12] = "0"; }
try { fields[13] = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString(); } catch { fields[13] = "0"; }
try { fields[14] = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString(); } catch { fields[14] = "0"; }
try { fields[15] = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture); } catch { fields[15] = "0"; }
try { fields[16] = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture); } catch { fields[16] = "0"; }
try { fields[17] = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture); } catch { fields[17] = "0"; }
try { fields[18] = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture); } catch { fields[18] = "0"; }
try { fields[19] = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString(); } catch { fields[19] = "6"; }
try { fields[20] = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString(); } catch { fields[20] = "64"; }
writer.WriteLine(string.Join(" " + Separator + " ", fields));
}
}
}
} // class end
//////using System;
//////using System.Collections.Generic;
//////using System.Globalization;
//////using System.IO;
//////using System.Linq;
public class DISCARDING___NO_TRYCATCH_WAS_THERE___RagaPaltasGenerator___reading_the___dataGridView___COMPOSER___generates_another___dataGridView___COMPOSER
{
const string Separator = "######";
public static void GenerateExtendedRagaFile(string inputFile, string outputFile)
{
var baseNotes = LoadNotesFromFile(inputFile);
if (baseNotes.Count == 0)
{
Console.WriteLine("No valid notes found in input file.");
System.Windows.Forms.MessageBox.Show("No valid notes found in input file.");
return;
}// if (baseNotes.Count == 0)
var outputNotes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
foreach (var donorNote in baseNotes)
{
foreach (var recipientNote in baseNotes)
{
var cloneList = baseNotes.Select(note => new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = note.PUBLIC_STRING_THE_LYR_FOUND,
PUBLIC_STRING_THE_INDINOTE_FOUND = note.PUBLIC_STRING_THE_INDINOTE_FOUND,
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127,
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = donorNote.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY,
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = recipientNote.INT_CURRENT_NOTES_VELOCITY_0_TO_127,
INT_CURRENT_NOTES_PATCH_0_TO_127 = note.INT_CURRENT_NOTES_PATCH_0_TO_127,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15,
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER,
PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP,
PUBLIC_INT___Column_JUERK_UP_PITCHBEND = note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND,
PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND,
PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS,
PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES,
Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES,
Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES,
PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20,
PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT
}).ToList();
outputNotes.AddRange(cloneList);
}//foreach (var recipientNote in baseNotes)
}//foreach (var donorNote in baseNotes)
SaveEXTENDED_RAGAPALTAS_NotesToFile(outputFile, outputNotes);
}//public static void GenerateExtendedRagaFile(string inputFile, string outputFile)
public static List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> LoadNotesFromFile(string path)
{
var notes = new List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS>();
foreach (var line in File.ReadLines(path))
{
var parts = line.Split(new[] { Separator }, StringSplitOptions.None).Select(p => p.Trim()).ToArray();
if (parts.Length < 22) continue;
try
{
var note = new PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS
{
PUBLIC_STRING_THE_LYR_FOUND = parts[0],
PUBLIC_STRING_THE_INDINOTE_FOUND = parts[1],
INT_NOTE_NUMBER_TO_PLAY_0_TO_127 = int.Parse(parts[2]),
DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = double.Parse(parts[3], CultureInfo.InvariantCulture),
INT_CURRENT_NOTES_VELOCITY_0_TO_127 = int.Parse(parts[4]),
INT_CURRENT_NOTES_PATCH_0_TO_127 = int.Parse(parts[5]),
// STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS = parts[6],
// STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES = parts[7],
PUBLIC_INT_CHANNEL_NUMBER_0_TO_15 = int.Parse(parts[8]),
PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER = int.Parse(parts[9]),
// PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP = double.Parse(parts[13], CultureInfo.InvariantCulture),
// PUBLIC_INT___Column_JUERK_UP_PITCHBEND = int.Parse(parts[14]),
// PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND = int.Parse(parts[15]),
// PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS = double.Parse(parts[16], CultureInfo.InvariantCulture),
// PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES = double.Parse(parts[17], CultureInfo.InvariantCulture),
// Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES = double.Parse(parts[18], CultureInfo.InvariantCulture),
// Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES = double.Parse(parts[19], CultureInfo.InvariantCulture),
// PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20 = int.Parse(parts[20]),
// PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT = int.Parse(parts[21])
};
notes.Add(note);
Console.WriteLine("populated " + line);
}
catch
{
// Handle malformed row
continue;
}
}
return notes;
}
public static void SaveEXTENDED_RAGAPALTAS_NotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
{
using (var writer = new StreamWriter(path))
{
foreach (var note in notes)
{
if (note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY <= 0)
{
note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY = 3;
}//if(note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY<=0)
writer.WriteLine(string.Join(" " + Separator + " ", new[]
{
note.PUBLIC_STRING_THE_LYR_FOUND,
note.PUBLIC_STRING_THE_INDINOTE_FOUND,
note.INT_NOTE_NUMBER_TO_PLAY_0_TO_127.ToString(),
note.DOUBLE_MILLISECOND_DURATION_FOR_THE_NOTE_TO_PLAY.ToString(CultureInfo.InvariantCulture),
note.INT_CURRENT_NOTES_VELOCITY_0_TO_127.ToString(),
note.INT_CURRENT_NOTES_PATCH_0_TO_127.ToString(),
note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_PERCENTAGES_DURATIONS,
note.STRING_COMMA_SEPERATED_WITHIN_NOTES_PITCH_BENDS_VALUES,
note.PUBLIC_INT_CHANNEL_NUMBER_0_TO_15.ToString(),
note.PUBLIC_INT_TRACK_NUMBER_0_TO_ANY_NUMBER.ToString(),
"to_fill", // NOTES_NUMBERS placeholder
"51.97", // NOTES_FREQUENCYS placeholder
note.PUBLIC_DOUBLE____Column_PITCHBEND_JERKS_MILLIS_GAP.ToString(CultureInfo.InvariantCulture),
note.PUBLIC_INT___Column_JUERK_UP_PITCHBEND.ToString(),
note.PUBLIC_INT___Column_JERK_DOWNS_PITCH_BEND.ToString(),
note.PUBIC_DOUBLE_ENFORCER_START_TIMES_MILLIS_FOR_DECORATIONS.ToString(CultureInfo.InvariantCulture),
note.PUBLIC_DOUBLE___Column___ENFORCED_START_MILLIS_FOR_PERCUSSIONS_NOTES.ToString(CultureInfo.InvariantCulture),
note.Column___ENFORCED_START_MILLIS_FOR_PUREMELODY_NOTES.ToString(CultureInfo.InvariantCulture),
note.Column___REFERENCE_CUMULATIVE_START_MILLIS_FOR_CURRENT_NOTES.ToString(CultureInfo.InvariantCulture),
note.PUBLIC_INT___Column___NOTE_WISE_PITHBENDS_RANGE_2X2_SEMITONES_DEFAULT_TO_10X2_20.ToString(),
note.PUBLIC_INT___Column_NOTES_WISE_PAN_0_LEFT_TO_127_RIGHT.ToString()
}));
}//foreach (var note in notes)
}//using (var writer = new StreamWriter(path))
}//public static void SaveNotesToFile(string path, List<PUBLIC_CLASS_TO_LOAD_FOR_PRELISTENS_SINGLE_ROWS_NOTE_DATA_DETAILS> notes)
} // class end public class RagaPaltasGenerator
/// <summary>
/// /////////////////////////////////////////////////////////////////////////////////////////////////////
/// </summary>
//////using System;
//////using System.Collections.Generic;
//////using System.Text;
public class WaterDistributor___OR_MILLIS_DISTRIBUTIONS
{
public static StringBuilder PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_DISTRIBUTIONS_MILLIS_DISTRIBUTIONS_REPORTS = new StringBuilder();
public static StringBuilder PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_OR_MILLIS_ALLOCATED_TOKENS = new StringBuilder();
class Node
{
public string Symbol;
public List<Node> Children = new List<Node>();
public double Water_OR_MILLIS = 0;
public bool IsFixedToken = false; // to mark special characters for fixed allocation
}
public static void WaterDistributor___MILLIS_DISTRIBUTIONS_Main(string input_string_for_whole_forest, double total_water_or_total_millis_W_for_each_tree_pipes_delimeted)
{
PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_DISTRIBUTIONS_MILLIS_DISTRIBUTIONS_REPORTS.Clear();
PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_OR_MILLIS_ALLOCATED_TOKENS.Clear();
string input = input_string_for_whole_forest;
PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_DISTRIBUTIONS_MILLIS_DISTRIBUTIONS_REPORTS
.AppendLine("Input string:\n" + input + "\nTotal millis per tree: " + total_water_or_total_millis_W_for_each_tree_pipes_delimeted);
var trees = ParseForest(input);
double waterPerTree = total_water_or_total_millis_W_for_each_tree_pipes_delimeted;
foreach (var tree in trees)
DistributeWater(tree, waterPerTree);
foreach (var tree in trees)
PrintWaterDistribution(tree, "ROOT");
}
static List<Node> ParseForest(string input)
{
var trees = new List<Node>();
var treeStrings = input.Split('|');
foreach (var treeStr in treeStrings)
{
string trimmed = treeStr.Trim();
if (!string.IsNullOrEmpty(trimmed))
{
var tokens = Tokenize(trimmed);
int index = 0;
var root = new Node { Symbol = "ROOT" };
while (index < tokens.Count)
{
root.Children.Add(ParseNode(tokens, ref index));
}
trees.Add(root);
}
}
return trees;
}
static List<string> Tokenize(string input)
{
var tokens = new List<string>();
string current = "";
foreach (char c in input)
{
if (c == '(' || c == ')')
{
if (!string.IsNullOrWhiteSpace(current))
{
tokens.AddRange(current.Trim().Split(' '));
current = "";
}
tokens.Add(c.ToString());
}
else
{
current += c;
}
}
if (!string.IsNullOrWhiteSpace(current))
{
tokens.AddRange(current.Trim().Split(' '));
}
return tokens;
}
static Node ParseNode(List<string> tokens, ref int index)
{
if (tokens[index] == "(")
{
index++;
var parent = new Node { Symbol = "BRANCH" };
while (index < tokens.Count && tokens[index] != ")")
{
parent.Children.Add(ParseNode(tokens, ref index));
}
index++;
return parent;
}
else
{
string sym = tokens[index++];
return new Node
{
Symbol = sym,
IsFixedToken = sym == "|" || sym == "@" || sym == "[" || sym == "]" || sym == "{" || sym == "}" || sym == ";" || sym == "," || sym == "~" || sym == "!" || sym == "" || sym == "^" || sym == "&"
};
}
}
static void DistributeWater(Node node, double water)
{
if (node.Children.Count == 0)
{
node.Water_OR_MILLIS = node.IsFixedToken ? 30.0 : water;
return;
}
int fixedCount = 0;
double remainingWater = water;
foreach (var child in node.Children)
{
if (child.IsFixedToken)
fixedCount++;
}
double fixedAllocation = 30.0 * fixedCount;
double distributable = Math.Max(0, water - fixedAllocation);
int nonFixedCount = node.Children.Count - fixedCount;
double perNode = nonFixedCount > 0 ? distributable / nonFixedCount : 0;
foreach (var child in node.Children)
{
if (child.IsFixedToken)
DistributeWater(child, 30.0);
else
DistributeWater(child, perNode);
}
node.Water_OR_MILLIS = water;
}
static void PrintWaterDistribution(Node node, string path)
{
if (node.Symbol != "ROOT" && node.Symbol != "BRANCH")
{
Console.WriteLine($"{path}/{node.Symbol} -> {node.Water_OR_MILLIS:F2} milliseconds");
PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_DISTRIBUTIONS_MILLIS_DISTRIBUTIONS_REPORTS
.AppendLine($"{path}/{node.Symbol} -> {node.Water_OR_MILLIS:F2} milliseconds");
PUBLIC_STATIC_STRINGBUILDER_FOR_WATER_OR_MILLIS_ALLOCATED_TOKENS
.AppendLine(node.Symbol + "_DISTRIBUTED_" + node.Water_OR_MILLIS.ToString("F2"));
}
foreach (var child in node.Children)
{
PrintWaterDistribution(child, path + "/" + (node.Symbol == "ROOT" ? "" : node.Symbol));
}
}
} // class end
No comments:
Post a Comment