def major_chord(self, wob): wob.set_wrong_flag(False) self.__talk('You chose Minor Chord') note = self.__valid_input('Note') music = Music(note) if music.valid_note(note)[1]: if music != None: result = music.major_chord() print("Major Chord Progression for {} Major Scale: ".format( note) + ' '.join(result)) else: self.Study_Music_Theory() else: self.Study_Music()
def input_selection_change(self): selected_text = self.input_menu.currentText() # ----- Detect change in menu selection ----- # if self.input_change_detect != selected_text: self.input_change_detect = selected_text # ----- Action performed on Input Menu Values ----- # if selected_text != self.select_data: option_menu_selected_text = self.option_menu.currentText() if option_menu_selected_text == self.options_menu_vals[ 0]: # Major Scale note = selected_text music = Music(note) result = music.major_scale() self.output_text.setText(' '.join(result)) elif option_menu_selected_text == self.options_menu_vals[ 1]: # Major Chord note = selected_text music = Music(note) result = music.major_chord() self.output_text.setText(' '.join(result)) elif option_menu_selected_text == self.options_menu_vals[ 2]: # Chords in Major Scale note = selected_text music = Music(note) result = music.chords_in_major_scale() self.output_text.setText(' '.join(result)) # ----- To Keep track of Selections ----- # if self.option_menu.currentText() != self.select_data: if self.option_menu.currentText() in self.sub_menu_selected: self.sub_menu_selected[self.option_menu.currentText()].append( selected_text) self.sub_menu_selected[self.option_menu.currentText()] = list( set(self.sub_menu_selected[ self.option_menu.currentText()])) else: self.sub_menu_selected[self.option_menu.currentText()] = list( set([selected_text]))
def show_result(self): # Result Handle if self.option_menu.text != "Select" and self.input_menu.text != "Select": output_text = self.output_text if self.option_menu.text == self.options_spinner_vals[0]: # "Major Scale" note = self.input_menu.text music = Music(note) result = music.major_scale() output_text = ' '.join(result) + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[1]: # "Major Chord" note = self.input_menu.text music = Music(note) result = music.major_chord() output_text = ' '.join(result) + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[2]: # "Chords in Major Scale" note = self.input_menu.text music = Music(note) result = music.chords_in_major_scale() output_text = ' '.join(result) + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[3]: # "Scale shift with capo position (Guitar)" ## Implement Code from 'update_input_spinner_vals()'print(self.sub_menu_selected) print(self.sub_menu_selected) rem_lst = ('Select', self.options_spinner_vals[3]) print(rem_lst) sub_val = self.sub_menu_selected[self.options_spinner_vals[3]] print(sub_val) new_val = [i for i in sub_val if i not in rem_lst] print(new_val) self.sub_menu_selected[self.options_spinner_vals[3]] = new_val # Take the 'Note' and 'Capo Position' and call "Music.capo_pos_scale_shift(capo_pos)" # Take help from "Relative Major/Minor" condition pass # M/m --> Capo Pos --> Notes(m) elif self.option_menu.text == self.options_spinner_vals[4]: # "Minor Scale" note = self.input_menu.text music = Music(note) result = music.minor_scale() output_text = ' '.join(result) + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[5]: # "Minor Chord" note = self.input_menu.text music = Music(note) result = music.minor_chord() output_text = ' '.join(result) + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[6]: # "Chords in Minor Scale" note = self.input_menu.text music = Music(note[:-1]) result = music.chords_in_minor_scale() output_text = ' '.join(result) + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[7]: # "Relative Major/Minor" print(self.sub_menu_selected) rem_lst = ('Select', self.options_spinner_vals[7]) sub_val = self.sub_menu_selected[self.options_spinner_vals[7]] new_val = [i for i in sub_val if i not in rem_lst] self.sub_menu_selected[self.options_spinner_vals[7]] = new_val if self.sub_menu_selected[self.options_spinner_vals[7]][-2] == self.rel_maj_min_options[0] and self.sub_menu_selected[self.options_spinner_vals[7]][-1] is not None: scale = self.sub_menu_selected[self.options_spinner_vals[7]][-1] music = Music() result = music.relative_major(scale[:-1]) output_text = result + '\n\n\n' + self.output_text.split('\n')[-1] elif self.sub_menu_selected[self.options_spinner_vals[7]][-2] == self.rel_maj_min_options[1] and self.sub_menu_selected[self.options_spinner_vals[7]][-1] is not None: scale = self.sub_menu_selected[self.options_spinner_vals[7]][-1] music = Music() result = music.relative_minor(scale) output_text = result + '\n\n\n' + self.output_text.split('\n')[-1] self.ids.input_menu.values = self.rel_maj_min_options #self.sub_menu_selected[self.options_spinner_vals[7]] = list(set(new_val)) elif self.option_menu.text == self.options_spinner_vals[8]: # "Scale from Chords" pass elif self.option_menu.text == self.options_spinner_vals[9]: # "Play Tone Based on Note" self.output.text = "Playing..." note = self.input_menu.text music = Music(note) music.note_beep(note) self.output.text = self.output_text output_text = self.output_text + '\n\n\n' + self.output_text.split('\n')[-1] elif self.option_menu.text == self.options_spinner_vals[10]: # "Play Tone in Sequence (Scale / Note Sequence)" self.output.text = "Playing..." scale = self.input_menu.text music = Music(scale) if self.nS.active: music.note_beep_scale('M', scale) elif self.nb.active: music.note_beep_scale('m', scale) output_text = self.output_text + '\n\n\n' + self.output_text.split('\n')[-1] pass # Incomplete (Sequence Playing Pending; Use multiple selection feature) self.output.text = output_text