Go Down

Topic: Convert from int to hex? (Read 741 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