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(); }
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(); }