WirelessPocketPC MIDI Controller Ended

Discuss music production with Ableton Live.
Post Reply
zappen
Posts: 345
Joined: Sat Jul 16, 2005 1:42 am

Post by zappen » Sat Oct 21, 2006 4:50 pm

yea very well!! 8O

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sat Oct 21, 2006 5:30 pm

I've added some text so you can name your controls. Works well i think.

[old image removed]
Last edited by gafferuk on Wed Nov 01, 2006 6:35 pm, edited 1 time in total.

Machinate
Posts: 11648
Joined: Thu Jun 24, 2004 2:15 pm
Location: Denmark

Post by Machinate » Sat Oct 21, 2006 5:48 pm

Gafferuk, how does the app handle it if you drag the stylus across multiple faders?

Will it move all of them to the right position, or only the first one you select? This is a major gripe I have with many systems, and with a PDA it'll be very important to get right, imo.

Also, as a gui suggestion, I'd come up with something other than a drop-down for octave selection in the keyboard screen. Perhaps a horizontal slider would make more sense? Or two horizontal buttons for octave up/down?

cheers,
a.
mbp 2.66, osx 10.6.8, 8GB ram.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sat Oct 21, 2006 5:52 pm

Machinate wrote:Gafferuk, how does the app handle it if you drag the stylus across multiple faders?a.
At the moment it only changes one fader at a time even if you go over other faders during the drag, is this ok cus i could change it.

Thanks for your advice on piano keyboard, good idea, ill impliment it.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sat Oct 21, 2006 7:03 pm

Do you think it's looking pro? :)

[old image removed]
Last edited by gafferuk on Wed Nov 01, 2006 6:35 pm, edited 1 time in total.

style_riser
Posts: 30
Joined: Sat Oct 21, 2006 11:02 pm

Post by style_riser » Sun Oct 22, 2006 11:21 am

I want to play it! I think your building something great. looks more fun to play than my Poxy x-session, looks so easy to use. When will it be available to test?

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 11:36 am

style_riser wrote:I want to play it! I think your building something great. looks more fun to play than my Poxy x-session, looks so easy to use. When will it be available to test?
Thanks! Im working hard on it(sort of, when i can), it is easy to use and it's fast! Should be ready to test in 2 or 3 months. I could release a beta in a week or 2 but id rather get it right.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 11:40 am

Software synths have taken over hardware in terms of features and i believe software midi controllers will take over hardware in termsof features too, watch this space!

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 11:52 am

Ive added + & - buttons to each of the faders, now you can increase/decrease by small amounts. Very percise!

[old image removed]
Last edited by gafferuk on Wed Nov 01, 2006 6:36 pm, edited 1 time in total.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 3:13 pm

Heres a code extract from my app, I post it here for non-programmers that are wondering what i'm working with. This code is for one of my 778(equivalant to 24 bcr2000's!) custom Faders:

Code: Select all

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsCE.Forms;
namespace PocketController
{

  
    public partial class ControlVFader : UserControl
    {
        String name = "Control 1";
        int faderValue = 64;
        bool mouseDown = false;
        public delegate void ValueChangedHandler(object sender, int value);
        public event ValueChangedHandler ValueChanged;
   
        public ControlVFader()
        {
            InitializeComponent();
        }

        private void ControlVFader_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            float y = this.Height - (this.Width / 2) - (faderValue * ((float)(this.Height- (this.Width / 2)) / 128));
            g.FillRectangle(new SolidBrush(Color.FromArgb(128 - (int)y, (int)y, 0)), 1, (int)y, this.Width, this.Height - (this.Width / 2) - (int)y - 1);
            g.FillRectangle(new SolidBrush(Color.FromArgb(255, 255, 255)), 1, (int)y, this.Width - 2, 2);
            g.DrawString(faderValue.ToString(), new Font("Verdana", 10, FontStyle.Regular), new SolidBrush(Color.Gray), 5, this.Height - 30);

            LogFont logf = new Microsoft.WindowsCE.Forms.LogFont();

            // Create graphics object for the form, and obtain
            // the current DPI value at design time. In this case,
            // only the vertical resolution is petinent, so the DpiY
            // property is used. 

            Graphics fontGraphics = this.CreateGraphics();
            // Scale an 18-point font for current screen vertical DPI.
            logf.Height = (int)(-12f * g.DpiY / 96);

            // Convert specified rotation angle to tenths of degrees.  
            logf.Escapement = 90 * 10;

            // Orientation is the same as Escapement in mobile platforms.
            logf.Orientation = logf.Escapement;

            logf.FaceName = "Verdana";

            // Set LogFont enumerations.
            logf.CharSet = LogFontCharSet.Default;
            logf.OutPrecision = LogFontPrecision.Default;
            logf.ClipPrecision = LogFontClipPrecision.Default;
            logf.Quality = LogFontQuality.ClearType;
            logf.PitchAndFamily = LogFontPitchAndFamily.Default;

            // Explicitly dispose any drawing objects created.
            fontGraphics.Dispose();

            g.DrawString(name,
                Font.FromLogFont(logf),
                new SolidBrush(Color.Gray),
                5,
                this.Height - 30,
                new StringFormat(StringFormatFlags.NoWrap |
                     StringFormatFlags.NoClip));

