New to processing, looking for program criticism
in
Programming Questions
•
2 years ago
I'm writing a sketch to create a virtual mixer for a small touchscreen monitor. The program is going to control a mixer board complete with digital pots, buffers, op-amps and all that good stuff via an Arduino. Just looking for some insight as to if I'm headed in the right direction. I feel like the mouse functions could be abbreviated with a loop, but I'm not sure how to go about it.
int numOfsliders = 5;
int buttonWidth = 40;
int buttonHeight = 20;
int level[] = {300, 350, 400, 300, 350};
int sliderX[] = {100, 225, 350, 475, 600};
void setup()
{
rectMode(CENTER);
size (640, 480);
}
void draw()
{
background(20);
//Channel 1
drawChannel(sliderX[0],level[0]);
//Channel 2
drawChannel(sliderX[1],level[1]);
//Channel 3
drawChannel(sliderX[2],level[2]);
//Channel4
drawChannel(sliderX[3],level[3]);
//Channel5
drawChannel(sliderX[4],level[4]);
}
void drawSlider(int xPos)
{
//Draws slider and all the cute lines to make it look pretty
fill(50);
stroke(50);
rect(xPos, 240, 20, 400);
stroke(0);
strokeWeight(4);
line(xPos, 50, xPos, 430);
strokeWeight(1);
for(int i = 430; i > 40; i -= 15)
{
line(xPos - 10, i, xPos - 7, i);
line(xPos+10, i, xPos+7, i);
}
}
void drawChannel(int xPos, int level)
{
drawSlider(xPos);
drawVumeter(xPos);
//Draw slider knobs
fill(255);
rect(xPos, level, buttonWidth, buttonHeight);
line(xPos - buttonWidth / 2, level, xPos + buttonWidth / 2, level);
//Draws shaded lines on the sliders
for(int i = 0; i < 5; i++)
{
stroke(i * 60);
line(xPos - buttonWidth / 2, level + i * 2, xPos + buttonWidth / 2, level + i * 2);
line(xPos - buttonWidth / 2, level - i * 2, xPos + buttonWidth / 2, level - i * 2);
}
}
void drawVumeter(int xPos)
{
//Draw rectangles for VU meter and color
for(int j = 440; j > 40; j -= 10)
{
if(j > 150)
fill(20, 80, 20);
else if(j > 100)
fill(80, 80, 20);
else
fill(80, 20, 20);
rect(xPos-40, j-5, 20, 10);
}
}
void mouseDragged()
{
//Decide if mouse is dragging a slider and which
for(int j = 0; j < numOfsliders; j++){
if (mouseX > sliderX[j] - (buttonWidth / 2) &&
mouseX < sliderX[j] + (buttonWidth / 2) &&
mouseY > 40 && mouseY < 440)
{
level[j]= mouseY;
}
}
}
void mouseClicked()
{
////Decide if mouse is clicking a slider and which
for(int j = 0; j < numOfsliders; j++){
if (mouseX > sliderX[j] - (buttonWidth / 2) &&
mouseX < sliderX[j] + (buttonWidth / 2) &&
mouseY > 40 && mouseY < 440)
{
level[j]= mouseY;
}
}
}
int numOfsliders = 5;
int buttonWidth = 40;
int buttonHeight = 20;
int level[] = {300, 350, 400, 300, 350};
int sliderX[] = {100, 225, 350, 475, 600};
void setup()
{
rectMode(CENTER);
size (640, 480);
}
void draw()
{
background(20);
//Channel 1
drawChannel(sliderX[0],level[0]);
//Channel 2
drawChannel(sliderX[1],level[1]);
//Channel 3
drawChannel(sliderX[2],level[2]);
//Channel4
drawChannel(sliderX[3],level[3]);
//Channel5
drawChannel(sliderX[4],level[4]);
}
void drawSlider(int xPos)
{
//Draws slider and all the cute lines to make it look pretty
fill(50);
stroke(50);
rect(xPos, 240, 20, 400);
stroke(0);
strokeWeight(4);
line(xPos, 50, xPos, 430);
strokeWeight(1);
for(int i = 430; i > 40; i -= 15)
{
line(xPos - 10, i, xPos - 7, i);
line(xPos+10, i, xPos+7, i);
}
}
void drawChannel(int xPos, int level)
{
drawSlider(xPos);
drawVumeter(xPos);
//Draw slider knobs
fill(255);
rect(xPos, level, buttonWidth, buttonHeight);
line(xPos - buttonWidth / 2, level, xPos + buttonWidth / 2, level);
//Draws shaded lines on the sliders
for(int i = 0; i < 5; i++)
{
stroke(i * 60);
line(xPos - buttonWidth / 2, level + i * 2, xPos + buttonWidth / 2, level + i * 2);
line(xPos - buttonWidth / 2, level - i * 2, xPos + buttonWidth / 2, level - i * 2);
}
}
void drawVumeter(int xPos)
{
//Draw rectangles for VU meter and color
for(int j = 440; j > 40; j -= 10)
{
if(j > 150)
fill(20, 80, 20);
else if(j > 100)
fill(80, 80, 20);
else
fill(80, 20, 20);
rect(xPos-40, j-5, 20, 10);
}
}
void mouseDragged()
{
//Decide if mouse is dragging a slider and which
for(int j = 0; j < numOfsliders; j++){
if (mouseX > sliderX[j] - (buttonWidth / 2) &&
mouseX < sliderX[j] + (buttonWidth / 2) &&
mouseY > 40 && mouseY < 440)
{
level[j]= mouseY;
}
}
}
void mouseClicked()
{
////Decide if mouse is clicking a slider and which
for(int j = 0; j < numOfsliders; j++){
if (mouseX > sliderX[j] - (buttonWidth / 2) &&
mouseX < sliderX[j] + (buttonWidth / 2) &&
mouseY > 40 && mouseY < 440)
{
level[j]= mouseY;
}
}
}
1
