From 7a088bc324dc8263e28eedd2e7d62a5a576e257c Mon Sep 17 00:00:00 2001 From: Akiyoshi Kamide Date: Mon, 12 Dec 2016 02:02:06 +0900 Subject: [PATCH] =?utf8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF?= =?utf8?q?=E3=83=AA=E3=83=B3=E3=82=B0=EF=BC=88=E3=82=AD=E3=83=BC=E3=81=AE?= =?utf8?q?=E3=83=A1=E3=82=B8=E3=83=A3=E3=83=BC=EF=BC=8F=E3=83=9E=E3=82=A4?= =?utf8?q?=E3=83=8A=E3=83=BC=E3=82=92=E8=A1=A8=E3=81=99=E5=80=A4=E3=82=92?= =?utf8?q?=E6=95=B4=E6=95=B0=E3=81=8B=E3=82=89enum=E3=81=AB=E5=A4=89?= =?utf8?q?=E6=9B=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/camidion/chordhelper/ChordHelperApplet.java | 2 +- .../midieditor/KeySignatureSelecter.java | 23 ++++----- src/camidion/chordhelper/music/Chord.java | 2 +- .../chordhelper/music/ChordProgression.java | 2 +- src/camidion/chordhelper/music/Key.java | 54 +++++++++++++--------- .../chordhelper/music/NoteSymbolLanguage.java | 6 +-- 6 files changed, 45 insertions(+), 44 deletions(-) diff --git a/src/camidion/chordhelper/ChordHelperApplet.java b/src/camidion/chordhelper/ChordHelperApplet.java index d1cb75e..0344c93 100644 --- a/src/camidion/chordhelper/ChordHelperApplet.java +++ b/src/camidion/chordhelper/ChordHelperApplet.java @@ -283,7 +283,7 @@ public class ChordHelperApplet extends JApplet { */ public static class VersionInfo { public static final String NAME = "MIDI Chord Helper"; - public static final String VERSION = "Ver.20161205.1"; + public static final String VERSION = "Ver.20161211.1"; public static final String COPYRIGHT = "Copyright (C) 2004-2016"; public static final String AUTHER = "@きよし - Akiyoshi Kamide"; public static final String URL = "http://www.yk.rim.or.jp/~kamide/music/chordhelper/"; diff --git a/src/camidion/chordhelper/midieditor/KeySignatureSelecter.java b/src/camidion/chordhelper/midieditor/KeySignatureSelecter.java index 0dfc99f..aa4b013 100644 --- a/src/camidion/chordhelper/midieditor/KeySignatureSelecter.java +++ b/src/camidion/chordhelper/midieditor/KeySignatureSelecter.java @@ -53,25 +53,18 @@ public class KeySignatureSelecter extends JPanel implements ActionListener { } public void clear() { setKey(new Key("C")); } public void setKey( Key key ) { - if( key == null ) { - clear(); - return; - } + if( key == null ) { clear(); return; } keysigCombobox.setSelectedIndex( key.toCo5() + 7 ); - if( minorCheckbox == null ) - return; - switch( key.majorMinor() ) { - case Key.MINOR : minorCheckbox.setSelected(true); break; - case Key.MAJOR : minorCheckbox.setSelected(false); break; - } + if( minorCheckbox == null ) return; + minorCheckbox.setSelected(key.majorMinor() == Key.MajorMinor.MINOR); } public Key getKey() { - int minor = ( - minorCheckbox == null ? Key.MAJOR_OR_MINOR : - isMinor() ? Key.MINOR : - Key.MAJOR + Key.MajorMinor majorMinor = ( + minorCheckbox == null ? Key.MajorMinor.MAJOR_OR_MINOR : + isMinor() ? Key.MajorMinor.MINOR : + Key.MajorMinor.MAJOR ); - return new Key(getKeyCo5(),minor); + return new Key(getKeyCo5(),majorMinor); } public int getKeyCo5() { return keysigCombobox.getSelectedIndex() - 7; diff --git a/src/camidion/chordhelper/music/Chord.java b/src/camidion/chordhelper/music/Chord.java index d5c3e09..9baff14 100644 --- a/src/camidion/chordhelper/music/Chord.java +++ b/src/camidion/chordhelper/music/Chord.java @@ -145,7 +145,7 @@ public class Chord implements Cloneable { */ public Chord(Key key) { int keyCo5 = key.toCo5(); - if( key.majorMinor() == Key.MINOR ) { + if( key.majorMinor() == Key.MajorMinor.MINOR ) { keyCo5 += 3; set(Interval.MINOR); } diff --git a/src/camidion/chordhelper/music/ChordProgression.java b/src/camidion/chordhelper/music/ChordProgression.java index d294a96..b46723e 100644 --- a/src/camidion/chordhelper/music/ChordProgression.java +++ b/src/camidion/chordhelper/music/ChordProgression.java @@ -184,7 +184,7 @@ public class ChordProgression { */ public ChordProgression( int measureLength, int timeSignatureUpper ) { int key_co5 = (int)(Math.random() * 12) - 5; - key = new Key( key_co5, Key.MAJOR ); + key = new Key(key_co5, Key.MajorMinor.MAJOR); lines = new Vector(); Line line = new Line(); boolean is_end; diff --git a/src/camidion/chordhelper/music/Key.java b/src/camidion/chordhelper/music/Key.java index c8bd9a2..5b29c5c 100644 --- a/src/camidion/chordhelper/music/Key.java +++ b/src/camidion/chordhelper/music/Key.java @@ -14,17 +14,25 @@ package camidion.chordhelper.music; */ public class Key implements Cloneable { /** - * メジャーかマイナーかが特定できていないことを示す値 + * メジャーとマイナーのどちらかあるいは両方であることを示す型 */ - public static final int MAJOR_OR_MINOR = 0; - /** - * メジャーキー(長調) - */ - public static final int MAJOR = 1; - /** - * マイナーキー(短調) - */ - public static final int MINOR = -1; + public enum MajorMinor { + /** メジャーキー(長調) */ + MAJOR { + @Override + public MajorMinor opposite() { return MINOR; } + }, + /** マイナーキー(短調) */ + MINOR { + @Override + public MajorMinor opposite() { return MAJOR; } + }, + /** メジャーまたはマイナー */ + MAJOR_OR_MINOR; + + /** 反対の調を返します。 */ + public MajorMinor opposite() { return this; } + } /** * この調の五度圏インデックス値 */ @@ -32,7 +40,7 @@ public class Key implements Cloneable { /** * メジャー・マイナーの種別 */ - private int majorMinor; + private MajorMinor majorMinor; /** * 調号が空のキー(ハ長調またはイ短調)を構築します。 */ @@ -43,7 +51,7 @@ public class Key implements Cloneable { * * @param co5 五度圏インデックス値 */ - public Key(int co5) { setKey(co5, MAJOR_OR_MINOR); } + public Key(int co5) { setKey(co5, MajorMinor.MAJOR_OR_MINOR); } /** * 指定の五度圏インデックス値を持つ、 * メジャー/マイナーを指定した調を構築します。 @@ -51,7 +59,7 @@ public class Key implements Cloneable { * @param co5 五度圏インデックス値 * @param majorMinor {@link #MAJOR}、{@link #MINOR}、{@link #MAJOR_OR_MINOR} のいずれか */ - public Key(int co5, int majorMinor) { setKey(co5, majorMinor); } + public Key(int co5, MajorMinor majorMinor) { setKey(co5, majorMinor); } /** * 指定の五度圏インデックス値を持つ、 * メジャー/マイナーの明確な調を構築します。 @@ -96,11 +104,11 @@ public class Key implements Cloneable { return false; } @Override - public int hashCode() { return majorMinor * 256 + co5 ; } + public int hashCode() { return majorMinor.ordinal() * 256 + co5 ; } private void setKey(int co5, boolean isMinor) { - setKey( co5, isMinor ? MINOR : MAJOR ); + setKey( co5, isMinor ? MajorMinor.MINOR : MajorMinor.MAJOR ); } - private void setKey(int co5, int majorMinor) { + private void setKey(int co5, MajorMinor majorMinor) { this.co5 = co5; this.majorMinor = majorMinor; normalize(); @@ -121,7 +129,7 @@ public class Key implements Cloneable { public byte[] getBytes() { byte data[] = new byte[2]; data[0] = (byte)(co5 & 0xFF); - data[1] = (byte)(majorMinor == MINOR ? 1 : 0); + data[1] = (byte)(majorMinor == MajorMinor.MINOR ? 1 : 0); return data; } /** @@ -131,9 +139,9 @@ public class Key implements Cloneable { public int toCo5() { return co5; } /** * メジャー/マイナーの区別を返します。 - * @return {@link #MAJOR}、{@link #MINOR}、{@link #MAJOR_OR_MINOR} のいずれか + * @return メジャー/マイナーの区別 */ - public int majorMinor() { return majorMinor; } + public MajorMinor majorMinor() { return majorMinor; } /** * 相対ドの音階を返します。 * @return 相対ドの音階(0~11) @@ -148,7 +156,7 @@ public class Key implements Cloneable { */ public int rootNoteNumber() { int n = relativeDo(); - return majorMinor==MINOR ? Music.mod12(n-3) : n; + return majorMinor==MajorMinor.MINOR ? Music.mod12(n-3) : n; } /** * 指定されたノート番号の音が、この調のスケールの構成音か調べます。 @@ -199,7 +207,7 @@ public class Key implements Cloneable { * * @return 平行調 */ - public Key relativeKey() { return new Key(co5, -majorMinor); } + public Key relativeKey() { return new Key(co5, majorMinor.opposite()); } /** * 同主調を生成して返します。 * これは元の調とルート音が同じで、メジャーとマイナーが異なる調です。 @@ -213,8 +221,8 @@ public class Key implements Cloneable { */ public Key parallelKey() { switch( majorMinor ) { - case MAJOR: return new Key( co5-3, MINOR ); - case MINOR: return new Key( co5+3, MAJOR ); + case MAJOR: return new Key( co5-3, MajorMinor.MINOR ); + case MINOR: return new Key( co5+3, MajorMinor.MAJOR ); default: return new Key(co5); } } diff --git a/src/camidion/chordhelper/music/NoteSymbolLanguage.java b/src/camidion/chordhelper/music/NoteSymbolLanguage.java index b10dfff..ef2cb91 100644 --- a/src/camidion/chordhelper/music/NoteSymbolLanguage.java +++ b/src/camidion/chordhelper/music/NoteSymbolLanguage.java @@ -113,11 +113,11 @@ public enum NoteSymbolLanguage { * @param majorMinor 負数:マイナー 0:不明 正数:メジャー * @return 調の文字列表現 */ - public String keyStringOf(NoteSymbol note, int majorMinor) { + public String keyStringOf(NoteSymbol note, Key.MajorMinor majorMinor) { String s = ""; - if( majorMinor >= 0 ) { + if( majorMinor == Key.MajorMinor.MAJOR || majorMinor == Key.MajorMinor.MAJOR_OR_MINOR ) { s = note.toStringIn(this) + major; - if( majorMinor > 0 ) return s; + if( majorMinor == Key.MajorMinor.MAJOR ) return s; s += majorMinorDelimiter; } return s + note.toMinorKeyRootStringIn(this) + minor; -- 2.11.0