summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStepan Moskovchenko <stevenm@rockbox.org>2005-08-07 22:20:40 +0000
committerStepan Moskovchenko <stevenm@rockbox.org>2005-08-07 22:20:40 +0000
commitfb3e9a4073c647746eb02e355e2263d01d1b130c (patch)
tree859fc2269faef6ffdb544fe6037b69acc02e6f0c
parent4a271b6bc9cb1b873829f2a5dac2a2d0394f0b6c (diff)
downloadrockbox-fb3e9a4073c647746eb02e355e2263d01d1b130c.tar.gz
rockbox-fb3e9a4073c647746eb02e355e2263d01d1b130c.tar.bz2
rockbox-fb3e9a4073c647746eb02e355e2263d01d1b130c.zip
Fix error/warning, change pitch bend to 9 bits
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7288 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/SOURCES1
-rw-r--r--apps/plugins/midi/sequencer.c16
-rw-r--r--apps/plugins/midi/synth.c12
-rw-r--r--uisimulator/x11/sound.c2
4 files changed, 18 insertions, 13 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index 50cebb9f87..4810553d8d 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -69,6 +69,7 @@ alpine_cdc.c
#if CONFIG_HWCODEC == MASNONE /* software codec platforms */
iriverify.c
wav2wv.c
+midi2wav.c
#else
splitedit.c
metronome.c
diff --git a/apps/plugins/midi/sequencer.c b/apps/plugins/midi/sequencer.c
index 4781963645..b31b4b419b 100644
--- a/apps/plugins/midi/sequencer.c
+++ b/apps/plugins/midi/sequencer.c
@@ -49,6 +49,7 @@ void setPatch(int ch, int pat)
* (When typed into Matlab)
* 16 bit pitch bend table
*/
+/*
long pitchTbl[]=
{
58386,58491,58597,58703,58809,58915,59022,59128,59235,59342,59449,59557,59664,59772,59880,59988,60097,60205,
@@ -60,21 +61,24 @@ long pitchTbl[]=
70953,71082,71210,71339,71468,71597,71726,71856,71985,72115,72246,72376,72507,72638,72769,72901,73032,73164,
73297,73429
};
-
+*/
+long pitchTbl[]={
+58386,58412,58439,58465,58491,58518,58544,58571,58597,58624,58650,58676,58703,58729,58756,58782,58809,58836,58862,58889,58915,58942,58968,58995,59022,59048,59075,59102,59128,59155,59182,59208,59235,59262,59289,59315,59342,59369,59396,59423,59449,59476,59503,59530,59557,59584,59611,59638,59664,59691,59718,59745,59772,59799,59826,59853,59880,59907,59934,59961,59988,60015,60043,60070,60097,60124,60151,60178,60205,60233,60260,60287,60314,60341,60369,60396,60423,60450,60478,60505,60532,60560,60587,60614,60642,60669,60696,60724,60751,60779,60806,60833,60861,60888,60916,60943,60971,60998,61026,61054,61081,61109,61136,61164,61191,61219,61247,61274,61302,61330,61357,61385,61413,61440,61468,61496,61524,61551,61579,61607,61635,61663,61690,61718,61746,61774,61802,61830,61858,61886,61914,61942,61970,61997,62025,62053,62081,62109,62138,62166,62194,62222,62250,62278,62306,62334,62362,62390,62419,62447,62475,62503,62531,62560,62588,62616,62644,62673,62701,62729,62757,62786,62814,62843,62871,62899,62928,62956,62984,63013,63041,63070,63098,63127,63155,63184,63212,63241,63269,63298,63326,63355,63384,63412,63441,63470,63498,63527,63555,63584,63613,63642,63670,63699,63728,63757,63785,63814,63843,63872,63901,63929,63958,63987,64016,64045,64074,64103,64132,64161,64190,64219,64248,64277,64306,64335,64364,64393,64422,64451,64480,64509,64538,64567,64596,64626,64655,64684,64713,64742,64772,64801,64830,64859,64889,64918,64947,64976,65006,65035,65065,65094,65123,65153,65182,65211,65241,65270,65300,65329,65359,65388,65418,65447,65477,65506,65536,65566,65595,65625,65654,65684,65714,65743,65773,65803,65832,65862,65892,65922,65951,65981,66011,66041,66071,66100,66130,66160,66190,66220,66250,66280,66309,66339,66369,66399,66429,66459,66489,66519,66549,66579,66609,66639,66670,66700,66730,66760,66790,66820,66850,66880,66911,66941,66971,67001,67032,67062,67092,67122,67153,67183,67213,67244,67274,67304,67335,67365,67395,67426,67456,67487,67517,67548,67578,67609,67639,67670,67700,67731,67761,67792,67823,67853,67884,67915,67945,67976,68007,68037,68068,68099,68129,68160,68191,68222,68252,68283,68314,68345,68376,68407,68438,68468,68499,68530,68561,68592,68623,68654,68685,68716,68747,68778,68809,68840,68871,68902,68933,68965,68996,69027,69058,69089,69120,69152,69183,69214,69245,69276,69308,69339,69370,69402,69433,69464,69496,69527,69558,69590,69621,69653,69684,69716,69747,69778,69810,69841,69873,69905,69936,69968,69999,70031,70062,70094,70126,70157,70189,70221,70252,70284,70316,70348,70379,70411,70443,70475,70507,70538,70570,70602,70634,70666,70698,70730,70762,70793,70825,70857,70889,70921,70953,70985,71017,71049,71082,71114,71146,71178,71210,71242,71274,71306,71339,71371,71403,71435,71468,71500,71532,71564,71597,71629,71661,71694,71726,71758,71791,71823,71856,71888,71920,71953,71985,72018,72050,72083,72115,72148,72181,72213,72246,72278,72311,72344,72376,72409,72442,72474,72507,72540,72573,72605,72638,72671,72704,72736,72769,72802,72835,72868,72901,72934,72967,72999,73032,73065,73098,73131,73164,73197,73230,73264,73297,73330,73363,73396,73429,73462,73495,73528
+};
void findDelta(struct SynthObject * so, int ch, int note)
{
struct GWaveform * wf = patchSet[chPat[ch]]->waveforms[patchSet[chPat[ch]]->noteTable[note]];
- so->wf=wf;
+ so->wf=wf; // \|/ was 10
so->delta = (((gustable[note]<<10) / (wf->rootFreq)) * wf->sampRate / (SAMPLE_RATE));
- so->delta = (so->delta * pitchTbl[chPW[ch]])>> 16;
+ // so->delta = (so->delta * pitchTbl[chPW[ch]])>> 16;
}
-void setPW(int ch, int msb)
+void setPW(int ch, int msb, int lsb)
{
printf("\npitchw[%d] %d ==> %d", ch, chPW[ch], msb);
- chPW[ch] = msb;
+ chPW[ch] = msb<<2|lsb>>5;
int a=0;
for(a = 0; a<MAX_VOICES; a++)
@@ -208,7 +212,7 @@ void sendEvent(struct Event * ev)
if(((ev->status & 0xF0) == MIDI_PITCHW))
{
- setPW((ev->status & 0xF), ev->d2);
+ setPW((ev->status & 0xF), ev->d2, ev->d1);
return;
}
diff --git a/apps/plugins/midi/synth.c b/apps/plugins/midi/synth.c
index c210f046d3..42ca9ddaf6 100644
--- a/apps/plugins/midi/synth.c
+++ b/apps/plugins/midi/synth.c
@@ -67,7 +67,7 @@ int initSynth(struct MIDIfile * mf, char * filename, char * drumConfig)
chPanLeft[a]=64; /* Center */
chPanRight[a]=64; /* Center */
chPat[a]=0; /* Ac Gr Piano */
- chPW[a]=64; /* .. not .. bent ? */
+ chPW[a]=256; /* .. not .. bent ? */
}
for(a=0; a<128; a++)
{
@@ -281,7 +281,7 @@ inline signed short int synthVoice(void)
so->cp += so->delta;
}
- cpShifted = so->cp >> 10;
+ cpShifted = so->cp >> 10; //Was 10
if( (cpShifted > (wf->numSamples) && (so->state != STATE_RAMPDOWN)))
{
@@ -295,7 +295,7 @@ inline signed short int synthVoice(void)
{
if(wf->mode & LOOP_REVERSE)
{
- so->cp = (wf->endLoop)<<10;
+ so->cp = (wf->endLoop)<<10; //Was 10
cpShifted = wf->endLoop;
s2=getSample((cpShifted));
} else
@@ -310,7 +310,7 @@ inline signed short int synthVoice(void)
so->loopState = STATE_LOOPING;
if((wf->mode & (24)) == 0)
{
- so->cp = (wf->startLoop)<<10;
+ so->cp = (wf->startLoop)<<10; //Was 10
cpShifted = wf->startLoop;
s2=getSample((cpShifted));
} else
@@ -321,8 +321,8 @@ inline signed short int synthVoice(void)
}
/* Better, working, linear interpolation */
- s1=getSample((cpShifted));
- s = s1 + ((signed)((s2 - s1) * (so->cp & 1023))>>10);
+ s1=getSample((cpShifted)); //\|/ Was 1023)) >> 10
+ s = s1 + ((signed)((s2 - s1) * (so->cp & 1023))>>10); //Was 10
/* ADSR COMMENT WOULD GO FROM HERE.........*/
diff --git a/uisimulator/x11/sound.c b/uisimulator/x11/sound.c
index c21615b46d..b60a9b5a86 100644
--- a/uisimulator/x11/sound.c
+++ b/uisimulator/x11/sound.c
@@ -39,7 +39,7 @@ int sim_sound_init(void)
int channels;
int rate;
- fd = open("/dev/dsp", O_WRONLY);
+ fd = open("/dev/dsp1", O_WRONLY);
if(-1 == fd)
return 1;