OSDN Git Service

・プレイリストを空にしても調号、拍子、テンポの表示がクリアされない問題の改善
authorAkiyoshi Kamide <kamide@yk.rim.or.jp>
Wed, 17 May 2017 15:22:10 +0000 (00:22 +0900)
committerAkiyoshi Kamide <kamide@yk.rim.or.jp>
Wed, 17 May 2017 15:22:10 +0000 (00:22 +0900)
・表示テキストの修正

src/camidion/chordhelper/ChordHelperApplet.java
src/camidion/chordhelper/midieditor/TempoSelecter.java
src/camidion/chordhelper/midieditor/TimeSignatureSelecter.java

index c701e18..19a25e7 100644 (file)
@@ -270,7 +270,7 @@ public class ChordHelperApplet extends JApplet {
         */
        public static class VersionInfo {
                public static final String NAME = "MIDI Chord Helper";
-               public static final String VERSION = "Ver.20170505.1";
+               public static final String VERSION = "Ver.20170517.1";
                public static final String COPYRIGHT = "Copyright (C) 2004-2017";
                public static final String AUTHER = "@きよし - Akiyoshi Kamide";
                public static final String URL = "http://www.yk.rim.or.jp/~kamide/music/chordhelper/";
@@ -407,41 +407,42 @@ public class ChordHelperApplet extends JApplet {
                                break;
                        }
                });
-               //シーケンサーの時間スライダーの値が変わったときのリスナーを登録
+               // シーケンサーの再生時間位置、またはシーケンサーにロード中のシーケンスが変更されたときに呼び出されるリスナーを登録
                JLabel songTitleLabel = new JLabel();
                sequencerModel.addChangeListener(e->{
-                       SequenceTrackListTableModel sequenceModel = sequencerModel.getSequenceTrackListTableModel();
-                       int loadedSequenceIndex = playlistModel.getSequenceModelList().indexOf(sequenceModel);
-                       songTitleLabel.setText("<html>"+(
-                               loadedSequenceIndex < 0 ? "[No MIDI file loaded]" :
-                               "MIDI file " + loadedSequenceIndex + ": " + (
-                                       sequenceModel == null || sequenceModel.toString().isEmpty() ?
-                                       "[Untitled]" :
-                                       "<font color=maroon>"+sequenceModel+"</font>"
-                               )
-                       )+"</html>");
                        Sequencer sequencer = sequencerModel.getSequencer();
                        chordMatrix.setPlaying(sequencer.isRunning());
-                       if( sequenceModel != null ) {
-                               SequenceTickIndex tickIndex = sequenceModel.getSequenceTickIndex();
-                               long tickPos = sequencer.getTickPosition();
-                               tickIndex.tickToMeasure(tickPos);
-                               chordMatrix.setBeat(tickIndex);
-                               if( sequencerModel.getValueIsAdjusting() || ! (sequencer.isRunning() || sequencer.isRecording()) ) {
-                                       MetaMessage msg;
-                                       msg = tickIndex.lastMetaMessageAt(
-                                               SequenceTickIndex.MetaMessageType.TIME_SIGNATURE, tickPos
-                                       );
-                                       timesigSelecter.setValue(msg==null ? null : msg.getData());
-                                       msg = tickIndex.lastMetaMessageAt(
-                                               SequenceTickIndex.MetaMessageType.TEMPO, tickPos
-                                       );
-                                       tempoSelecter.setTempo(msg==null ? null : msg.getData());
-                                       msg = tickIndex.lastMetaMessageAt(
-                                               SequenceTickIndex.MetaMessageType.KEY_SIGNATURE, tickPos
-                                       );
-                                       if(msg == null) keysigLabel.clear(); else setKeySignature(new Key(msg.getData()));
-                               }
+                       SequenceTrackListTableModel sequenceModel = sequencerModel.getSequenceTrackListTableModel();
+                       if( sequenceModel == null ) {
+                               songTitleLabel.setText("<html>[No MIDI file loaded]</html>");
+                               timesigSelecter.clear();
+                               tempoSelecter.clear();
+                               keysigLabel.clear();
+                               return;
+                       }
+                       String songTitle = sequenceModel.toString();
+                       int songIndex = playlistModel.getSequenceModelList().indexOf(sequenceModel);
+                       songTitleLabel.setText("<html>"+("MIDI file " + songIndex + ": " + (
+                               songTitle.isEmpty() ? "[Untitled]" : "<font color=maroon>"+songTitle+"</font>"
+                       ))+"</html>");
+                       SequenceTickIndex tickIndex = sequenceModel.getSequenceTickIndex();
+                       long tickPosition = sequencer.getTickPosition();
+                       tickIndex.tickToMeasure(tickPosition);
+                       chordMatrix.setBeat(tickIndex);
+                       if( sequencerModel.getValueIsAdjusting() || ! (sequencer.isRunning() || sequencer.isRecording()) ) {
+                               MetaMessage msg;
+                               msg = tickIndex.lastMetaMessageAt(
+                                       SequenceTickIndex.MetaMessageType.TIME_SIGNATURE, tickPosition
+                               );
+                               timesigSelecter.setValue(msg==null ? null : msg.getData());
+                               msg = tickIndex.lastMetaMessageAt(
+                                       SequenceTickIndex.MetaMessageType.TEMPO, tickPosition
+                               );
+                               tempoSelecter.setTempo(msg==null ? null : msg.getData());
+                               msg = tickIndex.lastMetaMessageAt(
+                                       SequenceTickIndex.MetaMessageType.KEY_SIGNATURE, tickPosition
+                               );
+                               if(msg == null) keysigLabel.clear(); else setKeySignature(new Key(msg.getData()));
                        }
                });
                sequencerModel.fireStateChanged();
index c88e241..8bb4bf0 100644 (file)
@@ -82,7 +82,7 @@ public class TempoSelecter extends JPanel {
                }
                tempoLabel.setToolTipText(
                        editable ?
-                       "Click rhythmically to adjust tempo - ここをクリックしてリズムをとるとテンポを合わせられます"
+                       "Tap rhythmically here to adjust tempo - ここをクリックしてリズムをとるとテンポを合わせられます"
                        : null
                );
        }