            g.FillRectangle(new SolidBrush(Color.FromArgb(222,207,198)), 0, this.Height - this.Width / 2, this.Width / 2, this.Width / 2);
            g.DrawRectangle(new Pen(Color.FromArgb(0,0,0), 1), 0, this.Height - this.Width / 2, this.Width / 2, this.Width / 2);
            g.DrawString("-", new Font("Verdana", 12, FontStyle.Regular), new SolidBrush(Color.Black), 6, this.Height - 17);


            g.FillRectangle(new SolidBrush(Color.FromArgb(222, 207, 198)), this.Width / 2, this.Height - this.Width / 2, this.Width / 2, this.Width / 2);
            g.DrawRectangle(new Pen(Color.FromArgb(0,0,0), 1), this.Width / 2, this.Height - this.Width / 2, this.Width / 2, this.Width / 2);
            g.DrawString("+", new Font("Verdana", 12, FontStyle.Regular), new SolidBrush(Color.Black), 2 + this.Width / 2, this.Height - 17);
           }

        private void ControlVFader_MouseUp(object sender, MouseEventArgs e)
        {
            mouseDown = false;
        }

        private void ControlVFader_MouseMove(object sender, MouseEventArgs e)
        {
            if (mouseDown)
            {
                float y = e.Y / ((float)(this.Height- (this.Width / 2)) / 128);
                if (y < 0)
                    y = 0;
                if (y > 127)
                    y = 127;
                faderValue = 128 - (int)y - 1;
                this.Refresh();
                OnValueChanged(faderValue);
            }
        }

        private void ControlVFader_MouseDown(object sender, MouseEventArgs e)
        {
            
            if (e.Y < this.Height - this.Width / 2)
            {
                mouseDown = true;
                float y = e.Y / ((float)(this.Height - (this.Width / 2)) / 128);
                if (y < 0)
                    y = 0;
                if (y > 127)
                    y = 127;
                faderValue = 128 - (int)y - 1;
                this.Refresh();
                OnValueChanged(faderValue);
            }
        }

        /// <summary>
        /// Raises the ValueChanged event.
        /// </summary>
        /// <param name="value">The new value</param>
        public virtual void OnValueChanged(int value)
        {
            // Any attached event handlers?
            if (ValueChanged != null)
                ValueChanged(this, value);

        }

        /// <summary>
        /// Gets or sets a numeric value that represents the current position of the slider on the track bar.
        /// </summary>
        /// <remarks>The Value property contains the number that represents the current position of the slider on the track bar.</remarks>
        /// <value>A numeric value that is within the <see cref="Minimum"/> and <see cref="Maximum"/> range. 
        /// The default value is 0.</value>
  
        public int Value
        {
            get
            {
                return faderValue;
            }
            set
            {
                faderValue = value;

                    OnValueChanged(value);

                    this.Invalidate();
                }
            }
    

           public String Name
           {
            get
            {
                return name;
            }
            set
            {
                name = value;
                this.Invalidate();
                }
            }
        }
    }
Last edited by gafferuk on Sun Oct 22, 2006 6:48 pm, edited 3 times in total.

zappen
Posts: 345
Joined: Sat Jul 16, 2005 1:42 am

Post by zappen » Sun Oct 22, 2006 4:02 pm

great thanks!

apalomba
Posts: 157
Joined: Tue Nov 23, 2004 5:33 pm

Post by apalomba » Sun Oct 22, 2006 5:05 pm

So you build it in VS and then download it to you PocketPC. I did
not know you could do that, pretty cool. Do you have to install some
SDK to get it to down load your app? Obviously since you are doing
this in C#, there must be some .Net client that runs on the PocketPC.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 5:13 pm

apalomba wrote:So you build it in VS and then download it to you PocketPC. I did
not know you could do that, pretty cool. Do you have to install some
SDK to get it to down load your app? Obviously since you are doing
this in C#, there must be some .Net client that runs on the PocketPC.
I have yet to try on on a real pocket pc. At the mo im using the PocketPC emulator that comes with Visual Studio 2005(where i get my screenshots from and is great)
As for SDK im Using .net Compact Framework writing in c#.
I think visual studio is best IDE on the planet. I used to write in jave using text editor and wow do i see the difference, it's like 10 times more productive.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 6:58 pm

Just been working out how much my software MIDI controller could save you:
778 faders - equivalant to 24 bcr2000's @ $150 each is $3600.
48 xy controllers - equivalant to someting but i don't know what but must cost about $150 each so thats $7200.
So my MIDI controller is equivalant to $10800 of hardware controllers!!
Wow, what a saving! :D

Guess it's not quite like that cus these hardware controller has banks but hey you cant label them all so you forget what they all do!
My app should be better than any mouse cus it's not so far to travel between controls. It's better than any bcr2000 so the only thing better a full pro studio, and they cost £££££'s. Even the latancy shouldnt be a problem cus were used to it from the soundcard and my latancy should be well below that.

gafferuk
Posts: 373
Joined: Tue Jul 11, 2006 3:26 pm
Location: Bristol, England

Post by gafferuk » Sun Oct 22, 2006 7:42 pm

I correct myself, my faders are equivalant to motorized faders so they are equivalant to bcf2000's not bcr2000's so thats equivalant to 97 bcf2000's at $250 each.
Thats a grand total of $31450 + VAT of hardware on a pocketPC!

Is this the future of home studio's? I sort of wish i just wrote the app without writing this thread on the forum but hey im looking for ideas! :)
__________________
Last edited by gafferuk on Sun Oct 22, 2006 11:56 pm, edited 1 time in total.

Post Reply