Пример #1
0
        public MultiBandCompressor( Backend.Quality quality )
        {
            switch (quality)
             {
             case Backend.Quality.HIGH:
            _crossover =
               new StereoCrossover( 190.0,
                                    2200.0,
                                    StereoCrossover.Quality.HIGH );
            break;

             case Backend.Quality.MEDIUM:
            _crossover =
               new StereoCrossover( 190.0,
                                    2200.0,
                                    StereoCrossover.Quality.MEDIUM );
            break;

             case Backend.Quality.LOW:
            _crossover =
               new StereoCrossover( 190.0,
                                    2200.0,
                                    StereoCrossover.Quality.LOW );
            break;

             default:
            throw new ApplicationException( "Unexpected case in switch" );
             }

             // Default levels:
             compressThresholdBass = 9000;    // 12000
             compressThresholdMid = 5775;     //  7000
             compressThresholdTreble = 3375;  //  4500

             // Allow overshoot in the limiter, as long as we are using
             // soft clipping.
             _limiter.limit = 49150.0;
        }
Пример #2
0
 ///
 /// Call this to create the singleton object
 ///
 public static void Init( int desiredQueueSize,
                        string connectionString,
                        Quality qualityLevel,
                        CompressionType compressType,
                        string metadataProgram )
 {
     _theBackend = new Backend( desiredQueueSize,
                             connectionString,
                             qualityLevel,
                             compressType,
                             metadataProgram );
 }
Пример #3
0
        ///
        /// \warning When creating an object for remoting, call Init() and
        ///   access the singleton returned by theBackend. This constructor
        ///   is public only for use by non-remoting configurations.
        /// 
        public Backend( int desiredQueueSize, 
                      string connectionString,
                      Quality qualityLevel,
                      Backend.CompressionType compressionType,
                      string metadataFileName )
        {
            _Trace( "[Backend]" );

             _qualityLevel = qualityLevel;
             _compressionType = compressionType;
             _desiredQueueSize = desiredQueueSize;
             _connectionString = connectionString;

             if (null == _connectionString)
            throw new ApplicationException( "Engine is not properly initialized by the server" );

             _database = new StatusDatabase( _connectionString );

             _metadataSender = new MetadataSender( metadataFileName );

             // Todo: initialize compressor from stored settings in database
             _compressor = _LoadCompressor();

             // Get defaults from this kind of thing?
             // string bufferSize =
             //    ConfigurationSettings.AppSettings ["BufferSize"];

             // Set up default buffering for the audio engine
             _player = new Player();
             _player.bufferSize = 44100 / 8 ;
             _player.buffersInQueue = 40;
             _player.buffersToPreload = 20;

             // Set up callbacks
             _player.OnTrackFinished +=
            new TrackFinishedHandler( _TrackFinishedCallback );

             _player.OnTrackPlayed +=
            new TrackStartingHandler( _TrackStartingCallback );

             _player.OnReadBuffer +=
            new ReadBufferHandler( _TrackReadCallback );
        }