Go Down

Topic: Convert from int to hex? (Read 802 times) previous topic - next topic

lazzy_8

Hi, I'm trying to get a value from my analog in and then convert it to hex so I can send a midi note.

I'm trying to do something like this but I get an error:

int lightPin = 0;

int lightLevel = analogRead(lightPin);

lightnote = map (lightLevel 0, 900, 0x3A, 0x6A);  <-this has an error!

Thanks in advance!

Groove

Quote
map (lightLevel 0,

It has an error, because it missses a comma
Per Arduino ad Astra

lazzy_8

OK, thanks!   Yep, just figured this out and then was about to delete the post.  Thanks!

lazzy_8

My program is not working.  Anyone have an example of how to take analog input and then convert it to hex so I can output it as midi notes?

Groove

#4
Feb 19, 2011, 10:30 pm Last Edit: Feb 19, 2011, 10:33 pm by Groove Reason: 1
We can't see your program, or know why it isn't working.
Any integer decimal value can be represented in hex.
Per Arduino ad Astra

lazzy_8

Sorry,  here it is:

/*
MIDI note player

This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data.
If this circuit is connected to a MIDI synth, it will play
the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence.


The circuit:
* digital in 1 connected to MIDI jack pin 5
* MIDI jack pin 2 connected to ground
* MIDI jack pin 4 connected to +5V through 220-ohm resistor
Attach a MIDI cable to the jack, then to a MIDI synth, and play music.

created 13 Jun 2006
modified 2 Jul 2009
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/MIDI

*/

int note;
int lightPin = 0;
int lightnote;
//int hexnote;

void setup() {
  //  Set MIDI baud rate:
  Serial.begin(31250);
}

void loop() {
  // play notes from F#-0 (0x1E) to F#-5 (0x5A):
  for (int note = 0x3A; note < 0x6A; note ++) {
   
    int lightLevel = analogRead(lightPin);
   
    lightLevel = map (lightLevel, 0, 900, 5, 100);
   
    lightnote = map (lightLevel, 0, 900, 0x3A, 0x6A);
   
    lightnote = constrain (lightLevel, 0x3A, 0x4A);
   
    //hexnote = (lightnote, HEX);
   
    //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
    noteOn(0x90, lightnote, 0x7F);
    delay(lightLevel);
    //Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
    noteOn(0x90, note, 0x00);   
   // delay(lightLevel);
  }
}

//  plays a MIDI note.  Doesn't check to see that
//  cmd is greater than 127, or that data values are  less than 127:
void noteOn(int cmd, int pitch, int velocity) {
  Serial.print(cmd, BYTE);
  Serial.print(pitch, BYTE);
  Serial.print(velocity, BYTE);
}

Groove

We can see your program, but don't know why you think it isn't "working"
Per Arduino ad Astra

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy