Beispiel #1
0
 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()
Beispiel #2
0
    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