Exemple #1
0
        //cons
        public SignalsWindow()
        {
            InitializeComponent();
            //waverly = new Waverly(this);
            currentProject = null;

            //control panel
            controlPanel          = new ControlPanel(this);
            controlPanel.Location = new Point(0, SignalsMenu.Height);
            controlPanel.Width    = this.ClientSize.Width;
            this.Controls.Add(controlPanel);

            //track panel
            trackPanel          = new TrackPanel(this);
            trackPanel.Location = new Point(0, controlPanel.Bottom);
            trackPanel.Size     = new Size(this.ClientSize.Width, SignalsStatus.Top - controlPanel.Bottom);
            this.Controls.Add(trackPanel);

            //mixer window
            mixerWindow              = new MixerWindow(this);
            mixerWindow.FormClosing += new FormClosingEventHandler(MixerWindow_FormClosing);
            shuttingdown             = false;

            isPaused  = false;
            playSpeed = 0;
        }
Exemple #2
0
        private void deleteTrack(object sender, RoutedEventArgs e)
        {
            Button     o  = (Button)sender;
            TrackPanel p  = (TrackPanel)o.Parent;
            StackPanel pp = (StackPanel)p.Parent;

            pp.Children.Remove(p);
        }
Exemple #3
0
        public int playPos;         //cur playing pos in pixels from left end of ruler

        public TrackRuler(TrackPanel _trackPanel)
        {
            trackPanel = _trackPanel;

            InitializeComponent();
            this.Height    = 20;
            this.BackColor = Color.Snow;
            zoomFactor     = TrackPanel.ZOOMFACTOR;
            zeroPos        = TrackView.TRACKHEADERWIDTH + 1;
            startPos       = 0;
            playPos        = 0;
        }
Exemple #4
0
        private void play_step(object sender, EventArgs e)
        {
            int columns = Convert.ToInt32(numColumns.Text);

            if (++step >= columns)
            {
                step = 0;
            }

            //display current step on leds
            string leds = Convert.ToString((1 << step % 8), 2);

            SendPacket(leds.PadLeft(8, '0'));

            int numTracks = trackViewer.Children.Count;

            //get cell at step for each track panel
            for (int i = 0; i < numTracks; i++)
            {
                TrackPanel _track = (TrackPanel)trackViewer.Children[i];
                TextBox    t      = (TextBox)(_track.Children)[step + 4];
                int        octave = 0;
                string     note   = t.Text;
                if (note == "0")
                {
                    if (debug == true)
                    {
                        Console.WriteLine("empty cell, skipping");
                    }
                }
                else
                {
                    int letter = CharToIndex(note[0]);
                    if (note[1] == 's')
                    {
                        letter++;
                        octave = note[2] - 0x30;
                    }
                    else
                    {
                        octave = note[1] - 0x30;
                    }

                    if (debug == true)
                    {
                        Console.WriteLine("playing " + letter.ToString() + octave.ToString());
                    }
                    play_instruments[i].Play(play_channels[i], Notes.table[letter, octave]);
                    Thread.Sleep(2);
                }
            }
        }
Exemple #5
0
        void LoadMetaData(int index)
        {
            ClearTrackPanels();
            Clear(false);
            int panelYPos   = 10;
            int totalValues = tagReader.sortedFilePaths.Count;

            Thread.Sleep(10);
            InitStatus(totalValues);

            Dictionary <uint, Image> hashCodes = new Dictionary <uint, Image>();

            foreach (string path in tagReader.sortedFilePaths.Values)
            {
                IPicture iPicture   = null;
                Image    finalCover = null;
                if (tagReader.GetTagsFromPath(path).Pictures.Length != 0)
                {
                    iPicture = tagReader.GetTagsFromPath(path).Pictures[0];
                    uint hash = iPicture.Data.Checksum;
                    if (!hashCodes.ContainsKey(hash))
                    {
                        hashCodes.Add(hash, utils.IPictureToImage(iPicture, 24));
                    }
                    finalCover = hashCodes[hash];
                }
                TrackPanel trackPanel = new TrackPanel(path, finalCover, tagReader.GetTagsFromPath(path).Title, themeManager)
                {
                    Location = new Point(10, panelYPos),
                    Size     = new Size(mainPanel.ClientSize.Width - 20, 32)
                };
                mainPanel.Controls.Add(trackPanel);

                trackPanel.MouseClick       += mouseClick;
                trackPanel.Label.MouseClick += mouseClick;
                panelYPos += TRACKPANEL_Y_OFFSET;

                UpdateStatus("Displaying Files", (panelYPos / 42), totalValues);
            }
            loadMetadataIntoDetailsBox(tagReader.GetTagsFromPath(tagReader.sortedFilePaths[index]));
            status.Text = "Done.";
        }
