Esempio n. 1
0
 public void TrackBtn_OnClicked(Nez.UI.Button btn)
 {
     //
     // Track number button (on bottom of slider)
     //
     if (TrackChanl[btn.Tag] < 0)
     {
         ChnlMsg.SetText("Channel:  ");
     }
     else
     {
         ChnlMsg.SetText("Channel: " + TrackChanl[btn.Tag].ToString("00"));
     }
     //
     // Give channel number/instrument name
     //
     TrackMsg.SetText("Track: " + btn.Tag.ToString("00"));
     InstrumentMsg.SetText("Description: " + TrackInstrument[btn.Tag]);
 }
Esempio n. 2
0
        private void SetTrackButtonOn()
        {
            int x = 0;          //index of the control

            Vector2 StartPos = new Vector2(20, 250 + (80 * x));

            ChnlMsg.SetText("All Tracks");
            //InstrumentMsg.SetText("All Instruments");
            int    trknum  = 0;
            string trkname = "";
            GeneralMidiInstrument gmi;

            foreach (Track trk in sequence1.tracks)
            {
                float PosX = 14f;
                float PosY = 0;

                trkname = trk.Name;
                if (trk.Name == "" || trk.Name is null)
                {
                    trkname = "Track " + trknum.ToString();
                }
                if (trk.ProgramChange != 0)
                {
                    gmi = (GeneralMidiInstrument)trk.ProgramChange;
                    TrackInstrument[trknum] = gmi.ToString();
                    TrackChanl[trknum]      = trk.MidiChannel;
                }
                else
                {
                    TrackInstrument[trknum] = "n/a";
                }

                switch (trknum)
                {
                case 0:
                    TracksInMidi[trknum] = true;
                    x = 0;
                    break;

                case 1:
                    TracksInMidi[trknum] = true;
                    x = 1;
                    break;

                case 2:
                    TracksInMidi[trknum] = true;
                    x = 2;
                    break;

                case 3:
                    TracksInMidi[trknum] = true;
                    x = 3;
                    break;

                case 4:
                    TracksInMidi[trknum] = true;
                    x = 4;
                    break;

                case 5:
                    TracksInMidi[trknum] = true;
                    x = 5;
                    break;

                case 6:
                    TracksInMidi[trknum] = true;
                    x = 6;
                    break;

                case 7:
                    TracksInMidi[trknum] = true;
                    x = 7;
                    break;

                case 8:
                    TracksInMidi[trknum] = true;
                    x    = 0;
                    PosX = 794;
                    break;

                case 9:
                    TracksInMidi[trknum] = true;
                    x    = 1;
                    PosX = 794;
                    break;

                case 10:
                    TracksInMidi[trknum] = true;
                    x    = 2;
                    PosX = 794;
                    break;

                case 11:
                    TracksInMidi[trknum] = true;
                    x    = 3;
                    PosX = 794;
                    break;

                case 12:
                    TracksInMidi[trknum] = true;
                    x    = 4;
                    PosX = 794;
                    break;

                case 13:
                    TracksInMidi[trknum] = true;
                    x    = 5;
                    PosX = 794;
                    break;

                case 14:
                    TracksInMidi[trknum] = true;
                    x    = 6;
                    PosX = 794;
                    break;

                case 15:
                    TracksInMidi[trknum] = true;
                    x    = 7;
                    PosX = 794;
                    break;
                }

                PosY = (200 + (80 * x));

                trknum += 1;
            }
        }
Esempio n. 3
0
 private void PBtn_OnClicked(Nez.UI.Button btn)
 {
     AllChannels = -1;
     ChnlMsg.SetText("All Channels");
 }
