Fix parsing individual bits

This commit is contained in:
Aoife
2021-04-20 00:54:15 +02:00
parent c84ebc55b5
commit 55e879929c
+19 -18
View File
@@ -40,7 +40,7 @@ function build_patch(patch) {
scale_key: getBits(patch[17], 4, 7), scale_key: getBits(patch[17], 4, 7),
scale_type: getBits(patch[17], 0, 3), scale_type: getBits(patch[17], 0, 3),
/* BYTE 18 SKIPPED */ /* BYTE 18 SKIPPED */
delay_sync: patch[19] & 0x80, delay_sync: (patch[19] & (1 << 7)) !== 0,
delay_timebase: getBits(patch[19], 0, 3), delay_timebase: getBits(patch[19], 0, 3),
delay_time: patch[20], delay_time: patch[20],
delay_depth: patch[21], delay_depth: patch[21],
@@ -53,10 +53,10 @@ function build_patch(patch) {
eq_low_freq: patch[28], eq_low_freq: patch[28],
eq_low_gain: patch[29], eq_low_gain: patch[29],
arp_tempo: (patch[30] << 8) + patch[31], arp_tempo: (patch[30] << 8) + patch[31],
arp_on_off: patch[32] & 0x80, arp_on_off: (patch[32] & (1 << 7)) !== 0,
arp_latch: patch[32] & 0x40, arp_latch: (patch[32] & (1 << 6)) !== 0,
arp_target: getBits(patch[32], 4, 5), arp_target: getBits(patch[32], 4, 5),
arp_key_sync: patch[32] & 0x01, arp_key_sync: (patch[32] & (1 << 0)) !== 0,
arp_type: getBits(patch[33], 0, 3), arp_type: getBits(patch[33], 0, 3),
arp_range: getBits(patch[33], 4, 7), arp_range: getBits(patch[33], 4, 7),
arp_gate_time: patch[34], arp_gate_time: patch[34],
@@ -67,12 +67,13 @@ function build_patch(patch) {
} }
function build_timbre(num, timbre) { function build_timbre(num, timbre) {
console.log(timbre[0]);
return { return {
[`t${num}_midi_channel`]: timbre[0], [`t${num}_midi_channel`]: timbre[0],
[`t${num}_assign_mode`]: getBits(timbre[1], 6, 7), [`t${num}_assign_mode`]: getBits(timbre[1], 6, 7),
[`t${num}_eg_2_reset`]: timbre[1] & 0x20, [`t${num}_eg_2_reset`]: (timbre[1] & (1 << 5)) !== 0,
[`t${num}_eg_1_reset`]: timbre[1] & 0x10, [`t${num}_eg_1_reset`]: (timbre[1] & (1 << 4)) !== 0,
[`t${num}_trigger_mode`]: timbre[1] & 0x08, [`t${num}_trigger_mode`]: (timbre[1] & (1 << 3)) !== 0,
[`t${num}_key_priority`]: getBits(timbre[1], 0, 1), [`t${num}_key_priority`]: getBits(timbre[1], 0, 1),
[`t${num}_unison_detune`]: timbre[2], [`t${num}_unison_detune`]: timbre[2],
[`t${num}_tune`]: timbre[3], [`t${num}_tune`]: timbre[3],
@@ -100,8 +101,8 @@ function build_timbre(num, timbre) {
[`t${num}_filter_key_track`]: timbre[24], [`t${num}_filter_key_track`]: timbre[24],
[`t${num}_amp_level`]: timbre[25], [`t${num}_amp_level`]: timbre[25],
[`t${num}_amp_panpot`]: timbre[26], [`t${num}_amp_panpot`]: timbre[26],
[`t${num}_amp_switch`]: timbre[27] & 0x40, [`t${num}_amp_switch`]: (timbre[27] & (1 << 6)) !== 0,
[`t${num}_amp_distortion`]: timbre[27] & 0x01, [`t${num}_amp_distortion`]: (timbre[27] & (1 << 0)) !== 0,
[`t${num}_amp_vel_sense`]: timbre[28], [`t${num}_amp_vel_sense`]: timbre[28],
[`t${num}_amp_key_track`]: timbre[29], [`t${num}_amp_key_track`]: timbre[29],
[`t${num}_eg_1_attack`]: timbre[30], [`t${num}_eg_1_attack`]: timbre[30],
@@ -115,12 +116,12 @@ function build_timbre(num, timbre) {
[`t${num}_lfo_1_key_sync`]: getBits(timbre[38], 4, 5), [`t${num}_lfo_1_key_sync`]: getBits(timbre[38], 4, 5),
[`t${num}_lfo_1_wave`]: getBits(timbre[38], 0, 1), [`t${num}_lfo_1_wave`]: getBits(timbre[38], 0, 1),
[`t${num}_lfo_1_frequency`]: timbre[39], [`t${num}_lfo_1_frequency`]: timbre[39],
[`t${num}_lfo_1_tempo_sync`]: timbre[40] & 0x80, [`t${num}_lfo_1_tempo_sync`]: (timbre[40] & (1 << 7)) !== 0,
[`t${num}_lfo_1_sync_note`]: getBits(timbre[40], 0, 4), [`t${num}_lfo_1_sync_note`]: getBits(timbre[40], 0, 4),
[`t${num}_lfo_2_key_sync`]: getBits(timbre[41], 4, 5), [`t${num}_lfo_2_key_sync`]: getBits(timbre[41], 4, 5),
[`t${num}_lfo_2_wave`]: getBits(timbre[41], 0, 1), [`t${num}_lfo_2_wave`]: getBits(timbre[41], 0, 1),
[`t${num}_lfo_2_frequency`]: timbre[42], [`t${num}_lfo_2_frequency`]: timbre[42],
[`t${num}_lfo_2_tempo_sync`]: timbre[43] & 0x80, [`t${num}_lfo_2_tempo_sync`]: (timbre[43] & (1 << 7)) !== 0,
[`t${num}_lfo_2_sync_note`]: getBits(timbre[43], 0, 4), [`t${num}_lfo_2_sync_note`]: getBits(timbre[43], 0, 4),
[`t${num}_patch_1_dest`]: getBits(timbre[44], 4, 7), [`t${num}_patch_1_dest`]: getBits(timbre[44], 4, 7),
[`t${num}_patch_1_src`]: getBits(timbre[44], 0, 3), [`t${num}_patch_1_src`]: getBits(timbre[44], 0, 3),
@@ -141,9 +142,9 @@ function build_vocoder(vocoder) {
return { return {
v_midi_channel: vocoder[0], v_midi_channel: vocoder[0],
v_assign_mode: getBits(vocoder[1], 6, 7), v_assign_mode: getBits(vocoder[1], 6, 7),
v_eg_2_reset: vocoder[1] & 0x20, v_eg_2_reset: (vocoder[1] & (1 << 5)) !== 0,
v_eg_1_reset: vocoder[1] & 0x10, v_eg_1_reset: (vocoder[1] & (1 << 4)) !== 0,
v_trigger_mode: vocoder[1] & 0x08, v_trigger_mode: (vocoder[1] & (1 << 3)) !== 0,
v_key_priority: getBits(vocoder[1], 0, 1), v_key_priority: getBits(vocoder[1], 0, 1),
v_unison_detune: vocoder[2], v_unison_detune: vocoder[2],
v_tune: vocoder[3], v_tune: vocoder[3],
@@ -155,7 +156,7 @@ function build_vocoder(vocoder) {
v_osc_ctrl_2: vocoder[9], v_osc_ctrl_2: vocoder[9],
v_osc_dgws: vocoder[10], v_osc_dgws: vocoder[10],
/* BYTE 11 SKIPPED */ /* BYTE 11 SKIPPED */
v_audio_in_hpf_gate: vocoder[12] & 0x01, v_audio_in_hpf_gate: (vocoder[12] & (1 << 0)) !== 0,
/* BYTE 13 SKIPPED */ /* BYTE 13 SKIPPED */
v_portamento_time: getBits(vocoder[14], 0, 6), v_portamento_time: getBits(vocoder[14], 0, 6),
v_osc_level: vocoder[15], v_osc_level: vocoder[15],
@@ -172,7 +173,7 @@ function build_vocoder(vocoder) {
v_filter_e_f_sense: vocoder[26], v_filter_e_f_sense: vocoder[26],
v_amp_level: vocoder[27], v_amp_level: vocoder[27],
v_amp_direct_level: vocoder[28], v_amp_direct_level: vocoder[28],
v_amp_distortion: vocoder[29] & 0x01, v_amp_distortion: (vocoder[29] & (1 << 0)) !== 0,
v_amp_vel_sense: vocoder[30], v_amp_vel_sense: vocoder[30],
v_amp_key_track: vocoder[31], v_amp_key_track: vocoder[31],
v_eg_1_attack: vocoder[32], v_eg_1_attack: vocoder[32],
@@ -186,12 +187,12 @@ function build_vocoder(vocoder) {
v_lfo_1_key_sync: getBits(vocoder[40], 4, 5), v_lfo_1_key_sync: getBits(vocoder[40], 4, 5),
v_lfo_1_wave: getBits(vocoder[40], 0, 1), v_lfo_1_wave: getBits(vocoder[40], 0, 1),
v_lfo_1_frequency: vocoder[41], v_lfo_1_frequency: vocoder[41],
v_lfo_1_tempo_sync: vocoder[42] & 0x80, v_lfo_1_tempo_sync: (vocoder[42] & (1 << 7)) !== 0,
v_lfo_1_sync_note: getBits(vocoder[42], 0, 4), v_lfo_1_sync_note: getBits(vocoder[42], 0, 4),
v_lfo_2_key_sync: getBits(vocoder[43], 4, 5), v_lfo_2_key_sync: getBits(vocoder[43], 4, 5),
v_lfo_2_wave: getBits(vocoder[43], 0, 1), v_lfo_2_wave: getBits(vocoder[43], 0, 1),
v_lfo_2_frequency: vocoder[44], v_lfo_2_frequency: vocoder[44],
v_lfo_2_tempo_sync: vocoder[45] & 0x80, v_lfo_2_tempo_sync: (vocoder[45] & (1 << 7)) !== 0,
v_lfo_2_sync_note: getBits(vocoder[45], 0, 4), v_lfo_2_sync_note: getBits(vocoder[45], 0, 4),
v_level_1: vocoder[46], v_level_1: vocoder[46],
v_level_2: vocoder[47], v_level_2: vocoder[47],