Beispiel #1
0
        public void btnUp_Click(Object sender, EventArgs e)
        {
            int index = getUtausingersSelectedIndex();

#if DEBUG
            AppManager.debugWriteLine("Preference.btnUp_Click; index=" + index);
#endif
            if (0 <= index - 1 && index < m_utau_singers.Count)
            {
                SingerConfig buf = (SingerConfig)m_utau_singers[index].clone();
                m_utau_singers[index]     = (SingerConfig)m_utau_singers[index - 1].clone();
                m_utau_singers[index - 1] = buf;
                UpdateUtausingerList();
                if (!listSingers.Items[index - 1].Selected)
                {
                    listSingers.SelectedIndices.Clear();
                    listSingers.Items[index - 1].Selected = true;
                }
            }
            isSingersChanged = true;
        }
        public void txtVibratoLength_TextChanged(Object sender, EventArgs e)
        {
#if DEBUG
            AppManager.debugWriteLine("txtVibratoLength_TextChanged");
            AppManager.debugWriteLine("    (m_vibrato==null)=" + (m_vibrato == null));
#endif
            int percent = 0;
            try {
                percent = int.Parse(txtVibratoLength.Text);
                if (percent < 0)
                {
                    percent = 0;
                }
                else if (100 < percent)
                {
                    percent = 100;
                }
            } catch (Exception ex) {
                return;
            }
            if (percent == 0)
            {
                m_vibrato = null;
#if DEBUG
                sout.println("FormVibratoConfig#txtVibratoLength_TextChanged; A; m_vibrato -> null");
#endif
                txtVibratoLength.Enabled = false;
            }
            else
            {
                if (m_vibrato != null)
                {
                    int new_length = (int)(m_note_length * percent / 100.0f);
                    m_vibrato.setLength(new_length);
                }
            }
        }
        /// <summary>
        /// コンストラクタ.引数vibrato_handleには,Cloneしたものを渡さなくてよい.
        /// </summary>
        /// <param name="vibrato_handle"></param>
        /// <param name="note_length"></param>
        /// <param name="default_vibrato_length"></param>
        /// <param name="type"></param>
        /// <param name="use_original"></param>
        public FormVibratoConfig(
            VibratoHandle vibrato_handle,
            int note_length,
            DefaultVibratoLengthEnum default_vibrato_length,
            SynthesizerType type,
            bool use_original)
        {
            InitializeComponent();

#if DEBUG
            AppManager.debugWriteLine("FormVibratoConfig.ctor(Vsqhandle,int,DefaultVibratoLength)");
            AppManager.debugWriteLine("    (vibrato_handle==null)=" + (vibrato_handle == null));
            sout.println("    type=" + type);
#endif
            if (use_original)
            {
                radioUserDefined.Checked = true;
            }
            else
            {
                if (type == SynthesizerType.VOCALOID1)
                {
                    radioVocaloid1.Checked = true;
                }
                else
                {
                    radioVocaloid2.Checked = true;
                }
            }
            if (vibrato_handle != null)
            {
                m_vibrato = (VibratoHandle)vibrato_handle.clone();
            }

            // 選択肢の状態を更新
            updateComboBoxStatus();
            // どれを選ぶか?
            if (vibrato_handle != null)
            {
#if DEBUG
                sout.println("FormVibratoConfig#.ctor; vibrato_handle.IconID=" + vibrato_handle.IconID);
#endif
                for (int i = 0; i < comboVibratoType.Items.Count; i++)
                {
                    VibratoHandle handle = (VibratoHandle)comboVibratoType.Items[i];
#if DEBUG
                    sout.println("FormVibratoConfig#.ctor; handle.IconID=" + handle.IconID);
#endif
                    if (vibrato_handle.IconID.Equals(handle.IconID))
                    {
                        comboVibratoType.SelectedIndex = i;
                        break;
                    }
                }
            }

            txtVibratoLength.Enabled = (vibrato_handle != null);
            if (vibrato_handle != null)
            {
                txtVibratoLength.Text = (int)((float)vibrato_handle.getLength() / (float)note_length * 100.0f) + "";
            }
            else
            {
                string s = "";
                if (default_vibrato_length == DefaultVibratoLengthEnum.L100)
                {
                    s = "100";
                }
                else if (default_vibrato_length == DefaultVibratoLengthEnum.L50)
                {
                    s = "50";
                }
                else if (default_vibrato_length == DefaultVibratoLengthEnum.L66)
                {
                    s = "66";
                }
                else if (default_vibrato_length == DefaultVibratoLengthEnum.L75)
                {
                    s = "75";
                }
                txtVibratoLength.Text = s;
            }

            m_note_length = note_length;

            registerEventHandlers();
            setResources();
            applyLanguage();

            Util.applyFontRecurse(this, AppManager.editorConfig.getBaseFont());
        }
