private void newGenerateButton_Click(object sender, EventArgs e)

  {

  tabControl1.SelectedIndex = 0;

  duration = Rhythm. GetDuration(tempoTrackBar. Value, notesCount);

  Random random = new Random();

  int divisor = random. Next(3, 5), addition = random. Next(1, 4);

  int[] rhythm = Rhythm. GetRhythm(notesCount + notesCount / divisor + addition, notesCount);

  int[] notes = Notes. GetNotes(selectedScale, notesCount, rhythm);

  generatedMelody = new Melody(Melody. Number + "-ая мелодия", notes, rhythm, selectedScale. scaleName);

  generatedMelodyList. Add(generatedMelody);

  generatedMelodysComboBox. Items. Add(generatedMelody. Name + "(" + generatedMelody. ScaleName. ToString() + ")");

  generatedMelodysComboBox. SelectedIndex = generatedMelodyList. IndexOf(generatedMelody);

  Melody. Number++;

  rhythmTextBox. Text = Parser. GetString(rhythm);

  notesTextBox. Text = Parser. GetString(notes);

  if (sd == null)

  sd = new SoundDevices(outputDevice, Channel. Channel1);

  SetLabelsNameNotesAndRhythm(generatedMelody);

  SetEnable(false, SetEnableMode. All);

  cts = new CancellationTokenSource();

  stopButton. Select();

  timer. Start(); 

  task = Task. Run(() =>

  {

  Accompaniment. PlayAccord(tonica, generatedMelody. ScaleName, Direction. Down, outputDevice);

  Thread. Sleep(800);

  MelodyPlayer. PlayMelody(sd, generatedMelody, tonica, duration, grifNotes, buttons, cts. Token);

НЕ нашли? Не то? Что вы ищете?

  if (!cts. Token. IsCancellationRequested)

  {

  Thread. Sleep(400);

  Accompaniment. PlayAccord(tonica, generatedMelody. ScaleName, Direction. Down, outputDevice);

  }

  }, cts. Token); 

  }

  private void playAgainButton_Click(object sender, EventArgs e)

  {

  tabControl1.SelectedIndex = 0;

  SetEnable(false, SetEnableMode. All);

  if (generatedMelody!= null)

  {

  if (sd == null)

  sd = new SoundDevices(outputDevice, Channel. Channel1);

  SetLabelsNameNotesAndRhythm(generatedMelody);

  duration = Rhythm. GetDuration(tempoTrackBar. Value, notesCount);

  cts = new CancellationTokenSource();

  stopButton. Select();

  timer. Start();

  task = Task. Run(() =>

  {

  Accompaniment. PlayAccord(tonica, generatedMelody. ScaleName, Direction. Down, outputDevice);

  Thread. Sleep(800);

  MelodyPlayer. PlayMelody(sd, generatedMelody, tonica, duration, grifNotes, buttons, cts. Token);

  if (!cts. Token. IsCancellationRequested)

  {

  Thread. Sleep(400);

  Accompaniment. PlayAccord(tonica, generatedMelody. ScaleName, Direction. Down, outputDevice);

  }

  }, cts. Token);

  }

  }

  public void SetLabelsNameNotesAndRhythm(Melody melody)

  {

  nameLabel. Text = melody. Name + "(" + melody. ScaleName. ToString() + ")";

  notesTextBox. Text = Parser. GetString(melody. Notes);

  rhythmTextBox. Text = Parser. GetString(melody. Rhythm);

  notesCountTextBox. Text = melody. Notes. Length. ToString();

  }

  private void grifPBox_MouseMove(object sender, MouseEventArgs e)

  {

  for (int i = 0; i < 6; i++)

  {

  for (int j = 0; j < 16; j++)

  {

  VisibleCoordButtons(buttons[i, j], e, grifPBox, i, j);

  }

  }

  }

  private void grif_Click(object sender, EventArgs e)

  {

  for (int i = 0; i < 6; i++)

  {

  for (int j = 0; j < 16; j++)

  {

  if ((Button)sender == buttons[i, j])

  {

  outputDevice. SendNoteOn(Channel. Channel1, grifNotes[i, j], 80);

  if (!grid)

  {

  grid = true;

  DrawGrid(i, j, scaleComboBox. SelectedIndex);

  tonica = grifNotes[i, j];

  }

  return;

  }

  }

  }

  }

  private void clearGrid_Click(object sender, EventArgs e)

  {

  ClearGrid();

  grid = false;

  }

  private void scaleComboBox_SelectedIndexChanged(object sender, EventArgs e)

  {

  int[] scaleIntervals = minorScale;

  ScaleName scaleName = ScaleName. Minor; 

  switch (scaleComboBox. SelectedIndex)

  {

  case 0:

  scaleIntervals = minorScale;

  scaleName = ScaleName. Minor; 

  break;

  case 1:

  scaleIntervals = majorScale;

  scaleName = ScaleName. Major;

  break;

  case 2:

  scaleIntervals = flamencoScale;

  scaleName = ScaleName. Flamenco;

  break;

  case 3:

  scaleIntervals = bluesScale;

  scaleName = ScaleName. Blues;

  break;

  case 4:

  scaleIntervals = flamenco2Scale;

  scaleName = ScaleName. Flamenco2;

  break;

  }

  selectedScale = new MyScale(scaleName, scaleIntervals);

  if (grid)

  {

  for (int i = 0; i < 6; i++)

  {

  for (int j = 0; j < 16; j++)

  {

  if (tonica == grifNotes[i, j])

  {

  ClearGrid();

  DrawGrid(i, j, scaleComboBox. SelectedIndex);

  }

  }

  }

  } 

  }

  private void notesCountTextBox_TextChanged(object sender, EventArgs e)

  {

  int res;

  if (!int. TryParse(notesCountTextBox. Text, out res) && notesCountTextBox. Text!= "")

  {

  MessageBox. Show("Вводите целое число!");

  notesCountTextBox. Text = "16";

  notesCountTextBox. SelectAll();

  return;

  }

  if(notesCountTextBox. Text!= "")

  notesCount = int. Parse(notesCountTextBox. Text);

  }

  private void notesCountTextBox_MouseClick(object sender, MouseEventArgs e)

  {

  notesCountTextBox. SelectAll();

  }

  private void tempoTrackBar_Scroll(object sender, EventArgs e)

  {

  duration = Rhythm. GetDuration(tempoTrackBar. Value, notesCount);

  }

  private void savedMelodysComboBox_SelectedIndexChanged(object sender, EventArgs e)

  {

  isGenerated = false;

  int i = savedMelodysComboBox. SelectedIndex;

  if (i < 0 || i >= savedMelodyList. Count)

  return;

  savedMelody = savedMelodyList[i];

  SetLabelsNameNotesAndRhythm(savedMelody);

  saveMelodyButton. Enabled = false;

  }

  private void playSavedMelodyButton_Click(object sender, EventArgs e)

  {

  SetEnable(false, SetEnableMode. All);

  isGenerated = false;

  if (savedMelody!= null)

  {

  if (sd == null)

  sd = new SoundDevices(outputDevice, Channel. Channel1);

  SetLabelsNameNotesAndRhythm(savedMelody);

  saveMelodyButton. Enabled = false;

  duration = Rhythm. GetDuration(tempoTrackBar. Value, savedMelody. Notes. Length);

  cts = new CancellationTokenSource();

  stopButton. Select();

  timer. Start();

  task = Task. Run(() =>

  {

  Accompaniment. PlayAccord(tonica, savedMelody. ScaleName, Direction. Down, outputDevice);

  Thread. Sleep(800);

  MelodyPlayer. PlayMelody(sd, savedMelody, tonica, duration, grifNotes, buttons, cts. Token);

  if (!cts. Token. IsCancellationRequested)

  {

  Thread. Sleep(400);

  Accompaniment. PlayAccord(tonica, savedMelody. ScaleName, Direction. Down, outputDevice);

  }

  }, cts. Token); 

  }        }

  private void generatedMelodysComboBox_SelectedIndexChanged(object sender, EventArgs e)

  {

  isGenerated = true;

  int i = generatedMelodysComboBox. SelectedIndex;

  if (i < 0 || i >= generatedMelodyList. Count)

  return;

  generatedMelody = generatedMelodyList[i];

  SetLabelsNameNotesAndRhythm(generatedMelody);

  if(task!= null && task. IsCompleted)

  saveMelodyButton. Enabled = true;

  }

  private void playGeneratedMelodyButton_Click(object sender, EventArgs e)

  {

  SetEnable(false, SetEnableMode. All);

  isGenerated = true;

  if (generatedMelody!= null)

  {

  if (sd == null)

  sd = new SoundDevices(outputDevice, Channel. Channel1);

  SetLabelsNameNotesAndRhythm(generatedMelody);

  duration = Rhythm. GetDuration(tempoTrackBar. Value, generatedMelody. Notes. Length);

  cts = new CancellationTokenSource();

  stopButton. Select();

  timer. Start();

  task = Task. Run(() =>

  {

  Accompaniment. PlayAccord(tonica, generatedMelody. ScaleName, Direction. Down, outputDevice);

  Thread. Sleep(800);

  MelodyPlayer. PlayMelody(sd, generatedMelody, tonica, duration, grifNotes, buttons, cts. Token);

  if (!cts. Token. IsCancellationRequested)

  {

  Thread. Sleep(400);

  Accompaniment. PlayAccord(tonica, generatedMelody. ScaleName, Direction. Down, outputDevice);

  }

  }, cts. Token); 

  }

  }

  private void saveMelodyButton_Click(object sender, EventArgs e)

  {

  if (generatedMelody!= null)

  {

  if (!savedMelodyList. Contains(generatedMelody))

  {

  SetLabelsNameNotesAndRhythm(generatedMelody);

  Parser. SaveMelodyToFile(generatedMelody);

  savedMelodyList. Add(generatedMelody);

  savedMelodysComboBox. Items. Add(generatedMelody. Name + "(" + generatedMelody. ScaleName. ToString() + ")");

  MessageBox. Show("Мелодия \"" + generatedMelody. Name + "(" + generatedMelody. ScaleName. ToString() + ")" + "\" успешно сохранена");

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11