@@ -113,6 +113,7 @@ public class TempoSelecter extends JPanel {
         * @param msgdata MIDIメタメッセージのバイト列(null を指定した場合はデフォルトに戻る)
         */
        public void setTempo(byte msgdata[]) {
-               setTempo(msgdata==null ? DEFAULT_QPM: MIDISpec.byteArrayToQpmTempo(msgdata));
+               if( msgdata==null ) clear(); else setTempo(MIDISpec.byteArrayToQpmTempo(msgdata));
        }
-}
\ No newline at end of file
+       public void clear() { setTempo(DEFAULT_QPM); }
+}
index 30f76ca..f5a24e9 100644 (file)
@@ -38,15 +38,17 @@ public class TimeSignatureSelecter extends JPanel {
                add(timesigValueLabel);
                setEditable(true);
        }
-       public void clear() {
-               upperTimesigModel.setValue(4);
-               lowerTimesigView.setSelectedIndex(2);
-       }
        public byte[] getByteArray() {
                byte upper = upperTimesigModel.getNumber().byteValue();
                byte lowerIndex = (byte)lowerTimesigView.getSelectedIndex();
                return new byte[] { upper, lowerIndex, (byte)(96 >> lowerIndex), 8 };
        }
+       protected void updateTimesigValueLabel() {
+               timesigValueLabel.setTimeSignature(
+                       upperTimesigModel.getNumber().byteValue(),
+                       (byte)lowerTimesigView.getSelectedIndex()
+               );
+       }
        public void setValue(byte upper, byte lowerIndex) {
                upperTimesigModel.setValue(upper);
                lowerTimesigView.setSelectedIndex(lowerIndex);
@@ -62,9 +64,11 @@ public class TimeSignatureSelecter extends JPanel {
                upperTimesigView.setVisible(editable);
                lowerTimesigView.setVisible(editable);
                timesigValueLabel.setVisible(!editable);
-               if(!editable) timesigValueLabel.setTimeSignature(
-                       upperTimesigModel.getNumber().byteValue(),
-                       (byte)lowerTimesigView.getSelectedIndex()
-               );
+               if(!editable) updateTimesigValueLabel();
+       }
+       public void clear() {
+               upperTimesigModel.setValue(4);
+               lowerTimesigView.setSelectedIndex(2);
+               updateTimesigValueLabel();
        }
-}
\ No newline at end of file
+}