Exemple #6
0
 /// <summary>
 /// 轨迹面板,用于画出Tag的运动轨迹
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void TrackPanel_Paint(object sender, PaintEventArgs e)
 {
     if (null == TrackPanel || TrackPanel.IsDisposed)
     {
         return;
     }
     try
     {
         if (null != TrackBtm)
         {
             TrackPanel.CreateGraphics().DrawImageUnscaled(TrackBtm, 0, 0);
         }
         else
         {
             TrackPanel.CreateGraphics().Clear(Color.White);
         }
     }catch (Exception)
     {
     }
 }
Exemple #7
0
//-----------------------------------------------------------------------------

        //cons
        public X1Project(SignalsWindow _signalsWindow, String _name, int _sampleRate, int _duration)
        {
            signalsWindow = _signalsWindow;
            waverly       = signalsWindow.waverly;
            mixerWindow   = signalsWindow.mixerWindow;
            mixerMaster   = signalsWindow.mixerWindow.mixmaster;
            trackPanel    = signalsWindow.trackPanel;

            projectName = _name;
            filename    = null;

            sampleRate = _sampleRate;
            duration   = _duration;
            dataSize   = sampleRate * duration;

            leftOutLevel  = 1.0f;
            rightOutLevel = 1.0f;

            tracks    = new List <X1Track>();
            isChanged = true;                              //work out a better determinization of when the project's changes later

            waverly.newAudioProject(sampleRate, duration); //create new project in back end
        }
Exemple #8
0
        public void ShowTrack()
        {
            // Create a Graphics object for the Control.
            Point  center      = new Point(125, 125);
            double declination = tgtDecD;
            double startHa     = tgtUpH;
            double endHa       = tgtDownH;

            Graphics g  = TrackPanel.CreateGraphics();
            SkyView  sv = new SkyView(g, center, (float)skymapRadius, (float)(90.0 - obsLatD));

            //Create pens for drawing
            Pen whitePen = new Pen(Color.White, 1.0F);

            whitePen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;
            Pen redPen = new Pen(Color.Red, 4.0F);

            redPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;
            Pen orangePen = new Pen(Color.Orange, 2.0F);

            orangePen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;
            Pen yellowPen = new Pen(Color.Yellow, 4.0F);

            yellowPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;
            Pen greenPen = new Pen(Color.LightSeaGreen, 2.0F);

            greenPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;

            //Draw hour angle lines (longitude)
            for (int iHour = 0; iHour < 24; iHour++)
            {
                g.DrawCurve(whitePen, sv.HourLine(iHour));
            }

            //Draw declination lines (latitude) -- some lines could be empty because of xy projection
            for (int iLat = 0; iLat < 18; iLat++)
            {
                Point[] latLines = sv.DecLine(iLat * 10);
                int     asz      = latLines.Length;

                if (asz > 1)
                {
                    g.DrawLines(whitePen, latLines);
                }
            }
            //Draw equator
            Point[] equLine = sv.DecLine(90.0);
            g.DrawLines(greenPen, equLine);

            //Draw transit hour
            //double transitH = AstroMath.NormalizeHours(tgtPosition.TransitTime(tgtDateUTC, tgtLocation));
            g.DrawCurve(orangePen, sv.HourLine(tgtTransitH));

            //Draw target path
            Point[] trackPts = sv.TrackLine(startHa, endHa, declination);
            if (trackPts.Length > 3)
            {
                int tjumpIndx = ContinuityCheck(trackPts);
                if (tjumpIndx == 0)
                {
                    if (trackPts.Length > 3)
                    {
                        g.DrawCurve(redPen, trackPts);
                    }
                }
                else
                {
                    if (tjumpIndx > 3)
                    {
                        g.DrawCurve(redPen, trackPts, 0, (tjumpIndx - 2), 1.0F);
                    }
                    if ((trackPts.Length - tjumpIndx) > 3)
                    {
                        g.DrawCurve(redPen, trackPts, (tjumpIndx + 1), (trackPts.Length - tjumpIndx - 2), 1.0F);
                    }
                }
            }
            //Draw moon path
            Point[] moonPts = sv.TrackLine(moonRiseH, moonSetH, moonDecD);
            if (moonPts.Length > 3)
            {
                int mjumpIndx = ContinuityCheck(moonPts);
                if (mjumpIndx == 0)
                {
                    if (moonPts.Length > 3)
                    {
                        g.DrawCurve(yellowPen, moonPts);
                    }
                }
                else
                {
                    if (mjumpIndx > 3)
                    {
                        g.DrawCurve(yellowPen, moonPts, 0, (mjumpIndx - 2), 1.0F);
                    }
                    if ((moonPts.Length - mjumpIndx) > 3)
                    {
                        g.DrawCurve(yellowPen, moonPts, (mjumpIndx + 1), (moonPts.Length - mjumpIndx - 2), 1.0F);
                    }
                }
            }
            int    thour       = (int)tgtTransitH;
            int    tmin        = ((int)(tgtTransitH - thour)) * 60;
            string transitText = thour.ToString("00") + tmin.ToString("00");

            this.Text = targetName + " Track <E-W> Transit @ " + transitText;
            return;
        }
