2
0
Fork 0

Improve instrument ripper C++ output and add some instruments from Dune 2.

This commit is contained in:
bruce 2013-09-15 00:47:55 +08:00
parent fd1b40182a
commit a2c16c0aec
2 changed files with 83 additions and 15 deletions

View file

@ -105,6 +105,7 @@ JuceOplvstiAudioProcessor::JuceOplvstiAudioProcessor()
void JuceOplvstiAudioProcessor::initPrograms() void JuceOplvstiAudioProcessor::initPrograms()
{ {
// these ones from the Syndicate in-game music
const float i_params_0[] = { const float i_params_0[] = {
0.000000f, 0.660000f, // waveforms 0.000000f, 0.660000f, // waveforms
0.066667f, 0.133333f, // frq multipliers 0.066667f, 0.133333f, // frq multipliers
@ -209,6 +210,68 @@ void JuceOplvstiAudioProcessor::initPrograms()
}; };
std::vector<float> v_i_params_97283 (i_params_97283, i_params_97283 + sizeof(i_params_97283) / sizeof(float)); std::vector<float> v_i_params_97283 (i_params_97283, i_params_97283 + sizeof(i_params_97283) / sizeof(float));
programs["Instr 97283"] = std::vector<float>(v_i_params_97283); programs["Instr 97283"] = std::vector<float>(v_i_params_97283);
// The start of the Dune 2 introduction
const float i_params_3136[] = {
0.000000f, 0.660000f, // waveforms
0.133333f, 0.133333f, // frq multipliers
0.000000f, 0.333333f, // attenuation
0.0f, 0.0f, 0.0f, 0.0f, // tre / vib / sus / ks
0.0f, 0.0f, 0.0f, 0.0f, // tre / vib / sus / ks
0.000000f, 0.330000f, // KSR/8ve
0.000000f, // algorithm
0.571429f, // feedback
1.0f, 0.1f, 0.1f, 0.3f, // adsr
1.0f, 0.4f, 0.2f, 0.3f, // adsr
};
std::vector<float> v_i_params_3136 (i_params_3136, i_params_3136 + sizeof(i_params_3136) / sizeof(float));
programs["Instr 3136"] = std::vector<float>(v_i_params_3136);
const float i_params_7254[] = {
0.000000f, 0.330000f, // waveforms
0.066667f, 0.066667f, // frq multipliers
0.253968f, 0.476190f, // attenuation
1.0f, 1.0f, 1.0f, 1.0f, // tre / vib / sus / ks
1.0f, 1.0f, 0.0f, 0.0f, // tre / vib / sus / ks
0.000000f, 0.330000f, // KSR/8ve
0.000000f, // algorithm
0.571429f, // feedback
0.1f, 0.1f, 0.1f, 0.1f, // adsr
0.2f, 0.1f, 0.1f, 0.0f, // adsr
};
std::vector<float> v_i_params_7254 (i_params_7254, i_params_7254 + sizeof(i_params_7254) / sizeof(float));
programs["Instr 7254"] = std::vector<float>(v_i_params_7254);
const float i_params_20108[] = {
0.000000f, 0.000000f, // waveforms
0.400000f, 0.066667f, // frq multipliers
0.238095f, 0.000000f, // attenuation
1.0f, 1.0f, 1.0f, 0.0f, // tre / vib / sus / ks
0.0f, 1.0f, 1.0f, 0.0f, // tre / vib / sus / ks
0.000000f, 0.330000f, // KSR/8ve
0.000000f, // algorithm
0.000000f, // feedback
0.1f, 0.1f, 0.1f, 0.1f, // adsr
0.1f, 0.1f, 0.1f, 0.1f, // adsr
};
std::vector<float> v_i_params_20108 (i_params_20108, i_params_20108 + sizeof(i_params_20108) / sizeof(float));
programs["Instr 20108"] = std::vector<float>(v_i_params_20108);
const float i_params_27550[] = {
1.000000f, 0.000000f, // waveforms
0.000000f, 0.066667f, // frq multipliers
0.238095f, 0.793651f, // attenuation
0.0f, 1.0f, 0.0f, 0.0f, // tre / vib / sus / ks
0.0f, 0.0f, 1.0f, 1.0f, // tre / vib / sus / ks
0.000000f, 0.000000f, // KSR/8ve
0.000000f, // algorithm
0.571429f, // feedback
1.0f, 0.0f, 1.0f, 1.0f, // adsr
0.9f, 0.1f, 0.0f, 1.0f, // adsr
};
std::vector<float> v_i_params_27550 (i_params_27550, i_params_27550 + sizeof(i_params_27550) / sizeof(float));
programs["Instr 27550"] = std::vector<float>(v_i_params_27550);
} }
JuceOplvstiAudioProcessor::~JuceOplvstiAudioProcessor() JuceOplvstiAudioProcessor::~JuceOplvstiAudioProcessor()

