Go Down

Topic: Convert from int to hex? (Read 1 time) previous topic - next topic


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!


map (lightLevel 0,

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


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


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?


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


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.



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

void setup() {
  //  Set MIDI baud rate:

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);
    //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);


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

Go Up