Beispiel #4
0
        /// <summary>
        /// パレットツールを読み込みます
        /// </summary>
        public static void init()
        {
            String path = Utility.getToolPath();

            if (!Directory.Exists(path))
            {
                return;
            }

            FileInfo[] files = new DirectoryInfo(path).GetFiles("*.txt");
            foreach (FileInfo file in files)
            {
                String       code = "";
                StreamReader sr   = null;
                try {
                    sr    = new StreamReader(file.FullName);
                    code += sr.ReadToEnd();
                } catch (Exception ex) {
                    Logger.write(typeof(PaletteToolServer) + ".init; ex=" + ex + "\n");
                } finally {
                    if (sr != null)
                    {
                        try {
                            sr.Close();
                        } catch (Exception ex2) {
                            Logger.write(typeof(PaletteToolServer) + ".init; ex=" + ex2 + "\n");
                        }
                    }
                }

                Assembly        asm    = null;
                Vector <String> errors = new Vector <String>();
                try {
                    asm = (new PluginLoader()).compileScript(code, errors);
                } catch (Exception ex) {
                    serr.println("PaletteToolServer#init; ex=" + ex);
                    asm = null;
                }
                if (asm == null)
                {
                    continue;
                }

                if (asm == null)
                {
                    continue;
                }

                foreach (Type t in asm.GetTypes())
                {
                    if (t.IsClass && t.IsPublic && !t.IsAbstract && t.GetInterface(typeof(IPaletteTool).FullName) != null)
                    {
                        try {
#if DEBUG
                            AppManager.debugWriteLine("t.FullName=" + t.FullName);
#endif
                            Object instance = asm.CreateInstance(t.FullName);
                            String dir      = Path.Combine(Utility.getApplicationDataPath(), "tool");
                            String cfg      = Path.GetFileNameWithoutExtension(file.FullName) + ".config";
                            String config   = Path.Combine(dir, cfg);
                            if (File.Exists(config))
                            {
                                XmlStaticMemberSerializer xsms = new XmlStaticMemberSerializer(instance.GetType());
                                FileStream fs = null;
                                boolean    errorOnDeserialize = false;
                                try {
                                    fs = new FileStream(config, FileMode.Open, FileAccess.Read);
                                    try {
                                        xsms.Deserialize(fs);
                                    } catch (Exception ex) {
                                        errorOnDeserialize = true;
                                        serr.println("PaletteToolServer#init; ex=" + ex);
                                    }
                                } catch (Exception ex) {
                                    serr.println("PaletteToolServer#init; ex=" + ex);
                                } finally {
                                    if (fs != null)
                                    {
                                        try {
                                            fs.Close();
                                        } catch (Exception ex2) {
                                            serr.println("PaletteToolServer#init; ex2=" + ex2);
                                        }
                                    }
                                }
                                if (errorOnDeserialize)
                                {
                                    try {
                                        PortUtil.deleteFile(config);
                                    } catch (Exception ex) {
                                        serr.println("PaletteToolServer#init; ex=" + ex);
                                    }
                                }
                            }
                            String id = Path.GetFileNameWithoutExtension(file.FullName);
                            loadedTools.put(id, instance);
                        } catch (Exception ex) {
                            serr.println("PlaetteToolServer#init; ex=" + ex);
                        }
                    }
                }
            }
        }
        public BezierChain extractPartialBezier(double t_start, double t_end)
        {
            if (this.size() <= 1)
            {
                throw new Exception("chain must has two or more bezier points");
            }
            double start = this.points[0].getBase().getX();
            double end   = this.points[this.size() - 1].getBase().getX();

            // [from, to]が、このベジエ曲線の範囲内にあるかどうかを検査
            if (start > t_start || t_end > end)
            {
                throw new Exception("no bezier point appeared in the range of \"from\" to \"to\"");
            }

            // t_start, t_endが既存のベジエデータ点位置を被っていないかどうか検査しながらコピー
            bool        t_start_added = false; // 最初の区間が追加された直後だけ立つフラグ
            BezierChain edited        = new BezierChain(mColor);
            int         count         = 0;

            for (int i = 0; i < this.points.Count - 1; i++)
            {
                if (this.points[i].getBase().getX() < t_start && t_start < this.points[i + 1].getBase().getX())
                {
                    if (this.points[i].getBase().getX() < t_end && t_end < this.points[i + 1].getBase().getX())
                    {
#if DEBUG
                        AppManager.debugWriteLine("points[i].Base.X < t_start < t_end < points[i + 1].Base.X");
#endif
                        PointD x0 = this.points[i].getBase();
                        PointD x1 = this.points[i + 1].getBase();
                        PointD c0 = (this.points[i].getControlRightType() == BezierControlType.None) ?
                                    x0 : this.points[i].getControlRight();
                        PointD c1 = (this.points[i + 1].getControlLeftType() == BezierControlType.None) ?
                                    x1 : this.points[i + 1].getControlLeft();
                        PointD[] res = cutUnitBezier(x0, c0, c1, x1, t_start);

                        x0  = res[3];
                        c0  = res[4];
                        c1  = res[5];
                        x1  = res[6];
                        res = cutUnitBezier(x0, c0, c1, x1, t_end);

                        BezierPoint left  = new BezierPoint(res[0]);
                        BezierPoint right = new BezierPoint(res[3]);
                        left.setControlRight(res[1]);
                        right.setControlLeft(res[2]);
                        left.setControlRightType(this.points[i].getControlRightType());
                        right.setControlLeftType(this.points[i + 1].getControlLeftType());
                        edited.add(left);
                        edited.add(right);
                        t_start_added = true;
                        break;
                    }
                    else
                    {
#if DEBUG
                        AppManager.debugWriteLine("points[i].Base.X < t_start < points[i + 1].Base.X");
#endif
                        PointD x0 = this.points[i].getBase();
                        PointD x1 = this.points[i + 1].getBase();
                        PointD c0 = (this.points[i].getControlRightType() == BezierControlType.None) ?
                                    x0 : this.points[i].getControlRight();
                        PointD c1 = (this.points[i + 1].getControlLeftType() == BezierControlType.None) ?
                                    x1 : this.points[i + 1].getControlLeft();
                        PointD[] res = cutUnitBezier(x0, c0, c1, x1, t_start);

                        BezierPoint left  = new BezierPoint(res[3]);
                        BezierPoint right = new BezierPoint(res[6]);

                        left.setControlRight(res[4]);
                        left.setControlRightType(this.points[i].getControlRightType());

                        right.setControlLeft(res[5]);
                        right.setControlRight(this.points[i + 1].getControlRight());
                        right.setControlRightType(this.points[i + 1].getControlRightType());
                        right.setControlLeftType(this.points[i + 1].getControlLeftType());
                        edited.points.Add(left);
                        count++;
                        edited.points.Add(right);
                        count++;
                        t_start_added = true;
                    }
                }
                if (t_start <= this.points[i].getBase().getX() && this.points[i].getBase().getX() <= t_end)
                {
                    if (!t_start_added)
                    {
                        edited.points.Add((BezierPoint)this.points[i].clone());
                        count++;
                    }
                    else
                    {
                        t_start_added = false;
                    }
                }
                if (this.points[i].getBase().getX() < t_end && t_end < this.points[i + 1].getBase().getX())
                {
                    PointD x0 = this.points[i].getBase();
                    PointD x1 = this.points[i + 1].getBase();
                    PointD c0 = (this.points[i].getControlRightType() == BezierControlType.None) ?
                                x0 : this.points[i].getControlRight();
                    PointD c1 = (this.points[i + 1].getControlLeftType() == BezierControlType.None) ?
                                x1 : this.points[i + 1].getControlLeft();
                    PointD[] res = cutUnitBezier(x0, c0, c1, x1, t_end);

                    edited.points[count - 1].setControlRight(res[1]);

                    BezierPoint right = new BezierPoint(res[3]);
                    right.setControlLeft(res[2]);
                    right.setControlLeftType(this.points[i + 1].getControlLeftType());
                    edited.add(right);
                    count++;
                    break;
                }
            }

            if (this.points[this.points.Count - 1].getBase().getX() == t_end && !t_start_added)
            {
                edited.add((BezierPoint)this.points[this.points.Count - 1].clone());
                count++;
            }

            for (int i = 0; i < edited.size(); i++)
            {
                edited.points[i].setID(i);
            }
            return(edited);
        }
