From ca7ae60abd47318decd207459d9007624a6d2c89 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 24 Nov 2003 14:48:21 +0000 Subject: [PATCH] - fixed H9632 problem. - added desktop file and icon new options --with-desktop-dir and --with-pixmap-dir. - fixed CXXFLAGS for soundbase option. - fixed compile warnings. --- hdspmixer/Makefile.am | 4 + hdspmixer/NEWS | 5 ++ hdspmixer/configure.in | 28 ++++++- hdspmixer/hdspmixer.desktop | 10 +++ hdspmixer/pixmaps/Makefile.am | 5 +- hdspmixer/pixmaps/hdspmixer.png | Bin 0 -> 5068 bytes hdspmixer/src/HDSPMixerCard.cxx | 33 +++++--- hdspmixer/src/HDSPMixerCard.h | 3 + hdspmixer/src/HDSPMixerOutput.cxx | 1 + hdspmixer/src/HDSPMixerOutput.h | 2 + hdspmixer/src/HDSPMixerSelector.cxx | 7 +- hdspmixer/src/HDSPMixerSelector.h | 2 + hdspmixer/src/HDSPMixerWindow.cxx | 113 +++++++++++++++++++--------- hdspmixer/src/mappings.h | 4 - 14 files changed, 160 insertions(+), 57 deletions(-) create mode 100644 hdspmixer/hdspmixer.desktop create mode 100644 hdspmixer/pixmaps/hdspmixer.png diff --git a/hdspmixer/Makefile.am b/hdspmixer/Makefile.am index 142c278..b0f4f66 100644 --- a/hdspmixer/Makefile.am +++ b/hdspmixer/Makefile.am @@ -1,5 +1,9 @@ +EXTRA_DIST = hdspmixer.desktop SUBDIRS = src pixmaps +desktopdir = $(DESKTOP_DIR) +desktop_DATA = hdspmixer.desktop + alsa-dist: distdir @rm -rf ../distdir/hdspmixer @mkdir -p ../distdir/hdspmixer diff --git a/hdspmixer/NEWS b/hdspmixer/NEWS index 6c83de2..7c7197f 100644 --- a/hdspmixer/NEWS +++ b/hdspmixer/NEWS @@ -1,3 +1,8 @@ +Version 1.5 (21/11/2003): + * Added a .desktop file + * H9632 bug fixes (thanks to Pentti Ala-Vannesluoma) + * Fixes presets handling for H9632 cards + Version 1.4 (01/11/2003): * Adds support for H9632 cards diff --git a/hdspmixer/configure.in b/hdspmixer/configure.in index 92898de..243dc04 100644 --- a/hdspmixer/configure.in +++ b/hdspmixer/configure.in @@ -1,12 +1,12 @@ AC_INIT(src/hdspmixer.cxx) -AM_INIT_AUTOMAKE(hdspmixer, 1.4) +AM_INIT_AUTOMAKE(hdspmixer, 1.5) AC_PROG_CXX AC_PROG_MAKE_SET AC_STDC_HEADERS AC_PATH_X -AM_PATH_ALSA(0.9.0) +AM_PATH_ALSA(1.0.0) dnl kernel header files AC_MSG_CHECKING(for kernel header files) @@ -32,7 +32,7 @@ AC_ARG_WITH(soundbase, [soundbasedir="$withval"], [soundbasedir="$kerneldir"]) if test "$soundbasedir" != "" -a -r "$soundbasedir/sound" ; then ALSA_CFLAGS="$ALSA_CFLAGS -I$soundbasedir" - CFLAGS="$CFLAGS -I$soundbasedir" + CXXFLAGS="$CXXFLAGS -I$soundbasedir" AC_MSG_RESULT($ALSA_CFLAGS) else if test "x$prefix" != xNONE; then @@ -42,13 +42,33 @@ else fi if test -z "$soundbasedir" -a -r "$aprefix/include/sound"; then ALSA_CFLAGS="$ALSA_CFLAGS -I$aprefix/include" - CFLAGS="$CFLAGS -I$aprefix/include" + CXXFLAGS="$CXXFLAGS -I$aprefix/include" AC_MSG_RESULT($ALSA_CFLAGS) else AC_MSG_RESULT("not specified - using C compiler defaults") fi fi +dnl desktop install +AC_ARG_WITH(desktop-dir, + [ --with-desktop-dir specify the path to install desktop file], + [desktopdir="$withval"], [desktopdir=""]) +if test -z "$desktopdir"; then + desktopdir=$datadir/applications +fi +DESKTOP_DIR="$desktopdir" +AC_SUBST(DESKTOP_DIR) + +AC_ARG_WITH(pixmap-dir, + [ --with-pixmap-dir specify the path to install desktop pixmap file], + [pixmapdir="$withval"], [pixmapdir=""]) +if test -z "$pixmapdir"; then + pixmapdir=$datadir/pixmaps +fi +PIXMAP_DIR="$pixmapdir" +AC_SUBST(PIXMAP_DIR) + +dnl library check AC_PATH_PROG(FLTK_CONFIG, fltk-config, no) if test "$FLTK_CONFIG" = "no"; then AC_MSG_ERROR(fltk-config is required) diff --git a/hdspmixer/hdspmixer.desktop b/hdspmixer/hdspmixer.desktop new file mode 100644 index 0000000..eb5615e --- /dev/null +++ b/hdspmixer/hdspmixer.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=HDSPMixer +Comment=Hammerfall DSP matrix mixer control GUI +Exec=hdspmixer +FilePattern=hdspmixer +Icon=hdspmixer.png +Terminal=false +Type=Application +Categories=Application;AudioVideo; diff --git a/hdspmixer/pixmaps/Makefile.am b/hdspmixer/pixmaps/Makefile.am index 7278f3b..c81fc95 100644 --- a/hdspmixer/pixmaps/Makefile.am +++ b/hdspmixer/pixmaps/Makefile.am @@ -1 +1,4 @@ -EXTRA_DIST = $(wildcard *.xpm) +pixmapdir = $(PIXMAP_DIR) +pixmap_DATA = hdspmixer.png + +EXTRA_DIST = $(wildcard *.xpm) hdspmixer.png diff --git a/hdspmixer/pixmaps/hdspmixer.png b/hdspmixer/pixmaps/hdspmixer.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8b18f4b9c6fec4b90b4b00b5e3cc0214aed745 GIT binary patch literal 5068 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 i3inputs->empty_aebi[i]->hide(); basew->playbacks->empty_aebo[i]->show(); basew->outputs->empty_aebo[i]->show(); - } + } + for (int i = channels-4; i < channels; ++i) { + basew->playbacks->strips[i]->hide(); + basew->outputs->strips[i]->hide(); + } } else if (h9632_aeb.aebo && !h9632_aeb.aebi) { for (int i = 0; i < 2; ++i) { basew->inputs->empty_aebi[i]->show(); basew->playbacks->empty_aebo[i]->hide(); basew->outputs->empty_aebo[i]->hide(); } + for (int i = channels-4; i < channels; ++i) { + basew->inputs->strips[i]->hide(); + } } else { for (int i = 0; i < 2; ++i) { basew->inputs->empty_aebi[i]->hide(); diff --git a/hdspmixer/src/HDSPMixerCard.h b/hdspmixer/src/HDSPMixerCard.h index ece2295..4e7df46 100644 --- a/hdspmixer/src/HDSPMixerCard.h +++ b/hdspmixer/src/HDSPMixerCard.h @@ -26,7 +26,9 @@ #include #include #include +#ifdef HDSPMIXER_DEFINE_MAPPINGS #include "mappings.h" +#endif #include "defines.h" #include "HDSPMixerWindow.h" @@ -47,6 +49,7 @@ public: char *dest_map; char *meter_map; int speed_mode; + int playbacks_offset; void setMode(int mode); int initializeCard(HDSPMixerWindow *w); int getSpeed(); diff --git a/hdspmixer/src/HDSPMixerOutput.cxx b/hdspmixer/src/HDSPMixerOutput.cxx index 9af0333..5a79201 100644 --- a/hdspmixer/src/HDSPMixerOutput.cxx +++ b/hdspmixer/src/HDSPMixerOutput.cxx @@ -19,6 +19,7 @@ */ #pragma implementation +#define HDSPMIXER_DEFINE_OUTPUT_LABELS #include "HDSPMixerOutput.h" HDSPMixerOutput::HDSPMixerOutput(int x, int y, int w, int h, int num):Fl_Group(x, y, w, h) diff --git a/hdspmixer/src/HDSPMixerOutput.h b/hdspmixer/src/HDSPMixerOutput.h index dcd821e..2767e06 100644 --- a/hdspmixer/src/HDSPMixerOutput.h +++ b/hdspmixer/src/HDSPMixerOutput.h @@ -41,6 +41,7 @@ class HDSPMixerMeter; class HDSPMixerOutputData; class HDSPMixerWindow; +#ifdef HDSPMIXER_DEFINE_OUTPUT_LABELS static char *labels_mf_ss[20] = { "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6", "AN 7", "AN 8", "A 1", "A 2", "A 3", "A 4", "A 5", "A 6", "A 7", "A 8", @@ -80,6 +81,7 @@ static char *labels_9632_ds[12] = { static char *labels_9632_qs[8] = { "SP.L", "SP.R", "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6" }; +#endif class HDSPMixerOutput:public Fl_Group { diff --git a/hdspmixer/src/HDSPMixerSelector.cxx b/hdspmixer/src/HDSPMixerSelector.cxx index 4fe3798..166c557 100644 --- a/hdspmixer/src/HDSPMixerSelector.cxx +++ b/hdspmixer/src/HDSPMixerSelector.cxx @@ -19,6 +19,7 @@ */ #pragma implementation +#define HDSPMIXER_DEFINE_SELECTOR_LABELS #include "HDSPMixerSelector.h" HDSPMixerSelector::HDSPMixerSelector(int x, int y, int w, int h):Fl_Menu_(x, y, w, h) @@ -142,15 +143,15 @@ void HDSPMixerSelector::setLabels() } else if (type == H9632) { switch (sm) { case 0: - max_dest = 6 + (aeb->aebo) ? 2 : 0; + max_dest = 6 + (aeb->aebo ? 2 : 0); destinations = destinations_h9632_ss; break; case 1: - max_dest = 4 + (aeb->aebo) ? 2 : 0; + max_dest = 4 + (aeb->aebo ? 2 : 0); destinations = destinations_h9632_ds; break; case 2: - max_dest = 2 + (aeb->aebo) ? 2 : 0; + max_dest = 2 + (aeb->aebo ? 2 : 0); destinations = destinations_h9632_qs; break; } diff --git a/hdspmixer/src/HDSPMixerSelector.h b/hdspmixer/src/HDSPMixerSelector.h index e7ae551..2a81b0d 100644 --- a/hdspmixer/src/HDSPMixerSelector.h +++ b/hdspmixer/src/HDSPMixerSelector.h @@ -35,6 +35,7 @@ class HDSPMixerWindow; class HDSPMixerIOMixer; +#ifdef HDSPMIXER_DEFINE_SELECTOR_LABELS static char *destinations_mf_ss[10] = { "AN 1+2", "AN 3+4", "AN 5+6", "AN 7+8", "A 1+2", "A 3+4", "A 5+6", "A 7+8", @@ -88,6 +89,7 @@ static char *destinations_h9632_ds[6] = { static char *destinations_h9632_qs[4] = { "SPDIF", "AN 1+2", "AN 3+4", "AN 5+6" }; +#endif class HDSPMixerSelector:public Fl_Menu_ { diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx index f6d6ed6..52a4cc6 100644 --- a/hdspmixer/src/HDSPMixerWindow.cxx +++ b/hdspmixer/src/HDSPMixerWindow.cxx @@ -246,7 +246,7 @@ static int handler_cb(int event) break; } } - if (fl_win = Fl::next_window(fl_win)) return 0; + if ((fl_win = Fl::next_window(fl_win))) return 0; } if (!w) return 0; int key = Fl::event_key(); @@ -276,7 +276,7 @@ static int handler_cb(int event) w->checkState(); return 1; } else if (key == '3' || key == '3'+FL_KP) { - /* rms +3B */ + /* rms +3dB */ w->setup->rmsplus3_val = 1; w->checkState(); return 1; @@ -309,7 +309,7 @@ void HDSPMixerWindow::save() if (dirty) { inputs->buttons->presets->save_preset(current_preset+1); } - for (int speed = 0; speed < 2; ++speed) { + for (int speed = 0; speed < 3; ++speed) { for (int card = 0; card < 3; ++card) { for (int preset = 0; preset < 8; ++preset) { for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { @@ -399,7 +399,7 @@ void HDSPMixerWindow::load() if ((file = fopen(file_name, "r")) == NULL) { fl_alert("Error opening file %s for reading", file_name); } - for (int speed = 0; speed < 2; ++speed) { + for (int speed = 0; speed < 3; ++speed) { for (int card = 0; card < 3; ++card) { for (int preset = 0; preset < 8; ++preset) { for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { @@ -490,8 +490,11 @@ load_error: void HDSPMixerWindow::restoreDefaults(int card) { int phones; - int chnls[2]; - int maxdest[2]; + int chnls[3]; + int maxdest[3]; + int h9632_spdif_submix[3]; + int h9632_an12_submix[3]; + int num_modes = 2; int ndb = inputs->strips[0]->fader->ndb; switch (cards[card]->type) { case Multiface: @@ -515,35 +518,60 @@ void HDSPMixerWindow::restoreDefaults(int card) maxdest[1] = 7; phones = 0; break; + case H9632: + chnls[0] = 16; + chnls[1] = 12; + chnls[2] = 8; + maxdest[0] = 8; + maxdest[1] = 6; + maxdest[2] = 4; + h9632_spdif_submix[0] = 4; + h9632_spdif_submix[1] = 2; + h9632_spdif_submix[2] = 0; + h9632_an12_submix[0] = 5; + h9632_an12_submix[1] = 3; + h9632_an12_submix[2] = 1; + num_modes = 3; + phones = 0; } for (int preset = 0; preset < 8; ++preset) { - for (int speed = 0; speed < 2; ++speed) { + for (int speed = 0; speed < num_modes; ++speed) { for (int i = 0; i < chnls[speed]; i+=2) { for (int z = 0; z < maxdest[speed]; ++z) { - inputs->strips[i]->data[card][speed][preset]->fader_pos[z] = - ((preset == 6 && z == maxdest[speed]-phones-1) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; - inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = - ((preset == 6 && z == maxdest[speed]-phones-1) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; + /* Gain setup */ + if (cards[card]->type == H9632) { + inputs->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || (i == z*2 && ((preset > 1 && preset < 4) || (preset == 7))) || ((preset == 5) && (z == h9632_spdif_submix[speed]))) ? ndb : 0; + inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || (i == z*2 && ((preset > 1 && preset < 4) || (preset == 7))) || ((preset == 5) && (z == h9632_spdif_submix[speed]))) ? ndb : 0; + playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || i == z*2 || (preset == 5 && z == h9632_spdif_submix[speed])) ? ndb : 0; + playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || i == z*2 || (preset == 5 && z == h9632_spdif_submix[speed])) ? ndb : 0; + } else { + inputs->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset == 6 && z == (maxdest[speed]-phones-1)) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; + inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset == 6 && z == (maxdest[speed]-phones-1)) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; + playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset > 4 && preset < 7 && z == (maxdest[speed]-phones-1)) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; + playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset > 4 && preset < 7 && z == (maxdest[speed]-phones-1)) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; + } + /* Pan setup */ inputs->strips[i]->data[card][speed][preset]->pan_pos[z] = 0; inputs->strips[i+1]->data[card][speed][preset]->pan_pos[z] = 28*CF; - playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = - ((preset > 4 && preset < 7 && z == maxdest[speed]-phones-1) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; - playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = - ((preset > 4 && preset < 7 && z == maxdest[speed]-phones-1) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; playbacks->strips[i]->data[card][speed][preset]->pan_pos[z] = 0; playbacks->strips[i+1]->data[card][speed][preset]->pan_pos[z] = 28*CF; } - inputs->strips[i]->data[card][speed][preset]->dest = (int)floor(i/2); - inputs->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2); - playbacks->strips[i]->data[card][speed][preset]->dest = (int)floor(i/2); - playbacks->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2); - + if (i < (chnls[speed]-(cards[card]->h9632_aeb.aebo ? 2 : 0))) { + inputs->strips[i]->data[card][speed][preset]->dest = + inputs->strips[i+1]->data[card][speed][preset]->dest = + playbacks->strips[i]->data[card][speed][preset]->dest = + playbacks->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2); + } outputs->strips[i]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0; outputs->strips[i+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0; - if (preset > 4 && preset < 7) { - outputs->strips[chnls[speed]-2]->data[card][speed][preset]->fader_pos = ndb; - outputs->strips[chnls[speed]-1]->data[card][speed][preset]->fader_pos = ndb; - } if (preset == 3 || preset == 7) { inputs->strips[i]->data[card][speed][preset]->mute = 1; inputs->strips[i+1]->data[card][speed][preset]->mute = 1; @@ -553,17 +581,31 @@ void HDSPMixerWindow::restoreDefaults(int card) } } } - if (phones) { - outputs->strips[chnls[speed]]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; - outputs->strips[chnls[speed]+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; + if (cards[card]->type == H9632) { + if (preset == 1 || preset == 6) { + data[card][speed][preset]->submix_value = h9632_an12_submix[speed]; + outputs->strips[h9632_an12_submix[speed]*2]->data[card][speed][preset]->fader_pos = ndb; + outputs->strips[h9632_an12_submix[speed]*2+1]->data[card][speed][preset]->fader_pos = ndb; + } else if (preset == 5) { + data[card][speed][preset]->submix_value = h9632_spdif_submix[speed]; + outputs->strips[h9632_spdif_submix[speed]*2]->data[card][speed][preset]->fader_pos = ndb; + outputs->strips[h9632_spdif_submix[speed]*2+1]->data[card][speed][preset]->fader_pos = ndb; + } else { + data[card][speed][preset]->submix = 0; + } + } else if (preset > 4 && preset < 7) { + data[card][speed][preset]->submix_value = maxdest[speed]-phones-1; + outputs->strips[chnls[speed]-2]->data[card][speed][preset]->fader_pos = ndb; + outputs->strips[chnls[speed]-1]->data[card][speed][preset]->fader_pos = ndb; + } else { + data[card][speed][preset]->submix = 0; } if (preset == 3 || preset == 7) { data[card][speed][preset]->mute = 1; } - if (preset > 4 && preset < 7) { - data[card][speed][preset]->submix_value = (maxdest[speed]-phones-1); - } else { - data[card][speed][preset]->submix = 0; + if (phones) { + outputs->strips[chnls[speed]]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; + outputs->strips[chnls[speed]+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; } } } @@ -583,6 +625,7 @@ HDSPMixerWindow::HDSPMixerWindow(int x, int y, int w, int h, const char *label, for (int i = 0; i < 8; ++i) { data[j][0][i] = new HDSPMixerPresetData(); data[j][1][i] = new HDSPMixerPresetData(); + data[j][2][i] = new HDSPMixerPresetData(); } } buttons_removed = 0; @@ -832,8 +875,8 @@ void HDSPMixerWindow::refreshMixerStrip(int idx, int src) void HDSPMixerWindow::resetMixer() { int i, j; - for (i = 0; i < 52 ; ++i) { - for (j = 0; j < 28; ++j) { + for (i = 0; i < (cards[current_card]->playbacks_offset*2) ; ++i) { + for (j = 0; j < (cards[current_card]->playbacks_offset+cards[current_card]->lineouts); ++j) { setGain(i, j, 0); } } @@ -938,14 +981,14 @@ void HDSPMixerWindow::setMixer(int idx, int src, int dst) right_val = attenuation_r* vol * pan; muted: - snd_ctl_elem_value_set_integer(ctl, 0, src*26+cards[current_card]->channel_map[idx-1]); + snd_ctl_elem_value_set_integer(ctl, 0, src*cards[current_card]->playbacks_offset+cards[current_card]->channel_map[idx-1]); snd_ctl_elem_value_set_integer(ctl, 1, cards[current_card]->dest_map[dst]); snd_ctl_elem_value_set_integer(ctl, 2, (int)left_val); if ((err = snd_ctl_elem_write(handle, ctl)) < 0) { fprintf(stderr, "Alsa error: %s\n", snd_strerror(err)); return; } - snd_ctl_elem_value_set_integer(ctl, 0, src*26+cards[current_card]->channel_map[idx-1]); + snd_ctl_elem_value_set_integer(ctl, 0, src*cards[current_card]->playbacks_offset+cards[current_card]->channel_map[idx-1]); snd_ctl_elem_value_set_integer(ctl, 1, cards[current_card]->dest_map[dst]+1); snd_ctl_elem_value_set_integer(ctl, 2, (int)right_val); if ((err = snd_ctl_elem_write(handle, ctl)) < 0) { diff --git a/hdspmixer/src/mappings.h b/hdspmixer/src/mappings.h index 51ab1f6..9589a22 100644 --- a/hdspmixer/src/mappings.h +++ b/hdspmixer/src/mappings.h @@ -82,10 +82,6 @@ static char channel_map_h9632_ss[16] = { }; static char channel_map_h9632_ds[12] = { - 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15 -}; - -static char meter_map_h9632_ds[12] = { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 }; -- 2.47.1