/* * UstVibrato.cs * Copyright (c) 2009 kbinani * * This file is part of Boare.Lib.Vsq. * * Boare.Lib.Vsq is free software; you can redistribute it and/or * modify it under the terms of the BSD License. * * Boare.Lib.Vsq is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #if JAVA package org.kbinani.vsq; import java.io.*; import org.kbinani.*; #else using System; using bocoree; namespace Boare.Lib.Vsq { #endif #if JAVA public class UstVibrato implements Cloneable, Serializable { #else [Serializable] public class UstVibrato : ICloneable { #endif /// /// 音符の長さに対する、パーセントで表したビブラートの長さ。 /// public float Length; /// /// ミリセカンドで表したビブラートによるピッチ振動の周期 /// public float Period; /// /// Centで表した、ビブラートによるピッチ振動の振幅。Peak to Peakは2*Depthとなる。 /// public float Depth; /// /// ビブラート長さに対する、パーセントで表したピッチ振動のフェードインの長さ。 /// public float In; /// /// ビブラートの長さに対するパーセントで表したピッチ振動のフェードアウトの長さ。 /// public float Out; /// /// ピッチ振動開始時の位相。2PIに対するパーセントで表す。 /// public float Phase; /// /// ピッチ振動の中心値と、音符の本来の音の高さからのずれ。Depthに対するパーセントで表す。 /// public float Shift; public float Unknown = 100; public UstVibrato( String line ) { if ( line.ToLower().StartsWith( "vbr=" ) ) { String[] spl = PortUtil.splitString( line, '=' ); spl = PortUtil.splitString( spl[1], ',' ); //VBR=65,180,70,20.0,17.6,82.8,49.8,100 if ( spl.Length >= 8 ) { Length = PortUtil.parseFloat( spl[0] ); Period = PortUtil.parseFloat( spl[1] ); Depth = PortUtil.parseFloat( spl[2] ); In = PortUtil.parseFloat( spl[3] ); Out = PortUtil.parseFloat( spl[4] ); Phase = PortUtil.parseFloat( spl[5] ); Shift = PortUtil.parseFloat( spl[6] ); Unknown = PortUtil.parseFloat( spl[7] ); } } } public UstVibrato() { } public float getLength() { return Length; } public void setLength( float value ) { Length = value; } #if !JAVA public override string ToString() { return toString(); } #endif public String toString() { return "VBR=" + Length + "," + Period + "," + Depth + "," + In + "," + Out + "," + Phase + "," + Shift + "," + Unknown; } public Object clone() { UstVibrato ret = new UstVibrato(); ret.setLength( Length ); ret.Period = Period; ret.Depth = Depth; ret.In = In; ret.Out = Out; ret.Phase = Phase; ret.Shift = Shift; ret.Unknown = Unknown; return ret; } #if !JAVA public object Clone() { return clone(); } #endif } #if !JAVA } #endif