Beispiel #6
0
        public void showPrefs(Form Parent, System.Drawing.Point location, bool showVBCfg)
        {
            try {
                if (mDialogPreference == null)
                {
                    mDialogPreference = new Preference();
                }
                mDialogPreference.setBaseFont(new Font(AppManager.editorConfig.BaseFontName, java.awt.Font.PLAIN, AppManager.FONT_SIZE9));
                mDialogPreference.setScreenFont(new Font(AppManager.editorConfig.ScreenFontName, java.awt.Font.PLAIN, AppManager.FONT_SIZE9));
                mDialogPreference.setWheelOrder(AppManager.editorConfig.WheelOrder);
                mDialogPreference.setCursorFixed(AppManager.editorConfig.CursorFixed);
                mDialogPreference.setDefaultVibratoLength(AppManager.editorConfig.DefaultVibratoLength);
                mDialogPreference.setAutoVibratoThresholdLength(AppManager.editorConfig.AutoVibratoThresholdLength);
                mDialogPreference.setAutoVibratoType1(AppManager.editorConfig.AutoVibratoType1);
                mDialogPreference.setAutoVibratoType2(AppManager.editorConfig.AutoVibratoType2);
                mDialogPreference.setAutoVibratoTypeCustom(AppManager.editorConfig.AutoVibratoTypeCustom);
                mDialogPreference.setEnableAutoVibrato(AppManager.editorConfig.EnableAutoVibrato);
                mDialogPreference.setPreSendTime(AppManager.editorConfig.PreSendTime);
                mDialogPreference.setControlCurveResolution(AppManager.editorConfig.ControlCurveResolution);
                mDialogPreference.setDefaultSingerName(AppManager.editorConfig.DefaultSingerName);
                mDialogPreference.setScrollHorizontalOnWheel(AppManager.editorConfig.ScrollHorizontalOnWheel);
                mDialogPreference.setMaximumFrameRate(AppManager.editorConfig.MaximumFrameRate);
                mDialogPreference.setKeepLyricInputMode(AppManager.editorConfig.KeepLyricInputMode);
                mDialogPreference.setPxTrackHeight(AppManager.editorConfig.PxTrackHeight);
                mDialogPreference.setMouseHoverTime(AppManager.editorConfig.getMouseHoverTime());
                mDialogPreference.setPlayPreviewWhenRightClick(AppManager.editorConfig.PlayPreviewWhenRightClick);
                mDialogPreference.setCurveSelectingQuantized(AppManager.editorConfig.CurveSelectingQuantized);
                mDialogPreference.setCurveVisibleAccent(AppManager.editorConfig.CurveVisibleAccent);
                mDialogPreference.setCurveVisibleBre(AppManager.editorConfig.CurveVisibleBreathiness);
                mDialogPreference.setCurveVisibleBri(AppManager.editorConfig.CurveVisibleBrightness);
                mDialogPreference.setCurveVisibleCle(AppManager.editorConfig.CurveVisibleClearness);
                mDialogPreference.setCurveVisibleDecay(AppManager.editorConfig.CurveVisibleDecay);
                mDialogPreference.setCurveVisibleDyn(AppManager.editorConfig.CurveVisibleDynamics);
                mDialogPreference.setCurveVisibleGen(AppManager.editorConfig.CurveVisibleGendorfactor);
                mDialogPreference.setCurveVisibleOpe(AppManager.editorConfig.CurveVisibleOpening);
                mDialogPreference.setCurveVisiblePit(AppManager.editorConfig.CurveVisiblePit);
                mDialogPreference.setCurveVisiblePbs(AppManager.editorConfig.CurveVisiblePbs);
                mDialogPreference.setCurveVisiblePor(AppManager.editorConfig.CurveVisiblePortamento);
                mDialogPreference.setCurveVisibleVel(AppManager.editorConfig.CurveVisibleVelocity);
                mDialogPreference.setCurveVisibleVibratoDepth(AppManager.editorConfig.CurveVisibleVibratoDepth);
                mDialogPreference.setCurveVisibleVibratoRate(AppManager.editorConfig.CurveVisibleVibratoRate);
                mDialogPreference.setCurveVisibleFx2Depth(AppManager.editorConfig.CurveVisibleFx2Depth);
                mDialogPreference.setCurveVisibleHarmonics(AppManager.editorConfig.CurveVisibleHarmonics);
                mDialogPreference.setCurveVisibleReso1(AppManager.editorConfig.CurveVisibleReso1);
                mDialogPreference.setCurveVisibleReso2(AppManager.editorConfig.CurveVisibleReso2);
                mDialogPreference.setCurveVisibleReso3(AppManager.editorConfig.CurveVisibleReso3);
                mDialogPreference.setCurveVisibleReso4(AppManager.editorConfig.CurveVisibleReso4);
                mDialogPreference.setCurveVisibleEnvelope(AppManager.editorConfig.CurveVisibleEnvelope);
#if ENABLE_MIDI
                mDialogPreference.setMidiInPort(AppManager.editorConfig.MidiInPort.PortNumber);
#endif
#if ENABLE_MTC
                m_preference_dlg.setMtcMidiInPort(AppManager.editorConfig.MidiInPortMtc.PortNumber);
#endif
                Vector <String>  resamplers = new Vector <String>();
                Vector <Boolean> with_wine  = new Vector <Boolean>();
                int size = AppManager.editorConfig.getResamplerCount();
                for (int i = 0; i < size; i++)
                {
                    resamplers.add(AppManager.editorConfig.getResamplerAt(i));
                    with_wine.add(AppManager.editorConfig.isResamplerWithWineAt(i));
                }
                mDialogPreference.setResamplersConfig(resamplers, with_wine);
                mDialogPreference.setPathWavtool(AppManager.editorConfig.PathWavtool);
                mDialogPreference.setWavtoolWithWine(AppManager.editorConfig.WavtoolWithWine);
                mDialogPreference.setUtausingers(AppManager.editorConfig.UtauSingers);
                mDialogPreference.setSelfDeRomantization(AppManager.editorConfig.SelfDeRomanization);
                mDialogPreference.setAutoBackupIntervalMinutes(AppManager.editorConfig.AutoBackupIntervalMinutes);
                mDialogPreference.setUseSpaceKeyAsMiddleButtonModifier(AppManager.editorConfig.UseSpaceKeyAsMiddleButtonModifier);
                mDialogPreference.setPathAquesTone(AppManager.editorConfig.PathAquesTone);
                mDialogPreference.setPathAquesTone2(AppManager.editorConfig.PathAquesTone2);
                mDialogPreference.setUseProjectCache(AppManager.editorConfig.UseProjectCache);
                mDialogPreference.setAquesToneRequired(!AppManager.editorConfig.DoNotUseAquesTone);
                mDialogPreference.setAquesTone2Requried(!AppManager.editorConfig.DoNotUseAquesTone2);
                mDialogPreference.setVocaloid1Required(!AppManager.editorConfig.DoNotUseVocaloid1);
                mDialogPreference.setVocaloid2Required(!AppManager.editorConfig.DoNotUseVocaloid2);
                mDialogPreference.setBufferSize(AppManager.editorConfig.BufferSizeMilliSeconds);
                mDialogPreference.setDefaultSynthesizer(AppManager.editorConfig.DefaultSynthesizer);
                mDialogPreference.setUseUserDefinedAutoVibratoType(AppManager.editorConfig.UseUserDefinedAutoVibratoType);
                mDialogPreference.setWinePrefix(AppManager.editorConfig.WinePrefix);
                mDialogPreference.setWineTop(AppManager.editorConfig.WineTop);
                mDialogPreference.setWineBuiltin(AppManager.editorConfig.WineTopBuiltin);
                mDialogPreference.setEnableWideCharacterWorkaround(AppManager.editorConfig.UseWideCharacterWorkaround);

                String old_wine_prefix = AppManager.editorConfig.WinePrefix;
                String old_wine_top    = AppManager.editorConfig.getWineTop();

                mDialogPreference.Location = location;

                //Show the special voicebank config menu if it's requested
                if (showVBCfg)
                {
                    mDialogPreference.showEasySetupUtauVB();
                }

                DialogResult dr = AppManager.showModalDialog(mDialogPreference, Parent);
                if (dr == DialogResult.OK)
                {
                    String old_base_font_name = AppManager.editorConfig.BaseFontName;
                    float  old_base_font_size = AppManager.editorConfig.BaseFontSize;
                    Font   new_base_font      = mDialogPreference.getBaseFont();
                    if (!old_base_font_name.Equals(new_base_font.getName()) ||
                        old_base_font_size != new_base_font.getSize2D())
                    {
                        AppManager.editorConfig.BaseFontName = mDialogPreference.getBaseFont().getName();
                        AppManager.editorConfig.BaseFontSize = mDialogPreference.getBaseFont().getSize2D();
                        //updateMenuFonts();
                    }

                    AppManager.editorConfig.ScreenFontName = mDialogPreference.getScreenFont().getName();
                    AppManager.editorConfig.WheelOrder     = mDialogPreference.getWheelOrder();
                    AppManager.editorConfig.CursorFixed    = mDialogPreference.isCursorFixed();

                    AppManager.editorConfig.DefaultVibratoLength       = mDialogPreference.getDefaultVibratoLength();
                    AppManager.editorConfig.AutoVibratoThresholdLength = mDialogPreference.getAutoVibratoThresholdLength();
                    AppManager.editorConfig.AutoVibratoType1           = mDialogPreference.getAutoVibratoType1();
                    AppManager.editorConfig.AutoVibratoType2           = mDialogPreference.getAutoVibratoType2();
                    AppManager.editorConfig.AutoVibratoTypeCustom      = mDialogPreference.getAutoVibratoTypeCustom();

                    AppManager.editorConfig.EnableAutoVibrato = mDialogPreference.isEnableAutoVibrato();
                    AppManager.editorConfig.PreSendTime       = mDialogPreference.getPreSendTime();
                    AppManager.editorConfig.Language          = mDialogPreference.getLanguage();
                    if (!Messaging.getLanguage().Equals(AppManager.editorConfig.Language))
                    {
                        Messaging.setLanguage(AppManager.editorConfig.Language);
                        //applyLanguage();
                        mDialogPreference.applyLanguage();
                        //AppManager.mMixerWindow.applyLanguage();
                        //if (mVersionInfo != null && !mVersionInfo.IsDisposed) {
                        //    mVersionInfo.applyLanguage();
                        //}
#if ENABLE_PROPERTY
                        AppManager.propertyWindow.applyLanguage();
                        AppManager.propertyPanel.updateValue(AppManager.getSelected());
#endif
                        //if (mDialogMidiImportAndExport != null) {
                        //    mDialogMidiImportAndExport.applyLanguage();
                        //}
                    }

                    AppManager.editorConfig.ControlCurveResolution  = mDialogPreference.getControlCurveResolution();
                    AppManager.editorConfig.DefaultSingerName       = mDialogPreference.getDefaultSingerName();
                    AppManager.editorConfig.ScrollHorizontalOnWheel = mDialogPreference.isScrollHorizontalOnWheel();
                    AppManager.editorConfig.MaximumFrameRate        = mDialogPreference.getMaximumFrameRate();
                    int fps = 1000 / AppManager.editorConfig.MaximumFrameRate;
                    //timer.Interval = (fps <= 0) ? 1 : fps;
                    //applyShortcut();
                    AppManager.editorConfig.KeepLyricInputMode = mDialogPreference.isKeepLyricInputMode();
                    if (AppManager.editorConfig.PxTrackHeight != mDialogPreference.getPxTrackHeight())
                    {
                        AppManager.editorConfig.PxTrackHeight = mDialogPreference.getPxTrackHeight();
                        //updateDrawObjectList();
                    }
                    AppManager.editorConfig.setMouseHoverTime(mDialogPreference.getMouseHoverTime());
                    AppManager.editorConfig.PlayPreviewWhenRightClick = mDialogPreference.isPlayPreviewWhenRightClick();
                    AppManager.editorConfig.CurveSelectingQuantized   = mDialogPreference.isCurveSelectingQuantized();

                    AppManager.editorConfig.CurveVisibleAccent       = mDialogPreference.isCurveVisibleAccent();
                    AppManager.editorConfig.CurveVisibleBreathiness  = mDialogPreference.isCurveVisibleBre();
                    AppManager.editorConfig.CurveVisibleBrightness   = mDialogPreference.isCurveVisibleBri();
                    AppManager.editorConfig.CurveVisibleClearness    = mDialogPreference.isCurveVisibleCle();
                    AppManager.editorConfig.CurveVisibleDecay        = mDialogPreference.isCurveVisibleDecay();
                    AppManager.editorConfig.CurveVisibleDynamics     = mDialogPreference.isCurveVisibleDyn();
                    AppManager.editorConfig.CurveVisibleGendorfactor = mDialogPreference.isCurveVisibleGen();
                    AppManager.editorConfig.CurveVisibleOpening      = mDialogPreference.isCurveVisibleOpe();
                    AppManager.editorConfig.CurveVisiblePit          = mDialogPreference.isCurveVisiblePit();
                    AppManager.editorConfig.CurveVisiblePbs          = mDialogPreference.isCurveVisiblePbs();
                    AppManager.editorConfig.CurveVisiblePortamento   = mDialogPreference.isCurveVisiblePor();
                    AppManager.editorConfig.CurveVisibleVelocity     = mDialogPreference.isCurveVisibleVel();
                    AppManager.editorConfig.CurveVisibleVibratoDepth = mDialogPreference.isCurveVisibleVibratoDepth();
                    AppManager.editorConfig.CurveVisibleVibratoRate  = mDialogPreference.isCurveVisibleVibratoRate();
                    AppManager.editorConfig.CurveVisibleFx2Depth     = mDialogPreference.isCurveVisibleFx2Depth();
                    AppManager.editorConfig.CurveVisibleHarmonics    = mDialogPreference.isCurveVisibleHarmonics();
                    AppManager.editorConfig.CurveVisibleReso1        = mDialogPreference.isCurveVisibleReso1();
                    AppManager.editorConfig.CurveVisibleReso2        = mDialogPreference.isCurveVisibleReso2();
                    AppManager.editorConfig.CurveVisibleReso3        = mDialogPreference.isCurveVisibleReso3();
                    AppManager.editorConfig.CurveVisibleReso4        = mDialogPreference.isCurveVisibleReso4();
                    AppManager.editorConfig.CurveVisibleEnvelope     = mDialogPreference.isCurveVisibleEnvelope();

#if ENABLE_MIDI
                    AppManager.editorConfig.MidiInPort.PortNumber = mDialogPreference.getMidiInPort();
#endif
#if ENABLE_MTC
                    AppManager.editorConfig.MidiInPortMtc.PortNumber = m_preference_dlg.getMtcMidiInPort();
#endif
#if ENABLE_MIDI || ENABLE_MTC
                    //updateMidiInStatus();
                    //reloadMidiIn();
#endif

                    Vector <String>  new_resamplers = new Vector <String>();
                    Vector <Boolean> new_with_wine  = new Vector <Boolean>();
                    mDialogPreference.copyResamplersConfig(new_resamplers, new_with_wine);
                    AppManager.editorConfig.clearResampler();
                    for (int i = 0; i < new_resamplers.size(); i++)
                    {
                        AppManager.editorConfig.addResampler(new_resamplers.get(i), new_with_wine.get(i));
                    }
                    AppManager.editorConfig.PathWavtool     = mDialogPreference.getPathWavtool();
                    AppManager.editorConfig.WavtoolWithWine = mDialogPreference.isWavtoolWithWine();

                    AppManager.editorConfig.UtauSingers.clear();
                    for (Iterator <SingerConfig> itr = mDialogPreference.getUtausingers().iterator(); itr.hasNext();)
                    {
                        SingerConfig sc = itr.next();
                        AppManager.editorConfig.UtauSingers.add((SingerConfig)sc.clone());
                    }
                    AppManager.reloadUtauVoiceDB();

                    AppManager.editorConfig.SelfDeRomanization                = mDialogPreference.isSelfDeRomantization();
                    AppManager.editorConfig.AutoBackupIntervalMinutes         = mDialogPreference.getAutoBackupIntervalMinutes();
                    AppManager.editorConfig.UseSpaceKeyAsMiddleButtonModifier = mDialogPreference.isUseSpaceKeyAsMiddleButtonModifier();

#if ENABLE_AQUESTONE
                    var old_aquestone_config = Tuple.Create(AppManager.editorConfig.PathAquesTone, AppManager.editorConfig.DoNotUseAquesTone);
                    AppManager.editorConfig.PathAquesTone     = mDialogPreference.getPathAquesTone();
                    AppManager.editorConfig.DoNotUseAquesTone = !mDialogPreference.isAquesToneRequired();
                    if (old_aquestone_config.Item1 != AppManager.editorConfig.PathAquesTone ||
                        old_aquestone_config.Item2 != AppManager.editorConfig.DoNotUseAquesTone)
                    {
                        VSTiDllManager.reloadAquesTone();
                    }

                    var old_aquestone2_config = Tuple.Create(AppManager.editorConfig.PathAquesTone2, AppManager.editorConfig.DoNotUseAquesTone2);
                    AppManager.editorConfig.PathAquesTone2     = mDialogPreference.getPathAquesTone2();
                    AppManager.editorConfig.DoNotUseAquesTone2 = !mDialogPreference.isAquesTone2Required();
                    if (old_aquestone2_config.Item1 != AppManager.editorConfig.PathAquesTone2 ||
                        old_aquestone2_config.Item2 != AppManager.editorConfig.DoNotUseAquesTone2)
                    {
                        VSTiDllManager.reloadAquesTone2();
                    }
#endif
                    //updateRendererMenu();

                    //AppManager.editorConfig.__revoked__WaveFileOutputFromMasterTrack = mDialogPreference.isWaveFileOutputFromMasterTrack();
                    //AppManager.editorConfig.__revoked__WaveFileOutputChannel = mDialogPreference.getWaveFileOutputChannel();
                    if (AppManager.editorConfig.UseProjectCache && !mDialogPreference.isUseProjectCache())
                    {
                        // プロジェクト用キャッシュを使用していたが,使用しないように変更された場合.
                        // プロジェクト用キャッシュが存在するなら,共用のキャッシュに移動する.
                        String file = AppManager.getFileName();
                        if (file != null && !file.Equals(""))
                        {
                            String dir             = PortUtil.getDirectoryName(file);
                            String name            = PortUtil.getFileNameWithoutExtension(file);
                            String projectCacheDir = Path.Combine(dir, name + ".cadencii");
                            String commonCacheDir  = Path.Combine(AppManager.getCadenciiTempDir(), AppManager.getID());
                            if (Directory.Exists(projectCacheDir))
                            {
                                VsqFileEx vsq = AppManager.getVsqFile();
                                for (int i = 1; i < vsq.Track.size(); i++)
                                {
                                    // wavを移動
                                    String wavFrom = Path.Combine(projectCacheDir, i + ".wav");
                                    String wavTo   = Path.Combine(commonCacheDir, i + ".wav");
                                    if (!System.IO.File.Exists(wavFrom))
                                    {
                                        continue;
                                    }
                                    if (System.IO.File.Exists(wavTo))
                                    {
                                        try {
                                            PortUtil.deleteFile(wavTo);
                                        }
                                        catch (Exception ex) {
                                            Logger.write(typeof(FormMain) + ".menuSettingPreference_Click; ex=" + ex + "\n");
                                            serr.println("FormMain#menuSettingPreference_Click; ex=" + ex);
                                            continue;
                                        }
                                    }
                                    try {
                                        PortUtil.moveFile(wavFrom, wavTo);
                                    }
                                    catch (Exception ex) {
                                        Logger.write(typeof(FormMain) + ".menuSettingPreference_Click; ex=" + ex + "\n");
                                        serr.println("FormMain#menuSettingPreference_Click; ex=" + ex);
                                    }

                                    // xmlを移動
                                    String xmlFrom = Path.Combine(projectCacheDir, i + ".xml");
                                    String xmlTo   = Path.Combine(commonCacheDir, i + ".xml");
                                    if (!System.IO.File.Exists(xmlFrom))
                                    {
                                        continue;
                                    }
                                    if (System.IO.File.Exists(xmlTo))
                                    {
                                        try {
                                            PortUtil.deleteFile(xmlTo);
                                        }
                                        catch (Exception ex) {
                                            Logger.write(typeof(FormMain) + ".menuSettingPreference_Click; ex=" + ex + "\n");
                                            serr.println("FormMain#menuSettingPreference_Click; ex=" + ex);
                                            continue;
                                        }
                                    }
                                    try {
                                        PortUtil.moveFile(xmlFrom, xmlTo);
                                    }
                                    catch (Exception ex) {
                                        Logger.write(typeof(FormMain) + ".menuSettingPreference_Click; ex=" + ex + "\n");
                                        serr.println("FormMain#menuSettingPreference_Click; ex=" + ex);
                                    }
                                }

                                // projectCacheDirが空なら,ディレクトリごと削除する
                                String[] files = PortUtil.listFiles(projectCacheDir, "*.*");
                                if (files.Length <= 0)
                                {
                                    try {
                                        PortUtil.deleteDirectory(projectCacheDir);
                                    }
                                    catch (Exception ex) {
                                        Logger.write(typeof(FormMain) + ".menuSettingPreference_Click; ex=" + ex + "\n");
                                        serr.println("FormMain#menuSettingPreference_Click; ex=" + ex);
                                    }
                                }

                                // キャッシュのディレクトリを再指定
                                AppManager.setTempWaveDir(commonCacheDir);
                            }
                        }
                    }
                    AppManager.editorConfig.UseProjectCache               = mDialogPreference.isUseProjectCache();
                    AppManager.editorConfig.DoNotUseVocaloid1             = !mDialogPreference.isVocaloid1Required();
                    AppManager.editorConfig.DoNotUseVocaloid2             = !mDialogPreference.isVocaloid2Required();
                    AppManager.editorConfig.BufferSizeMilliSeconds        = mDialogPreference.getBufferSize();
                    AppManager.editorConfig.DefaultSynthesizer            = mDialogPreference.getDefaultSynthesizer();
                    AppManager.editorConfig.UseUserDefinedAutoVibratoType = mDialogPreference.isUseUserDefinedAutoVibratoType();
                    AppManager.editorConfig.WinePrefix                 = mDialogPreference.getWinePrefix();
                    AppManager.editorConfig.WineTop                    = mDialogPreference.getWineTop();
                    AppManager.editorConfig.WineTopBuiltin             = mDialogPreference.isWineBuiltin();
                    AppManager.editorConfig.UseWideCharacterWorkaround = mDialogPreference.isEnableWideCharacterWorkaround();

                    //trackSelector.prepareSingerMenu(VsqFileEx.getTrackRendererKind(AppManager.getVsqFile().Track.get(AppManager.getSelected())));
                    //trackSelector.updateVisibleCurves();

                    //updateRendererMenu();
                    AppManager.updateAutoBackupTimerStatus();

                    // editorConfig.PxTrackHeightが変更されている可能性があるので,更新が必要
                    //controller.setStartToDrawY(calculateStartToDrawY(vScroll.Value));

                    //if (menuVisualControlTrack.Checked) {
                    //    splitContainer1.setPanel2MinSize(trackSelector.getPreferredMinSize());
                    //}

                    AppManager.saveConfig();
                    //applyLanguage();
#if ENABLE_SCRIPT
                    //updateScriptShortcut();
#endif

                    //updateDrawObjectList();
                    //refreshScreen();
                }
            }
            catch (Exception ex) {
                Logger.write(typeof(FormMain) + ".menuSettingPreference_Click; ex=" + ex + "\n");
                AppManager.debugWriteLine("FormMain#menuSettingPreference_Click; ex=" + ex);
            }
        }
        public void timer_Tick(Object sender, EventArgs e)
        {
            //int num_btn = vstidrv.JoyGetNumButtons( 0 );
            byte[] btn;
            int    pov;

            winmmhelp.JoyGetStatus(0, out btn, out pov);

#if DEBUG
            AppManager.debugWriteLine("FormGameControlerConfig+timer_Tick");
            AppManager.debugWriteLine("    pov=" + pov);
#endif
            bool added = false;
            if (index <= 4)
            {
                if (pov >= 0 && !m_povs.Contains(pov))
                {
                    m_povs[index - 1] = pov;
                    added             = true;
                }
            }
            else
            {
                for (int i = 0; i < btn.Length; i++)
                {
                    if (btn[i] > 0x0 && !m_list.Contains(i))
                    {
                        m_list[index - 5] = i;
                        added             = true;
                        break;
                    }
                }
            }
            if (added)
            {
                if (index <= 8)
                {
                    progressCount.Value = index;
                }
                else if (index <= 12)
                {
                    progressCount.Value = index - 8;
                }
                else
                {
                    progressCount.Value = index - 12;
                }

                if (index == 8)
                {
                    pictButton.Image      = Properties.Resources.btn2;
                    progressCount.Value   = 0;
                    progressCount.Maximum = 4;
                }
                else if (index == 12)
                {
                    pictButton.Image      = Properties.Resources.btn3;
                    progressCount.Value   = 0;
                    progressCount.Maximum = 2;
                }
                if (index == 14)
                {
                    btnSkip.Enabled = false;
                    btnOK.Enabled   = true;
                    timer.Stop();
                }
                index++;
            }
        }