Exemplo n.º 1
0
        public MIDIPlayer(Context context, MIDIStyle style)
        {
            this.context = context;
            Style        = style;

            MIDISession.GetInstance().Init(context);
            MIDISession.GetInstance().Start();

            Bundle rinfo = new Bundle();

            rinfo.PutString(MIDIConstants.RINFO_ADDR, "192.168.1.118");
            //rinfo.PutString(MIDIConstants.RINFO_ADDR, "192.168.2.229");

            rinfo.PutInt(MIDIConstants.RINFO_PORT, 5008);

            rinfo.PutBoolean(MIDIConstants.RINFO_RECON, true);
            MIDISession.GetInstance().Connect(rinfo);

            currentSongPosition = 0;
            СurrentTempo        = 120;                     // 120BPM
            msOnPulse           = 60000000 / СurrentTempo; // 500 000

            pulsesPerQuarterNote = style.MidiSection.MidiHeaderInfo.Ticks;


            thread = new System.Threading.Thread(new ThreadStart(Run));
            thread.Start();
            isPlaying           = false;
            currentPressedNotes = new List <byte>();
            Subscribe();
        }
Exemplo n.º 2
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.ActivityMain);
            Android.Support.V4.App.FragmentManager fm = SupportFragmentManager;
            playFragment = (PlayFragment)fm.FindFragmentById(Resource.Layout.FragmentPlay);
            if (playFragment == null)
            {
                playFragment = new PlayFragment();
                Android.Support.V4.App.FragmentTransaction ft = fm.BeginTransaction();
                ft.Add(Resource.Id.main_container, playFragment);
                ft.Commit();
            }
            toolbarFragment = (ToolBarFragment)fm.FindFragmentById(Resource.Layout.FragmentToolBar);
            if (toolbarFragment == null)
            {
                toolbarFragment = new ToolBarFragment();
                Android.Support.V4.App.FragmentTransaction ft = fm.BeginTransaction();
                ft.Add(Resource.Id.toolbar_container, toolbarFragment);
                ft.Commit();
            }

            chordRecognizer = new ChordRecognizer();

            MIDIStyle midiStyle = new MIDIStyle();

            midiStyle.LoadStyle("ddd");
            mplayer                       = new MIDIPlayer(/*this,*/ midiStyle);
            mplayer.OnTactEvent          += (object sender, OnTactEventArgs e) => playFragment.SetTempoAndTact(e.CurrentTempo, e.CurrentTact);
            mplayer.OnChordChangeEvent   += () => OnChordChanged();
            mplayer.OnSectionChangeEvent += () => OnSectionChanged();

            mplayer.Tracks = midiStyle.MidiSection.Tracks;
            mplayer.Start();
        }