%token L_IEC958OCS L_3D L_RESET L_USER L_VALID L_DATA L_PROTECT L_PRE2
 %token L_FSUNLOCK L_TYPE L_GSTATUS L_ENABLE L_DISABLE
 %token L_SW L_MONO_SW L_WIDE L_VOLUME L_CENTER L_SPACE L_DEPTH L_DELAY
+%token L_DEPTH_REAR
 %token L_FEEDBACK L_BASS L_TREBLE
 
 
        | L_DEPTH '=' integer   { mixer_3d_effect1_value(SND_MIXER_EFF1_DEPTH, $3); }
        | L_DELAY '=' integer   { mixer_3d_effect1_value(SND_MIXER_EFF1_DELAY, $3); }
        | L_FEEDBACK '=' integer { mixer_3d_effect1_value(SND_MIXER_EFF1_FEEDBACK, $3); }
+       | L_DEPTH_REAR '=' integer { mixer_3d_effect1_value(SND_MIXER_EFF1_DEPTH_REAR, $3); }
        | error                 { yyerror("an unknown keyword in the 3D Effect1 element level"); }
        ;
 
 
                celement->element.data.teffect1.depth = uelement->element.data.teffect1.depth;
                celement->element.data.teffect1.delay = uelement->element.data.teffect1.delay;
                celement->element.data.teffect1.feedback = uelement->element.data.teffect1.feedback;
+               celement->element.data.teffect1.depth_rear = uelement->element.data.teffect1.depth_rear;
                break;
        case SND_MIXER_ETYPE_PRE_EFFECT1:
                if (celement->element.data.peffect1.pparameters)
 
                        fprintf(out, "    ; Delay : Min %i Max %i\n", info->data.teffect1.min_delay, info->data.teffect1.max_delay);
                if (info->data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK)
                        fprintf(out, "    ; Feedback : Min %i Max %i\n", info->data.teffect1.min_feedback, info->data.teffect1.max_feedback);
+               if (info->data.teffect1.effect & SND_MIXER_EFF1_DEPTH_REAR)
+                       fprintf(out, "    ; Depth rear : Min %i Max %i\n", info->data.teffect1.min_depth_rear, info->data.teffect1.max_depth_rear);
                fprintf(out, "    element(\"%s\",%i,%i,_3D_Effect1(", mixer_element_name(&element->eid), element->eid.index, element->eid.type);
                idx = 0;
                if (element->data.teffect1.effect & SND_MIXER_EFF1_SW) 
                        fprintf(out, "%sdelay=%i", idx++ > 0 ? "," : "", element->data.teffect1.delay);
                if (element->data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK)
                        fprintf(out, "%sfeedback=%i", idx++ > 0 ? "," : "", element->data.teffect1.feedback);
+               if (element->data.teffect1.depth_rear & SND_MIXER_EFF1_DEPTH_REAR)
+                       fprintf(out, "%sdepth_rear=%i", idx++ > 0 ? "," : "", element->data.teffect1.depth_rear);
                fprintf(out, "))\n");
                break; 
        default: