Commit graph

52 commits

Author SHA1 Message Date
Gwilym Inzani
d00de7b2a4 Make agb-xm-core return the interop rather than the tokens 2024-07-11 21:58:44 +01:00
Gwilym Inzani
352b352b27 Properly implement delay and envelopes 2024-05-16 00:27:20 +01:00
Gwilym Inzani
5494ae29e1 Get the envelopes correct 2024-05-15 23:47:37 +01:00
Gwilym Inzani
2e0f89978a Add note delay support (effect EDx) 2024-05-15 22:30:13 +01:00
Gwilym Inzani
b5fc27d243 Spell amiga correctly 2024-05-15 21:54:31 +01:00
Gwilym Inzani
2ab3fa79e1 Notes are 1 indexed, not 0 indexed
Versions of xmrs below 0.4.1 (unreleased, 0.4.2 is on crates.io but
0.4.1 is in the repo) have a bug where they swap linear and amiga
frequencies. This caused all old versions of agb (which were using
version 0.3) to use the amiga frequency table rather than the linear
one. Technically it sounds slightly wrong but it is kinda hard to tell.

Since agb 0.20.0, we are now using xmrs 0.5, which correctly reports the
frequency type for the XM file. That pointed out an error in the
note_to_speed method for linear frequencies (since those are now being
used). It turns out that the formula for calculating the frequency
expects a 0 based index for the note, but we were passing a 1 based
index for the note. Moving this down a note fixes the issue where things
were being played at the wrong frequency.
2024-05-15 21:35:03 +01:00
Corwin
184b11ed81
use static rather than const 2024-03-29 14:41:08 +00:00
Gwilym Inzani
0c19988699 Use 32768Hz for the tracker 2023-09-05 23:22:50 +01:00
Gwilym Inzani
eda11073ed Introduce fixnum::from_f(32|64) 2023-08-06 20:24:59 +01:00
Gwilym Inzani
4f7fb7125b Fix crash for some files 2023-08-05 23:51:26 +01:00
Gwilym Inzani
67de2d5833 Implement fadeout 2023-08-05 23:51:12 +01:00
Gwilym Inzani
f6ed1c484b Implement global volume 2023-08-05 22:55:03 +01:00
Gwilym Inzani
3976fd93ea Correctly interpret F00 2023-08-05 22:29:31 +01:00
Gwilym Inzani
db75d8b048 Minor fixes when trying other tracks 2023-08-05 01:33:48 +01:00
Gwilym Inzani
ff5d324356 Reuse envelopes if they are the same 2023-08-05 00:58:39 +01:00
Gwilym Inzani
aabfb1b083 This sounds pretty decent now 2023-08-05 00:24:11 +01:00
Gwilym Inzani
47455a0377 First pass at implementing envelope playing 2023-08-05 00:02:50 +01:00
Gwilym Inzani
ca4cb55b39 Add boilerplate for exporting the envelopes 2023-08-04 23:25:48 +01:00
Gwilym Inzani
d29a641a44 Specify that it is the volume envelope 2023-08-04 23:19:07 +01:00
Gwilym Inzani
826fdd881a Add data structure 2023-08-04 23:17:59 +01:00
Gwilym Inzani
9d299f3e66 Fix out by one error with instrument samples 2023-08-04 23:07:19 +01:00
Gwilym Inzani
fa4b2ebd5d Implement F command 2023-08-04 22:30:49 +01:00
Gwilym Inzani
6731fa88a0 I prefer this a bit slower 2023-08-02 17:18:27 +01:00
Gwilym Inzani
8177366c6b Remove dbg 2023-08-02 16:49:30 +01:00
Gwilym Inzani
4b145d3194 Try composing my own theme (with some bug fixes) 2023-08-02 16:48:41 +01:00
Gwilym Inzani
f4214b5da8 Use new music for dungeon puzzler's lament and fix tracker bugs 2023-08-01 21:41:33 +01:00
Gwilym Inzani
25ee876932 Fix a bunch of bugs after playing with different tracks 2023-07-23 23:37:14 +01:00
Gwilym Inzani
d233a2539c Improve accuracy of the volume 2023-07-23 22:10:25 +01:00
Gwilym Inzani
095723bbf8 FineVolumeSlide 2023-07-23 22:03:32 +01:00
Gwilym Inzani
f6a05178db Fix slides and add the portamento one 2023-07-23 21:36:02 +01:00
Gwilym Inzani
0911ca44c5 Try a new song and add memory support 2023-07-23 20:54:24 +01:00
Gwilym Inzani
352658f23f Fix clippy lints 2023-07-23 19:08:51 +01:00
Gwilym Inzani
b6cccf3b5a Add Portamento 2023-07-19 13:38:32 +01:00
Gwilym Inzani
1b8f4bbdc9 NoteCut support 2023-07-19 13:22:26 +01:00
Gwilym Inzani
6f8633861d Use 32-bit numbers more for more performance (and start tracking that) 2023-07-18 22:49:56 +01:00
Gwilym Inzani
b8adf08382 Don't hold arpeggios 2023-07-18 22:17:17 +01:00
Gwilym Inzani
a91069eac2 Consider the global volume 2023-07-18 21:37:01 +01:00
Gwilym Inzani
652173c08e Reduce size of pattern by 4 bytes per slot 2023-07-18 21:37:01 +01:00
Gwilym Inzani
07b00f11e1 Use relative notes to make it sound almost correct 2023-07-18 21:37:01 +01:00
Gwilym Inzani
4d699e9000 Volume slides - ish 2023-07-18 21:37:01 +01:00
Gwilym Inzani
203b1a4026 Actually make arpeggios work 2023-07-18 21:37:01 +01:00
Gwilym Inzani
aa635e9aa6 Refactor to effects 2023-07-18 21:37:01 +01:00
Gwilym Inzani
7861571a96 Correctly track restart point 2023-07-18 21:37:01 +01:00
Gwilym Inzani
a0be2a333e Attempt to calculate the speed to play more correctly 2023-07-18 21:37:01 +01:00
Gwilym Inzani
8191de3546 Try a pure rust implementation to allow for looping correctly 2023-07-18 21:37:01 +01:00
Gwilym Inzani
a8d751a0ef Panning effect 2023-07-18 21:37:01 +01:00
Gwilym Inzani
989d376056 Amega frequencies and effects 2023-07-18 21:37:01 +01:00
Gwilym Inzani
cf1f3965d8 Improvements 2023-07-18 21:37:01 +01:00
Gwilym Inzani
436b49c80d Get closer to some reasonable sounding 2023-07-18 21:37:01 +01:00
Gwilym Inzani
308cb3a19c Really basic playing 2023-07-18 21:37:01 +01:00