Commit graph

39 commits

Author SHA1 Message Date
Frank Gevaerts
afd482f51b midi: Recalculate (and rename) the note frequency table.
gustable[] contained plain note frequencies in milliHertz, but
was named and documented to appear like a table of magic numbers.
The values also seemed to be slightly inaccurate (up to about
0.01Hz, so probably irrelevant).

This changes the name to freqtable to make the purpose clearer, and
uses slightly better values.

Change-Id: I6b568d834c8c2c92161bed5290572a29733e28dc
2017-01-06 19:29:00 +01:00
Bertrik Sikken
8a87b663ed midi plugin: make local functions static where possible
Change-Id: I702755529f98015586b5b9592ced75cf7591880c
2012-02-18 12:06:48 +01:00
Rafaël Carré
791d425ff1 plugins (doom, midi, rockboy): don't use non-static inline
some functions can be static -> static inline
some functions are external and can't be inlined -> remove inline

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28019 a1c6a512-1295-4272-9138-f99709370657
2010-09-07 14:09:11 +00:00
Michael Chicoine
e024198305 Replace remaining printf in midi plugin (fix yellow/red)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27563 a1c6a512-1295-4272-9138-f99709370657
2010-07-25 19:47:07 +00:00
Nils Wallménius
1adc869d9c midi: yield more, fixes flickering backlight fade on some targets while playing midi. Some coding style clean up, it's a little better but still a mess
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20562 a1c6a512-1295-4272-9138-f99709370657
2009-03-28 11:27:56 +00:00
Andrew Mahone
23d9812273 loader-initialized global plugin API:
struct plugin_api *rb is declared in PLUGIN_HEADER, and pointed to by
__header.api

the loader uses this pointer to initialize rb before calling entry_point

entry_point is no longer passed a pointer to the plugin API

all plugins, and pluginlib functions, are modified to refer to the
global rb

pluginlib functions which only served to copy the API pointer are
removed

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19776 a1c6a512-1295-4272-9138-f99709370657
2009-01-16 10:34:40 +00:00
Daniel Stenberg
2acc0ac542 Updated our source code header to explicitly mention that we are GPL v2 or
later. We still need to hunt down snippets used that are not. 1324 modified
files...
http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
2008-06-28 18:10:04 +00:00
Stepan Moskovchenko
7f1fbe4af2 MIDI: Increase percision of synthesizer by a factor of 4 - makes certain parts (guitar bends, mostly)
sound more natural. Also, completely rearrange the order of operations in the delta computation. Had to 
use long longs. Probably not a good idea for speed, but the order can be optimized more later.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15652 a1c6a512-1295-4272-9138-f99709370657
2007-11-17 06:39:02 +00:00
Nils Wallménius
65331f1749 Revert some changes that broke looping in midiplayer
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15631 a1c6a512-1295-4272-9138-f99709370657
2007-11-15 21:20:29 +00:00
Nils Wallménius
0fd4c2e455 Rearrange logic in the synthVoice loop to do less tests and remove need of a struct member for a small speedup, move some memory lookups out of the loop for a small speedup, further cosmetic changes to the synthVoice function. Change isUsed to a bool for clearer logic and also a tiny speedup
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15563 a1c6a512-1295-4272-9138-f99709370657
2007-11-11 01:02:45 +00:00
Stepan Moskovchenko
bdfe87c0f1 MIDI: Make seeking neater by moving it into another file. Will be more useful later.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15467 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 05:35:10 +00:00
Stéphane Doyon
775279b63e Fix warnings.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15421 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 04:59:24 +00:00
Stepan Moskovchenko
cd963d84ca MIDI: Allow seeking forward and backward using the left/right keys. Currently seeks in 5 second
increments, but this can be set to any amount. Also implemented a counter for playing time, which can 
pretty easily be used to determine the length of the file, in seconds, before playing it. The time 
isn't displayed anywhere right now, but all this can be useful if this thing is turned into a codec, or 
at least gets a nice UI.



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15418 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 04:09:38 +00:00
Stepan Moskovchenko
47d8323deb MIDI: Fix ringing/beeks in music caused by improper parsing of some pitch bend events.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15252 a1c6a512-1295-4272-9138-f99709370657
2007-10-21 19:47:33 +00:00
Nils Wallménius
ab5a38db92 Clean out an unused struct member from the synthObject struct
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15189 a1c6a512-1295-4272-9138-f99709370657
2007-10-18 13:43:13 +00:00
Stepan Moskovchenko
c3584c0d63 MIDI: Scale each instrument by a calibration value, since not all patches are at the same base volume.
This should make some files sound more natural, without some instruments overpowering others. 
Ultimately, these values need to be moved to the config file, and the table should probably be put in 
IRAM or something.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15161 a1c6a512-1295-4272-9138-f99709370657
2007-10-17 05:06:57 +00:00
Stepan Moskovchenko
d33645ba13 MIDI: Optimize the new pitch bending code for a small speedup.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15160 a1c6a512-1295-4272-9138-f99709370657
2007-10-17 03:48:24 +00:00
Stepan Moskovchenko
1515ff8522 MIDI: At long last, though quick and dirty, pitch bend depth! Or, I think it works. Tested on two
files. Let me know if anyone discovers any problems with this. This commit also includes Nils's synth 
loop optimization patch. I hope committing it does not cause problems.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15112 a1c6a512-1295-4272-9138-f99709370657
2007-10-15 05:11:37 +00:00
Nils Wallménius
e1940b87b0 Optimisation of the midi player, reducing the number of multiplications and memory accesses inside a very frequently executed loop, also does shifting of the whole sample when synthing is done which improves accurracy slightly, ~10% fewer buffer misses
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14983 a1c6a512-1295-4272-9138-f99709370657
2007-10-04 19:36:42 +00:00
Nils Wallménius
cb9ba11de6 Remove wrapper for pressNote and make the function externally visible
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14978 a1c6a512-1295-4272-9138-f99709370657
2007-10-04 10:30:01 +00:00
Stepan Moskovchenko
1ba018bb01 Add drum names, make cowbell a default instrument (no way to remap them from UI yet). Add non-static
wrapper for pressnote (is there a better way?). Beatbox only tested on H300; compile at own risk.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14972 a1c6a512-1295-4272-9138-f99709370657
2007-10-03 17:42:16 +00:00
Nils Wallménius
6386dbe861 static/inline/iram raid gives nice speedup
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14915 a1c6a512-1295-4272-9138-f99709370657
2007-09-30 11:21:25 +00:00
Nils Wallménius
6888db3240 Do not duplicate const table, make getEvent function static inline, gives about a ~1.5% speedup, put tick function in iram, ~3.5% speedup
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14873 a1c6a512-1295-4272-9138-f99709370657
2007-09-27 20:17:38 +00:00
Nils Wallménius
93787dd42c Simplify the sendEvent function, makes it _slightly_ faster and quite a bit smaller, build midiplay with -O2 for coldfire, gives about a 23% speedup
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14872 a1c6a512-1295-4272-9138-f99709370657
2007-09-27 18:29:50 +00:00
Nils Wallménius
ddee0f16d3 Use uint32_t type for the pitch table
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14844 a1c6a512-1295-4272-9138-f99709370657
2007-09-24 21:13:20 +00:00
Nils Wallménius
ff7b3c5e4e Fix midi playback on 64 bit sims and const a table
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14842 a1c6a512-1295-4272-9138-f99709370657
2007-09-24 16:47:34 +00:00
Nils Wallménius
0e49605aaa Move all of midiplay into its subdir and add a Makefile for it, add header files as necessary.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14841 a1c6a512-1295-4272-9138-f99709370657
2007-09-24 15:57:32 +00:00
Jens Arnold
b1f0049307 Fix the undefined char symbols appearing in many output lines. This printf does neither support nor need \n.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13229 a1c6a512-1295-4272-9138-f99709370657
2007-04-21 05:35:17 +00:00
Stepan Moskovchenko
65ef67e0f1 Fix a nasty little bug that would under the right conditions cause
memory corruption and other weirdness.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11978 a1c6a512-1295-4272-9138-f99709370657
2007-01-10 17:53:54 +00:00
Stepan Moskovchenko
c84461fb8f More adsr related nonsense, argh! Fix adsr related problem on some notes being stopped instead of
looped. Ramping code still not quite right, but dont want to lose this.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11117 a1c6a512-1295-4272-9138-f99709370657
2006-10-03 21:09:47 +00:00
Stepan Moskovchenko
28b5afd05a Optimize synth code by pre-computing the volume scaling for each note.
Scaling is now calculated once per MIDI event at the most, instead of
once per sample. Increase voice ramping speed, increase number of
active voices a little.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9870 a1c6a512-1295-4272-9138-f99709370657
2006-05-03 19:32:22 +00:00
Stepan Moskovchenko
47efba8bbf Fix file descriptor leak that would cause a hard lockup every 7 files
played. A few other cosmetic changes. please, please no red build =)


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9865 a1c6a512-1295-4272-9138-f99709370657
2006-05-03 05:18:18 +00:00
Stepan Moskovchenko
b2f1b5dd18 ----------------------------------------------------------------------
Added Karl Kurbjun's sound output patch, cleaned up some output.
Main file is now midiplay.c, midi2wav is still in there for anyone who
wants it. Set sampling rate to 22k, and increased note decay time.
Reduced number of concurrent active voices and made new notes replace
used voices if none are available. This makes lag less apparent.
I really hope this wont go red. (turns around and runs)


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9858 a1c6a512-1295-4272-9138-f99709370657
2006-05-01 23:22:59 +00:00
Stepan Moskovchenko
1874a33298 Uncomment one line, which makes bad 80s music sound a bit better.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7291 a1c6a512-1295-4272-9138-f99709370657
2005-08-07 23:39:23 +00:00
Stepan Moskovchenko
fb3e9a4073 Fix error/warning, change pitch bend to 9 bits
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7288 a1c6a512-1295-4272-9138-f99709370657
2005-08-07 22:20:40 +00:00
Stepan Moskovchenko
9ec1ff8cf5 Fixed warnings, adapted to Rockbox coding style, optimized to 78% realtime.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6329 a1c6a512-1295-4272-9138-f99709370657
2005-04-20 21:07:13 +00:00
Stepan Moskovchenko
1f5fb99819 Some shifting optimizations. Working code. 50% realtime.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6323 a1c6a512-1295-4272-9138-f99709370657
2005-04-19 15:57:07 +00:00
Stepan Moskovchenko
5811214b0c Code cleanup, fix warnings, error checking, add midi2wav to viewers.config
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6304 a1c6a512-1295-4272-9138-f99709370657
2005-04-15 20:27:04 +00:00
Stepan Moskovchenko
215e492a12 Added MIDI synthesizer plugin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6287 a1c6a512-1295-4272-9138-f99709370657
2005-04-15 06:08:55 +00:00