public SongReader Transpose(Chord songChord) { if (_songReader.SongChord.IsMajor() != songChord.IsMajor()) { throw new WrongScaleConversionException(songChord.ToString(), _songReader.SongChord.ToString()); } var result = new SongReader(songChord); int difference = (12 - (_songReader.SongChord.GetPositionOnKeyboard() - songChord.GetPositionOnKeyboard())); var newSongIdentities = new List <SongEntity>(); foreach (var identity in _songReader.SongIdentities) { if (identity is Chord) { Chord oldChord = identity as Chord; Chord newChord = MoveChord(_songReader.SongChord, oldChord, difference); newSongIdentities.Add(newChord); } else { newSongIdentities.Add(identity); } } result.SongIdentities = newSongIdentities; return(result); }
public SongReader Transpose(int semiTones, bool bSharp) { Chord newSongChord = MoveChord(_songReader.SongChord, _songReader.SongChord, semiTones); var newSongIdentities = new List <SongEntity>(); foreach (var identity in _songReader.SongIdentities) { if (identity is Chord) { Chord oldChord = identity as Chord; Chord newChord = MoveChord(_songReader.SongChord, oldChord, semiTones); newSongIdentities.Add(newChord); } else { newSongIdentities.Add(identity); } } var result = new SongReader(newSongChord); result.SongIdentities = newSongIdentities; return(result); }
public ChordTransposer(SongReader songReader) { _songReader = songReader; }