cadencii.VsqxReaderTest.readFromVsqx C# (CSharp) Method

readFromVsqx() private method

private readFromVsqx ( ) : void
return void
        public void readFromVsqx()
        {
            VsqFile vsq = VsqxReader.readFromVsqx( "./fixture/track1.vsqx" );

            // トラック数
            Assert.AreEqual( 2, vsq.Track.size() );

            // プリメジャー
            Assert.AreEqual( 4, vsq.getPreMeasure() );

            // イベント数
            // 最初のmusicalPartには歌手変更1個と音符2個
            // 2つ目のmusicalPartには歌手変更1個と音符1個が入っているはず
            VsqTrack track = vsq.Track.get( 1 );
            Assert.AreEqual( 6, track.getEventCount() );

            // 歌手変更が正しく読み込まれているか
            // 1個目はデフォルトの歌手変更なのでスルー
            var singerChange = track.getEvent( 1 );
            Assert.AreEqual( 7680, singerChange.Clock );
            Assert.Null( singerChange.ID.IconDynamicsHandle );
            Assert.Null( singerChange.ID.LyricHandle );
            Assert.Null( singerChange.ID.NoteHeadHandle );
            Assert.Null( singerChange.ID.VibratoHandle );
            Assert.AreEqual( "VY1V3", singerChange.ID.IconHandle.IDS );
            Assert.AreEqual( "$07010000", singerChange.ID.IconHandle.IconID );
            Assert.AreEqual( 0, singerChange.ID.IconHandle.Language );
            Assert.AreEqual( 0, singerChange.ID.IconHandle.Program );
            
            // 1つめの音符イベントが正しく読み込まれているか
            var firstEvent = track.getEvent( 2 );
            Assert.AreEqual( 7680 + 0, firstEvent.Clock );
            Assert.AreEqual( 48, firstEvent.ID.Note );
            Assert.AreEqual( 480, firstEvent.ID.getLength() );

            Assert.AreEqual( 62, firstEvent.ID.Dynamics );
            Assert.AreEqual( 50, firstEvent.ID.DEMaccent );
            Assert.AreEqual( 8, firstEvent.ID.PMBendDepth );
            Assert.AreEqual( 0, firstEvent.ID.PMBendLength );
            Assert.AreEqual( 50, firstEvent.ID.DEMdecGainRate );
            Assert.AreEqual( false, firstEvent.ID.isFallPortamento() );
            Assert.AreEqual( false, firstEvent.ID.isRisePortamento() );
            
            Assert.Null( firstEvent.ID.IconDynamicsHandle );

            Assert.AreEqual( "わ", firstEvent.ID.LyricHandle.L0.Phrase );
            Assert.AreEqual( "w a", firstEvent.ID.LyricHandle.L0.getPhoneticSymbol() );
            Assert.AreEqual( true, firstEvent.ID.LyricHandle.L0.PhoneticSymbolProtected );
            Assert.Null( firstEvent.ID.NoteHeadHandle );

            Assert.AreEqual( "$04040000", firstEvent.ID.VibratoHandle.IconID );
            Assert.AreEqual( 316, firstEvent.ID.VibratoHandle.getLength() );
            var depthBP = firstEvent.ID.VibratoHandle.getDepthBP();
            Assert.AreEqual( 1, depthBP.getCount() );
            Assert.AreEqual( 0.0f, depthBP.getElement( 0 ).X );
            Assert.AreEqual( 64, depthBP.getElement( 0 ).Y );
            var rateBP = firstEvent.ID.VibratoHandle.getRateBP();
            Assert.AreEqual( 1, rateBP.getCount() );
            Assert.AreEqual( 0.0f, rateBP.getElement( 0 ).X );
            Assert.AreEqual( 50, rateBP.getElement( 0 ).Y );
            Assert.AreEqual( 164, firstEvent.ID.VibratoDelay );

            Assert.Null( firstEvent.ID.IconHandle );

            // 2つめの音符イベントが正しく読み込まれているか
            var secondEvent = track.getEvent( 3 );
            Assert.AreEqual( 7680 + 480, secondEvent.Clock );
            Assert.AreEqual( 50, secondEvent.ID.Note );
            Assert.AreEqual( 960, secondEvent.ID.getLength() );
            Assert.AreEqual( 63, secondEvent.ID.Dynamics );
            Assert.AreEqual( 50, secondEvent.ID.DEMaccent );
            Assert.AreEqual( 8, secondEvent.ID.PMBendDepth );
            Assert.AreEqual( 0, secondEvent.ID.PMBendLength );
            Assert.AreEqual( 50, secondEvent.ID.DEMdecGainRate );
            Assert.AreEqual( true, secondEvent.ID.isFallPortamento() );
            Assert.AreEqual( false, secondEvent.ID.isRisePortamento() );
            
            Assert.Null( secondEvent.ID.IconDynamicsHandle );
            Assert.AreEqual( "は", secondEvent.ID.LyricHandle.L0.Phrase );
            Assert.AreEqual( "h a", secondEvent.ID.LyricHandle.L0.getPhoneticSymbol() );
            Assert.AreEqual( false, secondEvent.ID.LyricHandle.L0.PhoneticSymbolProtected );
            Assert.Null( secondEvent.ID.NoteHeadHandle );

            Assert.AreEqual( "$04040004", secondEvent.ID.VibratoHandle.IconID );
            Assert.AreEqual( 624, secondEvent.ID.VibratoHandle.getLength() );
            depthBP = secondEvent.ID.VibratoHandle.getDepthBP();
            Assert.AreEqual( 1, depthBP.getCount() );
            Assert.AreEqual( 0.0f, depthBP.getElement( 0 ).X );
            Assert.AreEqual( 64, depthBP.getElement( 0 ).Y );
            rateBP = secondEvent.ID.VibratoHandle.getRateBP();
            Assert.AreEqual( 1, secondEvent.ID.VibratoHandle.getRateBP().getCount() );
            Assert.AreEqual( 0.0f, rateBP.getElement( 0 ).X );
            Assert.AreEqual( 64, rateBP.getElement( 0 ).Y );
            Assert.AreEqual( 336, secondEvent.ID.VibratoDelay );

            Assert.Null( secondEvent.ID.IconHandle );

            // 2つ目の歌手変更
            var singerChange2 = track.getEvent( 4 );
            Assert.AreEqual( 10560, singerChange2.Clock );
            Assert.Null( singerChange2.ID.IconDynamicsHandle );
            Assert.Null( singerChange2.ID.LyricHandle );
            Assert.Null( singerChange2.ID.NoteHeadHandle );
            Assert.Null( singerChange2.ID.VibratoHandle );
            Assert.AreEqual( "Miku(V2)", singerChange2.ID.IconHandle.IDS );
            Assert.AreEqual( "$07010001", singerChange2.ID.IconHandle.IconID );
            Assert.AreEqual( 0, singerChange2.ID.IconHandle.Language );
            Assert.AreEqual( 1, singerChange2.ID.IconHandle.Program );

            // 3つめの音符イベントが正しく読み込まれているか
            var thirdEvent = track.getEvent( 5 );
            Assert.AreEqual( 10560 + 665, thirdEvent.Clock );
            Assert.AreEqual( 60, thirdEvent.ID.Note );
            Assert.AreEqual( 480, thirdEvent.ID.getLength() );
            Assert.AreEqual( 64, thirdEvent.ID.Dynamics );
            Assert.AreEqual( 50, thirdEvent.ID.DEMaccent );
            Assert.AreEqual( 8, thirdEvent.ID.PMBendDepth );
            Assert.AreEqual( 0, thirdEvent.ID.PMBendLength );
            Assert.AreEqual( 50, thirdEvent.ID.DEMdecGainRate );
            Assert.AreEqual( false, thirdEvent.ID.isFallPortamento() );
            Assert.AreEqual( false, thirdEvent.ID.isRisePortamento() );

            Assert.Null( thirdEvent.ID.IconDynamicsHandle );
            Assert.AreEqual( "a", thirdEvent.ID.LyricHandle.L0.Phrase );
            Assert.AreEqual( "a", thirdEvent.ID.LyricHandle.L0.getPhoneticSymbol() );
            Assert.AreEqual( false, thirdEvent.ID.LyricHandle.L0.PhoneticSymbolProtected );
            Assert.Null( thirdEvent.ID.NoteHeadHandle );

            Assert.AreEqual( "$04040000", thirdEvent.ID.VibratoHandle.IconID );
            Assert.AreEqual( 316, thirdEvent.ID.VibratoHandle.getLength() );
            depthBP = thirdEvent.ID.VibratoHandle.getDepthBP();
            Assert.AreEqual( 1, depthBP.getCount() );
            Assert.AreEqual( 0.0f, depthBP.getElement( 0 ).X );
            Assert.AreEqual( 64, depthBP.getElement( 0 ).Y );
            rateBP = thirdEvent.ID.VibratoHandle.getRateBP();
            Assert.AreEqual( 1, thirdEvent.ID.VibratoHandle.getRateBP().getCount() );
            Assert.AreEqual( 0.0f, rateBP.getElement( 0 ).X );
            Assert.AreEqual( 50, rateBP.getElement( 0 ).Y );
            Assert.AreEqual( 164, thirdEvent.ID.VibratoDelay );

            Assert.Null( thirdEvent.ID.IconHandle );

            // トラック名
            Assert.AreEqual( "Track", track.getName() );

            // テンポ変更
            Assert.AreEqual( 2, vsq.TempoTable.size() );
            Assert.AreEqual( 0, vsq.TempoTable.get( 0 ).Clock );
            Assert.AreEqual( 500000, vsq.TempoTable.get( 0 ).Tempo );
            Assert.AreEqual( 8640, vsq.TempoTable.get( 1 ).Clock );
            Assert.AreEqual( 1199760, vsq.TempoTable.get( 1 ).Tempo );

            // 拍子変更
            Assert.AreEqual( 2, vsq.TimesigTable.size() );
            Assert.AreEqual( 0, vsq.TimesigTable.get( 0 ).Clock );
            Assert.AreEqual( 4, vsq.TimesigTable.get( 0 ).Numerator );
            Assert.AreEqual( 4, vsq.TimesigTable.get( 0 ).Denominator );
            Assert.AreEqual( 9600, vsq.TimesigTable.get( 1 ).Clock );
            Assert.AreEqual( 3, vsq.TimesigTable.get( 1 ).Numerator );
            Assert.AreEqual( 4, vsq.TimesigTable.get( 1 ).Denominator );

            // コントロールカーブ
            // DYN
            var dyn = track.getCurve( "DYN" );
            Assert.AreEqual( 1, dyn.size() );
            Assert.AreEqual( 720, dyn.getKeyClock( 0 ) );
            Assert.AreEqual( 96, dyn.getElement( 0 ) );

            // BRE
            var bre = track.getCurve( "BRE" );
            Assert.AreEqual( 1, bre.size() );
            Assert.AreEqual( 720, bre.getKeyClock( 0 ) );
            Assert.AreEqual( 102, bre.getElement( 0 ) );

            // BRI

            // CLE

            // OPE
            var ope = track.getCurve( "OPE" );
            Assert.AreEqual( 3, ope.size() );
            Assert.AreEqual( 7680 + 0, ope.getKeyClock( 0 ) );
            Assert.AreEqual( 127, ope.getElement( 0 ) );
            Assert.AreEqual( 7680 + 480, ope.getKeyClock( 1 ) );
            Assert.AreEqual( 127, ope.getElement( 1 ) );
            Assert.AreEqual( 10560 + 665, ope.getKeyClock( 2 ) );
            Assert.AreEqual( 127, ope.getElement( 2 ) );

            // GEN

            // POR

            // PIT

            // PBS

            // Mixerが正しく読み込まれているか
            Assert.AreEqual( 2, vsq.Mixer.MasterFeder );

            Assert.AreEqual( 1, vsq.Mixer.Slave.size() );
            Assert.AreEqual( 1, vsq.Mixer.Slave.get( 0 ).Solo );
            Assert.AreEqual( 0, vsq.Mixer.Slave.get( 0 ).Mute );
            Assert.AreEqual( 64, vsq.Mixer.Slave.get( 0 ).Panpot );
            Assert.AreEqual( 1, vsq.Mixer.Slave.get( 0 ).Feder );
        }
    }