WirelessPocketPC MIDI Controller Ended
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.
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.
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.Machinate wrote:Gafferuk, how does the app handle it if you drag the stylus across multiple faders?a.
Thanks for your advice on piano keyboard, good idea, ill impliment it.
-
- Posts: 30
- Joined: Sat Oct 21, 2006 11:02 pm
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.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?
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.
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)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.
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.
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!
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.
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!
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.
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!
__________________
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.