/* * UstEvent.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; using bocoree.java.io; namespace Boare.Lib.Vsq { #endif #if JAVA public class UstEvent implements Cloneable, Serializable { #else [Serializable] public class UstEvent : ICloneable { #endif public String Tag; public int Length = 0; public String Lyric = ""; public int Note = -1; public int Intensity = -1; public int PBType = -1; public float[] Pitches = null; public float Tempo = -1; public UstVibrato Vibrato = null; public UstPortamento Portamento = null; public int PreUtterance = 0; public int VoiceOverlap = 0; public UstEnvelope Envelope = null; public String Flags = ""; public int Moduration = 100; public int Index; public UstEvent() { } public int getLength() { return Length; } public void setLength( int value ) { Length = value; } public Object clone() { UstEvent ret = new UstEvent(); ret.setLength( Length ); ret.Lyric = Lyric; ret.Note = Note; ret.Intensity = Intensity; ret.PBType = PBType; if ( Pitches != null ) { ret.Pitches = new float[Pitches.Length]; for ( int i = 0; i < Pitches.Length; i++ ) { ret.Pitches[i] = Pitches[i]; } } ret.Tempo = Tempo; if ( Vibrato != null ) { ret.Vibrato = (UstVibrato)Vibrato.clone(); } if ( Portamento != null ) { ret.Portamento = (UstPortamento)Portamento.clone(); } if ( Envelope != null ) { ret.Envelope = (UstEnvelope)Envelope.clone(); } ret.PreUtterance = PreUtterance; ret.VoiceOverlap = VoiceOverlap; ret.Flags = Flags; ret.Moduration = Moduration; ret.Tag = Tag; return ret; } #if !JAVA public object Clone() { return clone(); } #endif public void print( BufferedWriter sw ) #if JAVA throws IOException #endif { if ( this.Index == int.MinValue ) { sw.write( "[#PREV]" ); sw.newLine(); } else if ( this.Index == int.MaxValue ) { sw.write( "[#NEXT]" ); sw.newLine(); } else { sw.write( "[#" + PortUtil.formatDecimal( "0000", Index ) + "]" ); sw.newLine(); } sw.write( "Length=" + Length ); sw.newLine(); sw.write( "Lyric=" + Lyric ); sw.newLine(); sw.write( "NoteNum=" + Note ); sw.newLine(); if ( Intensity >= 0 ) { sw.write( "Intensity=" + Intensity ); sw.newLine(); } if ( PBType >= 0 && Pitches != null ) { sw.write( "PBType=" + PBType ); sw.newLine(); sw.write( "Piches=" ); for ( int i = 0; i < Pitches.Length; i++ ) { if ( i == 0 ) { sw.write( Pitches[i] + "" ); } else { sw.write( "," + Pitches[i] ); } } sw.newLine(); } if ( Tempo > 0 ) { sw.write( "Tempo=" + Tempo ); sw.newLine(); } if ( Vibrato != null ) { sw.write( Vibrato.ToString() ); sw.newLine(); } if ( Portamento != null ) { Portamento.print( sw ); } if ( Envelope != null ) { if ( PreUtterance >= 0 ) { sw.write( "PreUtterance=" + PreUtterance ); sw.newLine(); } if ( VoiceOverlap != 0 ) { sw.write( "VoiceOverlap=" + VoiceOverlap ); sw.newLine(); } sw.write( Envelope.ToString() ); sw.newLine(); } if ( Flags != "" ) { sw.write( "Flags=" + Flags ); sw.newLine(); } if ( Moduration >= 0 ) { sw.write( "Moduration=" + Moduration ); sw.newLine(); } } /*public VsqEvent convertToVsqEvent( int clock, int internal_id ) { VsqEvent ret = new VsqEvent(); ret.Clock = clock; ret.InternalID = internal_id; ret.UstEvent = (UstEvent)this.clone(); ret.ID.setLength( Length ); ByRef phonetic_symbol = new ByRef( "" ); SymbolTable.attatch( Lyric, phonetic_symbol ); ret.ID.LyricHandle = new LyricHandle( Lyric, phonetic_symbol.value ); ret.ID.Note = Note; ret.ID.Dynamics = Intensity; ret.ID.type = VsqIDType.Anote; return ret; }*/ } #if !JAVA } #endif