sending contents of progmem data through serial...??

Hi all.
I am hoping someone can help me with this:
I am developing an Android controlled synthesizer engine.
The engine uses patches in a PROGMEM array to set up the sounds.
An example looks like this:

PROGMEM patch patches[] = { 
   

{4,4,42,69,18,122,42,25,124,5,126,30,64,51,26,82,19,14,40,54,109,24,92,},
{6,0,87,25,1,73,34,88,79,6,86,36,31,32,62,32,5,64,48,2,101,75,50,},
{6,38,66,15,49,91,61,115,105,2,76,48,75,87,2,86,33,62,126,121,124,6,18,} }

there are 3 arrays here. I need help working out how to send the data from one array out of the serial port. number by number.
Im not too familiar with PROGMEM other than using it for wavetables.
Coudl someone please help me?
Thanks,

Steve.

If you can access the contents for wave tables, you can send it to serial.
What's the problem?

well, what I want to do is send the contents of the patch array (each value in the patch array is part of a struct that determines the parameters of the synthesizer (envelope, lfo, FM ops, gains etc...) over serial to the android tablet. Basically I want to send out the patch numbers as a list via the serial port. How do i do this from a PROGMEM array??

Hi Steve

Does this help?

typedef byte patch;

PROGMEM const patch patches[][23] = {
{4,4,42,69,18,122,42,25,124,5,126,30,64,51,26,82,19,14,40,54,109,24,92,},
{6,0,87,25,1,73,34,88,79,6,86,36,31,32,62,32,5,64,48,2,101,75,50,},
{6,38,66,15,49,91,61,115,105,2,76,48,75,87,2,86,33,62,126,121,124,6,18,} };

void setup() {
  Serial.begin(115200);
  
  // Send the first array on serial
  for (int i = 0; i<sizeof(patches[0]); i++) {
    Serial.write(pgm_read_byte(&patches[0][i]));
  }
}

void loop() {
  
}

I can recommend reading avr-libc: Data in Program Space