View file

@ -305,23 +305,28 @@ def output_instrument_vst_program(json_i, ts):
try: try:
d = json.loads(json_i) d = json.loads(json_i)
m=d[0]; c=d[1] m=d[0]; c=d[1]
lines = [
' const float i_params_%d[] = {' % ts,
' %.6ff, %.6ff, // waveforms' % (W2F[c['wav']], W2F[m['wav']]),
' %.6ff, %.6ff, // frq multipliers' % (m2f(c['fm_mult']), m2f(m['fm_mult'])),
' %.6ff, %.6ff, // attenuation' % (a2f(c['db']), a2f(m['db'])),
' %.1ff, %.1ff, %.1ff, %.1ff, // tre / vib / sus / ks' % tuple([b2f(c[x]) for x in ['tre', 'vib', 'sus', 'ksr']]),
' %.1ff, %.1ff, %.1ff, %.1ff, // tre / vib / sus / ks' % tuple([b2f(m[x]) for x in ['tre', 'vib', 'sus', 'ksr']]),
' %.6ff, %.6ff, // KSR/8ve' % (D2F[c['db_oct']], D2F[m['db_oct']]),
' %.6ff, // algorithm' % (1.0 if 'ADD'==d[2]['alg'] else 0.0),
' %.6ff, // feedback' % (float(d[2]['feedback'])/7.0),
' %.1ff, %.1ff, %.1ff, %.1ff, // adsr' % tuple([e2f(c[x]) for x in ['a', 'd', 's', 'r']]),
' %.1ff, %.1ff, %.1ff, %.1ff, // adsr' % tuple([e2f(m[x]) for x in ['a', 'd', 's', 'r']]),
' };',
' std::vector<float> v_i_params_%d (i_params_%d, i_params_%d + sizeof(i_params_%d) / sizeof(float));' % (ts,ts,ts,ts),
' programs["Instr %d"] = std::vector<float>(v_i_params_%d);' % (ts, ts),
]
print print
print ' const float i_params_%d[] = {' % ts print '\n'.join(lines)
print ' %.6ff, %.6ff, // waveforms' % (W2F[c['wav']], W2F[m['wav']])
print ' %.6ff, %.6ff, // frq multipliers' % (m2f(c['fm_mult']), m2f(m['fm_mult']))
print ' %.6ff, %.6ff, // attenuation' % (a2f(c['db']), a2f(m['db']))
print ' %.1ff, %.1ff, %.1ff, %.1ff, // tre / vib / sus / ks' % tuple([b2f(c[x]) for x in ['tre', 'vib', 'sus', 'ksr']])
print ' %.1ff, %.1ff, %.1ff, %.1ff, // tre / vib / sus / ks' % tuple([b2f(m[x]) for x in ['tre', 'vib', 'sus', 'ksr']])
print ' %.6ff, %.6ff, // KSR/8ve' % (D2F[c['db_oct']], D2F[m['db_oct']])
print ' %.6ff, // algorithm' % (1.0 if 'ADD'==d[2]['alg'] else 0.0)
print ' %.6ff, // feedback' % (float(d[2]['feedback'])/7.0)
print ' %.1ff, %.1ff, %.1ff, %.1ff, // adsr' % tuple([e2f(c[x]) for x in ['a', 'd', 's', 'r']])
print ' %.1ff, %.1ff, %.1ff, %.1ff, // adsr' % tuple([e2f(m[x]) for x in ['a', 'd', 's', 'r']])
print ' };'
print ' std::vector<float> v_i_params_%d (i_params_%d, i_params_%d + sizeof(i_params_%d) / sizeof(float));' % (ts,ts,ts,ts)
print ' programs["Instr %d"] = std::vector<float>(v_i_params_%d);' % (ts, ts)
except KeyError: except KeyError:
print 'incomplete instrument?' pass
#print
#print '// incomplete instrument..'
def main(argv): def main(argv):
events = parse_opldump(sys.stdin) events = parse_opldump(sys.stdin)