/// <summary> /// Check CD is in the drive /// </summary> /// <returns></returns> private bool CheckCDDrive() { char[] driveLetters = CDDrive.GetCDDriveLetters(); if (driveLetters.Length < 1) { _log.Error("No CD drives present"); return(false); } Drive = new CDDrive(); if (!Drive.Open(driveLetters[0])) { _log.Error("Unable to access drive with letter: " + driveLetters[0]); return(false); } if (!Drive.IsCDReady()) { _log.Error("Drive with letter '" + driveLetters[0] + "' not ready. Check the drive"); return(false); } // try cycling the lock on the drive Drive.LockCD(); Drive.Refresh(); Drive.UnLockCD(); // if we've got this far, we're okay to continue return(true); }
public AudioCD() { drive = new CDDrive(); char[] Drives = CDDrive.GetCDDriveLetters(); foreach (char drive in Drives) { DriveList.Add(drive.ToString()); } }
public void EncodeDisc(GUIFacadeControl facadeView, int getID) { GetID = getID; if (File.Exists(Config.GetFile(Config.Dir.Base, "lame_enc.dll"))) { // Release the drives first for CDDRIVE to be able to open them BassMusicPlayer.ReleaseCDDrives(); char[] Drives = CDDrive.GetCDDriveLetters(); for (int i = 1; i < facadeView.Count; ++i) { GUIListItem item = facadeView[i]; if ((!item.IsFolder) && (Array.IndexOf(Drives, item.Path[0]) > -1)) { TrackInfo trackInfo = new TrackInfo(); if ((MusicTag)item.MusicTag == null) { MusicTag musicTag = new MusicTag(); musicTag.Artist = "Unknown Artist"; musicTag.Album = "Unknown Album"; musicTag.Track = Convert.ToInt16(item.Label.Substring(5)); musicTag.Title = string.Format("Track {0:00}", musicTag.Track); item.MusicTag = musicTag; } trackInfo.MusicTag = (MusicTag)item.MusicTag; trackInfo.TrackCount = facadeView.Count - 1; trackInfo.Item = item; try { EncodeTrack(trackInfo); } catch {} } } } }
private static void SaveTrack(TrackInfo trackInfo) { string targetFileName = trackInfo.MusicTag.Title; if (m_Drive.Open(trackInfo.Item.Path[0])) { char[] Drives = CDDrive.GetCDDriveLetters(); if ((Array.IndexOf(Drives, trackInfo.Item.Path[0]) > -1) && (m_Drive.IsCDReady()) && (m_Drive.Refresh())) { try { m_Drive.LockCD(); if (dlgProgress.IsCanceled) { m_CancelRipping = true; } if (!m_CancelRipping) { try { try { WaveFormat Format = new WaveFormat(44100, 16, 2); BE_CONFIG mp3Config = new BE_CONFIG(Format); if (mp3VBR) { mp3Config.format.lhv1.bEnableVBR = 1; if (mp3FastMode) { mp3Config.format.lhv1.nVbrMethod = VBRMETHOD.VBR_METHOD_NEW; } else { mp3Config.format.lhv1.nVbrMethod = VBRMETHOD.VBR_METHOD_DEFAULT; } mp3Config.format.lhv1.nVBRQuality = mp3Quality; } else if (mp3CBR) { mp3Config.format.lhv1.bEnableVBR = 0; mp3Config.format.lhv1.nVbrMethod = VBRMETHOD.VBR_METHOD_NONE; mp3Config.format.lhv1.dwBitrate = Convert.ToUInt16(Rates[mp3BitRate]); } else { mp3Config.format.lhv1.bEnableVBR = 1; mp3Config.format.lhv1.nVbrMethod = VBRMETHOD.VBR_METHOD_ABR; uint ConToKbwVbrAbr_bps = Convert.ToUInt16(Rates[mp3BitRate]); mp3Config.format.lhv1.dwVbrAbr_bps = ConToKbwVbrAbr_bps * 1000; } if (mp3MONO) { mp3Config.format.lhv1.nMode = MpegMode.MONO; } mp3Config.format.lhv1.bWriteVBRHeader = 1; Stream WaveFile = new FileStream(trackInfo.TempFileName, FileMode.Create, FileAccess.Write); m_Writer = new Mp3Writer(WaveFile, Format, mp3Config); if (!m_CancelRipping) { try { Log.Info("CDIMP: Processing track {0}", trackInfo.MusicTag.Track); DateTime InitTime = DateTime.Now; if ( m_Drive.ReadTrack(trackInfo.MusicTag.Track, new CdDataReadEventHandler(WriteWaveData), new CdReadProgressEventHandler(CdReadProgress)) > 0) { if (dlgProgress.IsCanceled) { m_CancelRipping = true; } if (!m_CancelRipping) { TimeSpan Duration = DateTime.Now - InitTime; double Speed = m_Drive.TrackSize(trackInfo.MusicTag.Track) / Duration.TotalSeconds / Format.nAvgBytesPerSec; Log.Info("CDIMP: Done reading track {0} at {1:0.00}x speed", trackInfo.MusicTag.Track, Speed); } } else { Log.Info("CDIMP: Error reading track {0}", trackInfo.MusicTag.Track); m_Writer.Close(); WaveFile.Close(); if (File.Exists(trackInfo.TempFileName)) { try { File.Delete(trackInfo.TempFileName); } catch {} } //progressBar1.Value = 0; } } finally { m_Writer.Close(); m_Writer = null; WaveFile.Close(); Lame_encDll.beWriteVBRHeader(trackInfo.TempFileName); } } } finally {} } finally { m_Drive.Close(); } } } finally { //progressBar1.Value = 0; } } if (dlgProgress.IsCanceled) { m_CancelRipping = true; } if (m_CancelRipping) { if (File.Exists(trackInfo.TempFileName)) { File.Delete(trackInfo.TempFileName); } m_Drive.Close(); } } }