Esempio n. 4
0
        public override void Initialize()
        {
            base.Initialize();
            font = new NezSpriteFont(Content.Load <SpriteFont>("Arial"));
            //
            // MIDI sequencer must have processes
            //
            sequencer1                            = new Sanford.Multimedia.Midi.Sequencer();
            sequencer1.clock.Tick                += onTick;
            this.sequencer1.PlayingCompleted     += new System.EventHandler(this.HandlePlayingCompleted);
            this.sequencer1.ChannelMessagePlayed += new System.EventHandler <Sanford.Multimedia.Midi.ChannelMessageEventArgs>(this.HandleChannelMessagePlayed);
            this.sequencer1.SysExMessagePlayed   += new System.EventHandler <Sanford.Multimedia.Midi.SysExMessageEventArgs>(this.HandleSysExMessagePlayed);
            this.sequencer1.Chased               += new System.EventHandler <Sanford.Multimedia.Midi.ChasedEventArgs>(this.HandleChased);
            this.sequencer1.Stopped              += new System.EventHandler <Sanford.Multimedia.Midi.StoppedEventArgs>(this.HandleStopped);
            //
            // Default output device (usually 0)
            //
            outDevice = new OutputDevice(outDeviceID);

            //DialogBar db = new DialogBar(-1);

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // mouse entity (used for tracking of clicks)
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            MouseCursor = CreateEntity("mouse");
            MouseCursor.AddComponent(new BoxCollider());
            MouseCursor.AddComponent(new MouseComponent());

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // keyboard entity (playing piano manually)
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            MouseCursor = CreateEntity("keyboard");
            MouseCursor.AddComponent(new KeyComponent());

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Text entity with component (Game name label)
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            TextEntity = CreateEntity("txt");
            TextEntity.Transform.Position = new Vector2(10, 20);
            TextEntity.Transform.Scale    = new Vector2(1, 1);
            txt = new TextComponent(Graphics.Instance.BitmapFont, "MIDI Player", new Vector2(0, 0), Color.White);
            txt.SetFont(font);
            TextEntity.AddComponent(txt);

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Background, with high value render layer
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            Background     = CreateEntity("background", new Vector2(0, 0));
            Background.Tag = 90;
            //SpriteRenderer comp = new SpriteRenderer(Content.Load<Texture2D>("Background")).SetRenderLayer(99);

            Background.AddComponent(new SpriteRenderer(Content.Load <Texture2D>("Slider/BackgroundMetal")).SetRenderLayer(99));
            Background.GetComponent <SpriteRenderer>().SetOrigin(new Vector2(0, 0));
            Background.SetPosition(new Vector2(310, 15));
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Canvas
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            //
            int    StartX = 10;
            Entity uiCan  = CreateEntity("ui");

            canvas = uiCan.AddComponent(new UICanvas());

            canvas.IsFullScreen = true;
            canvas.RenderLayer  = -10;//= SCREEN_SPACE_RENDER_LAYER;
            //
            // Display for track number
            //
            TrackMsg = canvas.Stage.AddElement(new Nez.UI.Label("All Tracks"));
            TrackMsg.SetPosition(320, 310);
            TrackMsg.SetSize(100f, 50f);
            //
            // Display for channel number
            //
            ChnlMsg = canvas.Stage.AddElement(new Nez.UI.Label("All Channels"));
            ChnlMsg.SetPosition(320, 330);
            ChnlMsg.SetSize(100f, 50f);
            AllChannels = -1;
            //
            // Display for instrument name
            //
            InstrumentMsg = canvas.Stage.AddElement(new Nez.UI.Label("All Channels"));
            InstrumentMsg.SetPosition(320, 350);
            InstrumentMsg.SetSize(100f, 50f);
            //
            // Dispaly for note number being played
            //
            NoteMsg = canvas.Stage.AddElement(new Nez.UI.Label("Piano note played"));
            NoteMsg.SetPosition(320, 370);
            NoteMsg.SetSize(100f, 50f);

            //
            // Track buttons and channels
            //
            for (int i = 0; i < 16; i++)
            {
                TrackChanl[i]      = -1;
                TracksInMidi[i]    = false;             //is track number active in MIDI file
                TracksPlaying[i]   = false;             //individual tracks playing (buttons)
                ChannelsPlaying[i] = true;              //they all are playing
            }

            //
            // turn off all buttons
            //
            //SetTrackButtonOff();
            //
            // Progress bar
            //
            PgBar = canvas.Stage.AddElement(new Nez.UI.ProgressBar(0, 1000, 1, false, Nez.UI.ProgressBarStyle.Create(Color.Green, Color.White)));
            PgBar.SetPosition(10, StartPos);
            //
            // Play button
            //
            PlayImageUp = new SpriteDrawable((Content.Load <Texture2D>("Player/play_blk")));
            PlayImageDn = new SpriteDrawable((Content.Load <Texture2D>("Player/play_grn")));
            PlayBtn     = canvas.Stage.AddElement(new ImageButton(PlayImageUp, PlayImageDn));
            PlayBtn.SetPosition(StartX, StartPos + 30);
            PlayBtn.OnClicked += Play;

            //
            // Stop button
            //
            StopImageUp = new SpriteDrawable((Content.Load <Texture2D>("Player/stop_blk")));
            StopImageDn = new SpriteDrawable((Content.Load <Texture2D>("Player/stop_grn")));
            StopBtn     = canvas.Stage.AddElement(new ImageButton(StopImageUp, StopImageDn));
            StopBtn.SetPosition(StartX + 71, StartPos + 30);
            StopBtn.OnClicked += Stop;

            //
            // Load/Eject button (stop playing, look for another MIDI file)
            //
            LoadImageUp = new SpriteDrawable((Content.Load <Texture2D>("Player/eject_blk")));
            LoadImageDn = new SpriteDrawable((Content.Load <Texture2D>("Player/eject_grn")));
            LoadBtn     = canvas.Stage.AddElement(new ImageButton(LoadImageUp, LoadImageDn));
            LoadBtn.SetPosition(StartX + 110, StartPos + 30);
            LoadBtn.OnClicked += Load;
            //
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Systems to process our requests
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            //
            this.AddEntityProcessor(new MouseClickSystem(new Matcher().All(typeof(MouseComponent))));
            this.AddEntityProcessor(new KeyClickSystem(new Matcher().All(typeof(KeyComponent))));
            this.AddEntityProcessor(new PianoClickSystem(new Matcher().All(typeof(NoteComponent), typeof(PlayingComponent))));
            //
            // Start by loading a file
            //
            if (!LoadMidiFile())
            {
                return;
            }
            //
            // Create the Mixer image with buttons, sliders, etc
            //
            var Track = new TrackMixerEntity(this, new Vector2(310, 20), canvas, TracksInMidi);
            //
            // Create the piano keys on bottom of mixer
            //
            var pi00 = new PianoEntity(this, new Vector2(StartX + 245, StartPos + 420), 0);

            //
            // Octave 4 is the middle C (note 60), color the keys
            //
            HandleOctaveColor(60);
        }