marcelbonnet / QStage

QStage sends Roland XP-30 SYSEX MIDI Messages. Also loads set list and chords ordered by gig.
0 stars 0 forks source link

[PATCH] Erro na seleção de combos e spinners de Tones #25

Closed marcelbonnet closed 5 years ago

marcelbonnet commented 5 years ago

Testando ao carregar PRB-28 ou seu clone personalizado 1551 :

PRB-28 como deve ser: LFO-PITCH-NOMETA

marcelbonnet commented 5 years ago

A seleção da Waveform na combo é feita por

for(int k=0; k<waveIdList->at(toneLoop)->count(); k++){ Waveform *w = waveIdList->at(toneLoop)->itemData(k).value<Waveform*>(); if(w->groupType == wgt && w->groupId == wgid && w->number == wnum){ waveIdList->at(toneLoop)->setCurrentIndex(k);

Com relação ao TEXTO da Combo, deveria selecionar k+1. Mas quando enviado ao Teclado, ele recebe a Waveform + 1, que não corresponde ao texto da combo.

Talvez o erro esteja na lista de Patches no banco de dados.

Aqui parece correto: ele envia o Waveform selecionado:

`QList PatchUI::montarListaDadosTone(int tone){ QList dados = new QList();

Waveform *w = waveIdList->at(tone)->currentData().value<Waveform*>();
int waveNumber2 = w->number & 0xF;
int waveNumber1 = (w->number >> 4) & 0xF;

dados->append(toneSwitchList->at(tone)->isChecked()? 1 : 0);
dados->append(w->groupType);
dados->append(w->groupId);
dados->append(waveNumber1);
dados->append(waveNumber2);`
marcelbonnet commented 5 years ago

Tabelas WAVEFORMS e PATCHES do SQLite estão com os valores corretos

TONES 2 e 4 do PRB-28 são P5 Saw A e MC-202 Bs A

Como devem ser gravados no BD:

Screenshot-2019-10-16-10-03-20

No banco de dados estão gravados CORRETAMENTE. No banco, a coluna NUMBER está indexada em ZERO como definido na tabela acima da pág 196 do Manual:

sqlite> SELECT * FROM waveforms WHERE nome = 'P5 Saw A' OR nome = 'MC-202 Bs A'; id = 153 nome = MC-202 Bs A groupType = 0 groupId = 1 waveGroup = INT-A oneShot = 0 number = 152

id = 288 nome = P5 Saw A groupType = 0 groupId = 2 waveGroup = INT-B oneShot = 0 number = 32

Os NUMBERs acima em hexadecimal:

printf "%X %X" 152 32 98 20

Devem ser salvos na forma:

98 = 9 8 20 = 2 0

Devendo resultar, nos bytes:

tone TONE_SW WAVE_GROUP_TYPE WAVE_GROUP_ID WAVE_NUMBER1 WAVE_NUMBER2
tone1 1 0 2 2 0
tone3 1 0 1 9 8

Configuração dos patches envolvidos (PRB-28 e seu clone personalizado 1551)

sqlite> .mode line

sqlite> SELECT patch_id, name, tone1, tone3 FROM patches WHERE name LIKE '%101%';
patch_id = 292 name = 101 Bass
tone1 = 1 0 2 2 0 1 0 0 0 0 0 0 1 127 0 127 0 1 1 1 1 9 85 0 63 0 63 0 63 9 75 0 63 0 63 0 63 0 63 3 83 0 63 0 63 0 1 94 2 0 0 0 0 0 0 71 2 0 0 0 0 36 50 10 12 12 93 7 7 7 3 18 0 0 126 63 63 63 63 63 1 22 10 0 50 99 0 93 7 7 7 0 7 17 122 127 67 70 0 63 63 107 0 60 7 0 59 7 7 7 0 40 100 1 127 127 127 63 63 64 7 0 64 63 63 1 127 0 0 tone3 = 1 0 1 9 8 3 0 0 0 0 0 0 1 127 0 127 0 1 1 1 1 9 85 0 63 0 63 0 63 9 75 0 63 0 63 0 63 0 63 3 83 0 63 0 63 0 1 94 2 0 0 0 0 0 0 71 2 0 0 0 0 36 50 10 12 12 93 7 7 7 3 18 0 0 126 63 63 63 63 63 1 32 10 0 50 90 0 93 7 7 7 0 10 127 122 127 107 30 0 63 63 127 0 60 7 0 50 7 7 7 0 40 100 1 127 127 127 63 63 64 7 0 64 63 63 1 127 0 0

patch_id = 1551 name = RPM 101 Bass tone1 = 1 0 2 2 0 1 0 1 1 0 0 0 1 127 0 127 0 1 1 1 1 9 85 0 63 0 63 0 63 9 75 0 63 0 63 0 63 0 63 3 83 0 63 0 63 0 1 94 2 0 0 0 0 0 0 71 2 0 0 0 0 36 50 10 12 12 93 7 7 7 3 18 0 0 126 63 63 63 63 63 1 22 10 0 50 99 0 93 7 7 7 0 7 17 122 127 67 70 0 63 63 107 0 60 7 0 59 7 7 7 0 40 100 1 127 127 127 63 63 64 7 0 64 63 63 1 127 0 0 tone3 = 1 0 1 9 8 3 0 1 1 0 0 0 1 127 0 127 0 1 1 1 1 9 85 0 63 0 63 0 63 9 75 0 63 0 63 0 63 0 63 3 83 0 63 0 63 0 1 94 2 0 0 0 0 0 0 71 2 0 0 0 0 36 50 10 12 12 93 7 7 7 3 18 0 0 126 63 63 63 63 63 1 32 10 0 50 90 0 93 7 7 7 0 10 127 122 127 107 30 0 63 63 127 0 60 7 0 50 7 7 7 0 40 100 1 127 127 127 63 63 64 7 0 64 63 63 1 127 0 0

marcelbonnet commented 5 years ago

Carregando PATCHES e Obtendo a WAVEFORM Correspondente

Ao carregar WAVE NUMBER 98, ela deve ser lida como INTEIRO 152 [OK] Ao carregar WAVE NUMBER 20, ela deve ser lida como INTEIRO 32 [OK]

A falha está na view: deveria exibir NUMBER+1 . Pois a Waveform selecionada no Banco e na Combo está correta (mesmo group type/id e number em relação ao banco de dados de patches e waveforms). A String correspondente ao nome da Waveform está correta também. Só um erro de exibição do NUMBER, que na view deve ser indexado em 1 para corresponder ao Number exibido no menu do Teclado em PATCH/WAVE .