MIDI Chord Helper機能追加版(GOは五度圏や碁盤の「ご」。別に移動式じゃありません)
リビジョン | 742d430dc69115d2d73f571a801b64089cb6fa23 (tree) |
---|---|
日時 | 2022-11-15 02:14:24 |
作者 | k-hatano <kent.ruffle.mgj626@gmai...> |
コミッター | k-hatano |
フリーエリアをミドルクリックした場合選択文字列のみコード再生、Altキーを押しながらスクロール時はランダムアルペジオ
@@ -464,6 +464,20 @@ public class ChordHelperApplet extends JApplet { | ||
464 | 464 | // 歌詞表示/コード入力フィールド |
465 | 465 | (lyricDisplay = new ChordTextField(sequencerModel)).addActionListener( |
466 | 466 | e -> chordMatrix.setSelectedChord(e.getActionCommand().trim().split("[ \t\r\n]")[0])); |
467 | + lyricDisplay.addMouseListener( | |
468 | + new MouseAdapter(){ | |
469 | + public void mousePressed(MouseEvent e) { | |
470 | + if (e.getButton() == MouseEvent.BUTTON2) { | |
471 | + // テキストの一部を選択しながらミドルクリックした場合、選択箇所のみコードとして扱う | |
472 | + if (lyricDisplay.getSelectedText() != null && lyricDisplay.getSelectedText().length() > 0) { | |
473 | + chordMatrix.setSelectedChord(lyricDisplay.getSelectedText().trim().split("[ \t\r\n]")[0]); | |
474 | + } else { | |
475 | + chordMatrix.setSelectedChord(lyricDisplay.getText().trim().split("[ \t\r\n]")[0]); | |
476 | + } | |
477 | + } | |
478 | + } | |
479 | + } | |
480 | + ); | |
467 | 481 | Border lyricDisplayDefaultBorder = lyricDisplay.getBorder(); |
468 | 482 | Color lyricDisplayDefaultBgcolor = lyricDisplay.getBackground(); |
469 | 483 | // |
@@ -639,7 +639,15 @@ public class ChordMatrix extends JPanel | ||
639 | 639 | intervals.add(Chord.Interval.MAJOR); // To cancel sus4 |
640 | 640 | intervals.add(Chord.Interval.SHARP5); |
641 | 641 | } else |
642 | - intervals.add(Chord.Interval.FLAT5); | |
642 | + if (e.isAltDown() && (e.getButton() == 2)) { | |
643 | + // Blackadder Chord | |
644 | + intervals.add(Chord.Interval.OMIT3); | |
645 | + intervals.add(Chord.Interval.FLAT5); | |
646 | + intervals.add(Chord.Interval.SEVENTH); | |
647 | + intervals.add(Chord.Interval.NINTH); | |
648 | + } else { | |
649 | + intervals.add(Chord.Interval.FLAT5); | |
650 | + } | |
643 | 651 | } |
644 | 652 | if (selectedChordLabel != null) { |
645 | 653 | selectedChordLabel.setSelection(false); |
@@ -781,15 +789,29 @@ public class ChordMatrix extends JPanel | ||
781 | 789 | |
782 | 790 | public void mouseWheelMoved(MouseWheelEvent e) { |
783 | 791 | if (selectedChord != null) { |
784 | - if (e.getWheelRotation() > 0) { // Wheel moved down | |
785 | - if (--selectedNoteIndex < 0) { | |
786 | - selectedNoteIndex = selectedChord.numberOfNotes() - 1; | |
792 | + if ((e.getModifiers() & ActionEvent.ALT_MASK) > 0) { | |
793 | + // Altキーを押しながらの場合はランダム | |
794 | + if (Math.random() < 0.5) { | |
795 | + if (--selectedNoteIndex < 0) { | |
796 | + selectedNoteIndex = selectedChord.numberOfNotes() - 1; | |
797 | + } | |
798 | + } else { | |
799 | + if (++selectedNoteIndex >= selectedChord.numberOfNotes()) { | |
800 | + selectedNoteIndex = 0; | |
801 | + } | |
787 | 802 | } |
788 | - } else { // Wheel moved up | |
789 | - if (++selectedNoteIndex >= selectedChord.numberOfNotes()) { | |
790 | - selectedNoteIndex = 0; | |
803 | + } else { | |
804 | + if (e.getWheelRotation() > 0) { // Wheel moved down | |
805 | + if (--selectedNoteIndex < 0) { | |
806 | + selectedNoteIndex = selectedChord.numberOfNotes() - 1; | |
807 | + } | |
808 | + } else { // Wheel moved up | |
809 | + if (++selectedNoteIndex >= selectedChord.numberOfNotes()) { | |
810 | + selectedNoteIndex = 0; | |
811 | + } | |
791 | 812 | } |
792 | 813 | } |
814 | + | |
793 | 815 | fireChordChanged(); |
794 | 816 | } |
795 | 817 | } |