Ejemplo n.º 1
0
        ///<summary>
        ///</summary>
        ///<param name="module"></param>
        public ModulePlayer(SongModule module)
        {
            _uniTrk = new UniTrk();
            _uniTrk.UniInit();
            CurrentModule     = module;
            WaveTableInstance = new WaveTable();
            PlayerInstance    = new SharpModPlayer(_uniTrk);
            MixCfg            = new MixConfig {
                Is16Bits = true, Style = RenderingStyle.Stereo, Rate = 48000
            };
            ChannelsMixer = new ChannelsMixer(MixCfg /* DMode.DMODE_16BITS | DMode.DMODE_STEREO*/);
            //this.ChannelsMixer.MixFreq = 48000;
            ChannelsMixer.ChannelsCount  = module.ChannelsCount;
            ChannelsMixer.OnTickHandler += PlayerInstance.MP_HandleTick;
            ChannelsMixer.OnBPMRequest  += delegate { return(PlayerInstance.mp_bpm); };
            ChannelsMixer.WaveTable      = WaveTableInstance;

            PlayerInstance.MP_Init(CurrentModule);
            PlayerInstance._mixer           = ChannelsMixer;
            PlayerInstance.SpeedConstant    = 1.0f;
            PlayerInstance.mp_volume        = 100;
            PlayerInstance.mp_bpm           = 125;
            PlayerInstance.OnUpdateUI      += PlayerInstance_OnUpdateUI;
            PlayerInstance.OnCurrentModEnd += new CurrentModEndHandler(PlayerInstance_OnCurrentModEnd);

            InitWaveTable();
        }
Ejemplo n.º 2
0
 ///<summary>
 ///</summary>
 ///<param name="buffer"></param>
 ///<param name="count"></param>
 ///<returns></returns>
 public int GetBytes(byte[] buffer, int count)
 {
     if (IsPlaying)
     {
         var c = ChannelsMixer.VC_WriteBytes((sbyte[])(Array)buffer, count);
         CurrentBytesWindow = buffer;
         return(c);
     }
     return(0);
 }
Ejemplo n.º 3
0
 ///
 ///	 <summary> * @since 29.09.2007 </summary>
 ///	 * <param name="sourceDataLine"> </param>
 ///	 * <param name="sampleBufferSize"> </param>
 ///
 public virtual void initializeProcessor(ChannelsMixer mixer)
 {
     this.channels = mixer.MixCfg.Style == SharpMod.Player.RenderingStyle.Mono ? 1 : 2;
     //this.sampleBufferSize =  sourceDataLine.BufferSize;
     //this.sampleBufferSize = mixer.VC_TICKBUF.Length;
     this.sampleBuffer          = new int[this.sampleBufferSize];
     this.currentWritePosition  = 0;
     this.internalFramePosition = 0;
     this.useInternalCounter    = false;
 }
Ejemplo n.º 4
0
        ///<summary>
        /// Start playing the loaded song module
        ///</summary>
        ///<exception cref="SharpModException"></exception>
        public void Start()
        {
            if (SoundRenderer == null)
            {
                throw new SharpModException("No renderer");
            }

            if (!IsPlaying)
            {
                IsPlaying = true;
                ChannelsMixer.VC_PlayStart();
                SoundRenderer.PlayStart();
            }
        }
Ejemplo n.º 5
0
        ///<summary>
        /// Stop the currently playing song module
        ///</summary>
        ///<exception cref="SharpModException"></exception>
        public void Stop()
        {
            if (SoundRenderer == null)
            {
                throw new SharpModException("No renderer");
            }

            if (IsPlaying)
            {
                IsPlaying = false;
                Pause();
                ChannelsMixer.VC_PlayStop();
                SoundRenderer.PlayStop();
            }
        }