File: ImportOtoIniConfig.cs

package info (click to toggle)
cadencii 3.3.9%2Bsvn20110818.r1732-5
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 35,880 kB
  • sloc: cs: 160,836; java: 42,449; cpp: 7,605; ansic: 1,728; perl: 1,087; makefile: 236; php: 142; xml: 117; sh: 21
file content (62 lines) | stat: -rw-r--r-- 2,464 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using org.kbinani.cadencii;
using org.kbinani.vsq;
using org.kbinani.java.util;
using org.kbinani.apputil;

public class ImportOtoIniConfig
{

    /// <summary>
    /// スクリプトの本体
    /// </summary>
    /// <param name="vsq"></param>
    /// <returns></returns>
    public static ScriptReturnStatus Edit( VsqFileEx vsq )
    {
        int selected = AppManager.getSelected();
        VsqTrack vsq_track = vsq.Track.get( selected );
        RendererKind kind = VsqFileEx.getTrackRendererKind( vsq_track );
        if ( kind != RendererKind.UTAU ) {
            return ScriptReturnStatus.NOT_EDITED;
        }
        bool edited = false;
        for ( Iterator<SelectedEventEntry> itr = AppManager.itemSelection.getEventIterator(); itr.hasNext(); ) {
            SelectedEventEntry item = itr.next();
            VsqEvent original = item.original;
            if ( original.ID.type != VsqIDType.Anote ) {
                continue;
            }
            VsqEvent singer = vsq_track.getSingerEventAt( original.Clock );
            SingerConfig sc = AppManager.getSingerInfoUtau( singer.ID.IconHandle.Language, singer.ID.IconHandle.Program );
            if ( sc != null && AppManager.mUtauVoiceDB.containsKey( sc.VOICEIDSTR ) ) {
                string phrase = original.ID.LyricHandle.L0.Phrase;
                UtauVoiceDB db = AppManager.mUtauVoiceDB.get( sc.VOICEIDSTR );
                OtoArgs oa = db.attachFileNameFromLyric( phrase );
                VsqEvent editing = vsq_track.findEventFromID( original.InternalID );
                if ( editing.UstEvent == null ) {
                    editing.UstEvent = new UstEvent();
                }
                editing.UstEvent.setVoiceOverlap( oa.msOverlap );
                editing.UstEvent.setPreUtterance( oa.msPreUtterance );
                edited = true;
            }
        }

        return edited ? ScriptReturnStatus.EDITED : ScriptReturnStatus.NOT_EDITED;
    }

    /// <summary>
    /// メニューに表示されるプラグイン名を取得します
    /// </summary>
    /// <returns></returns>
    public static string GetDisplayName()
    {
        string lang = Messaging.getLanguage();
        if ( lang == "ja" ) {
            return "先行発音とオーバーラップをoto.iniからコピー";
        } else {
            return "Copy pre-utterance & overlap from oto.ini";
        }
    }
    
}