Exemple #9
0
        private void addTrackRow(Track _track, int colNum)
        {
            TrackPanel trackRow = new TrackPanel
            {
                Orientation         = Orientation.Horizontal,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                Height     = 30,
                Background = new SolidColorBrush {
                    Color = Color.FromRgb(65, 71, 75)
                },
                Margin = new Thickness(2),
                //childTrack = _track
            };

            trackViewer.Children.Add(trackRow);

            Button destroy = new Button
            {
                Content = "X",
                Height  = 25,
                Width   = 20,
                VerticalContentAlignment = VerticalAlignment.Center
            };

            destroy.Click += new RoutedEventHandler(deleteTrack);
            trackRow.Children.Add(destroy);

            TextBox trackTxt = new TextBox
            {
                Name   = "trackTitle",
                Height = 30,
                Width  = 60,
                Text   = _track.Name,
                VerticalContentAlignment = VerticalAlignment.Center
            };

            trackTxt.TextChanged += new TextChangedEventHandler(renameTrack);
            trackRow.Children.Add(trackTxt);

            ComboBox instSelect = new ComboBox
            {
                Name                     = "trackInstr",
                Width                    = 70,
                ItemsSource              = instrList,
                SelectedItem             = _track.instr,
                VerticalContentAlignment = VerticalAlignment.Center
            };

            instSelect.SelectionChanged += new SelectionChangedEventHandler(selectInstrument);
            trackRow.Children.Add(instSelect);

            ComboBox channelSelect = new ComboBox
            {
                Name        = "trackChannel",
                Width       = 70,
                ItemsSource = channelList,
                VerticalContentAlignment = VerticalAlignment.Center
            };

            channelSelect.SelectionChanged += new SelectionChangedEventHandler(selectChannel);
            trackRow.Children.Add(channelSelect);

            for (int i = 0; i < colNum; i++)
            {
                string celldata;
                if (i > _track.events.Count - 1)
                {
                    celldata = "0";
                }
                else
                {
                    celldata = _track.events[i].ToString();
                }

                trackRow.Children.Add(new TextBox
                {
                    Name   = "cell" + i.ToString(),
                    Height = 30,
                    Width  = 30,
                    VerticalContentAlignment = VerticalAlignment.Center,
                    HorizontalAlignment      = HorizontalAlignment.Stretch,
                    Text = celldata
                });
            }
        }