I can spot multiple errors,points of interest and questions.
First of all, how is everything wired? Matrixing multiple pot's isn't really possible I think (without drawing...). You need to multiplex them.
Second, the code make up is a big mess. Press ctrl+t for fun and look how much more clear the code becomes...
digitalWrite(rij[i], LOW);
If you sneak in some Dutch it's not going to work 
colom, you mean column? But no matter what, if you call it lolom it's not going to work....
if(digitalRead(lolom[3]) == HIGH ){
And remove the stupid delay()'s.
if(buttonstate[var] > 0 && buttonstate[var] == 0){
Wait, what? It need to be bigger then 0 AND 0 at the same time?
int number[] = {23, 39, 71, 135, 27, 43, 75, 139, 29, 45, 77, 141, 30, 46, 78, 142};
Indeed, those are numbers... But what are they for? You really need to use better variable names.
row => rowPins
colom => columnPins
note => notes (plural to remind you it's an array)
buttonstate => buttonState
buttonstateold => buttonStateOld
For a start.
And now we're on the subject of variables, you say you want to "save up some space". Start by using the proper variable type and make the ones you don't what to change in the program to const.
//Pins
const byte RowPins[] = {5, 7, 2, 3}; //output
const byte ColumnPins[] = {A5, A7, A6, 4}; //input
const byte LatchPin = 8;
const byte ClockPin = 6;
const byte DataPin = 9;
//Lookup tables
const byte Notes[] = {60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75}; //Notes
const byte Numbers[] = {23, 39, 71, 135, 27, 43, 75, 139, 29, 45, 77, 141, 30, 46, 78, 142};
Serial.write(144);
Serial.write(127);
Not clear what that does, where is the command? Or it it's a clear command, just make it a const byte with it.
const byte CommandX = 144;
Serial.write(CommandX);
Is pretty self explaining
And you try to cram everything in the loop() although it are saeperate tasks. Why not split everything and make it more clear. That way every piece can be simple etc
void loop(){
readSwitches();
playNotes();
setLeds();
}
For simplicity you can even make a function to update the leds etc
void updateLeds(byte data){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, data);
digitalWrite(latchPin, HIGH);
}
A simple function, yes. But this way every piece of the puzzle is simple 