Commit Graph

85 Commits

Author SHA1 Message Date
kris
6ff35df1ae Oops, add build file for lookahead.pyx 2022-07-03 23:10:43 +01:00
kris
233e94d94f Tidy 2022-07-03 23:09:04 +01:00
kris
f65aaba765 Write out wav files incrementally during processing 2022-07-03 22:42:45 +01:00
kris
2e3e51bb99 Chunk the output resampling to limit memory use 2022-07-03 22:33:01 +01:00
kris
18a16999b0 Tweak to handle full audio files without crashing 2022-07-03 22:32:36 +01:00
kris
a9e7a1bbff Implement (10,10) eof duty cycle as a special case 2022-07-02 21:59:08 +01:00
kris
6772b579ca Dramatically reduce memory use 2022-07-02 21:20:16 +01:00
kris
0d217e9326 Improved quality and speed 2022-07-02 20:53:12 +01:00
kris
d153119231 Allow writing out a noise wav file containing the difference between input and output audio 2022-07-02 16:50:42 +01:00
kris
535656aceb Working! 2022-07-02 14:15:41 +01:00
kris
2a20bebb37 Tidy 2022-07-02 11:43:35 +01:00
kris
3458d3a1de Assert combined EOF operations have the expected (a, b) cadence 2022-07-02 11:42:36 +01:00
kris
2016e4a5f1 Tidy 2022-07-02 10:58:38 +01:00
kris
622583696d Simplify player op generation 2022-07-02 10:52:23 +01:00
kris
efb66e03d8 Begin to rework player operation generation 2022-07-02 10:05:21 +01:00
kris
695ddb2c10 Checkpoint 2022-07-02 00:27:27 +01:00
kris
445ec18f34 WIP - tidy and compute the minimum duty cycle for variants that have a STA $C030 in stage 2 trampoline 2022-07-01 23:17:25 +01:00
kris
47c7f441cf WIP - generate 3 stage EOF trampoline parametrized by (a, b) duty cycles 2022-07-01 22:22:38 +01:00
kris
c33e835f7a Simulate at clock speed and downsample output 2022-06-28 22:09:42 +01:00
kris
9a9434e9aa Tweak 2022-06-28 22:09:21 +01:00
kris
d2cdceb04e Regenerate 2022-06-28 22:09:09 +01:00
kris
11afaa152b - Only use the minimal player, quality is better and we don't often need more than 6 cycle gaps
- Generate 1-cycle EOF opcodes for now, but we'll need to tweak further.
- Generate both duty cycle orderings (a,b) and (b,a) since we anchor the EOF opcodes with a STA $C030 at the beginning
- Sort EOF by total length so it's clearer when looking at the usage profile which ones are needed
2022-06-28 22:06:38 +01:00
kris
346c647c40 Tweaks 2022-06-28 22:04:57 +01:00
kris
73ef91b5ad Simulate PWM audio filtered through speaker 2022-06-26 21:50:29 +01:00
kris
804ce60434 Clean up some more and restore fake EOF opcodes 2022-06-25 15:26:14 +01:00
kris
efa63a5ab2 Tidy 2022-06-25 15:15:40 +01:00
kris
e0908a9ced WIP - refactor player generation to be a) deterministic b) use opcodes_6502 c) statically enumerate a minimal set of opcode sequences. Since we're giving up on using arbitrary opcode combinations this is much simpler, and maybe more correct. 2022-06-25 15:14:17 +01:00
kris
bc032ae3ca Autogenerate eof with speaker opcode interleaving 2022-06-21 22:32:12 +01:00
kris
cb5de62cc8 Look ahead beyond the EOF opcodes for better prediction quality
Normalize based on 100th percentile
2022-06-21 21:33:19 +01:00
kris
a48e7b796c Oops, EOF opcodes weren't being padded 2022-06-11 21:13:36 +01:00
kris
b1bd8f7b19 Don't need most EOF 2022-06-11 17:39:57 +01:00
kris
13fb60fed0 Add a lot of EOF variants - quality is good but they're mostly not used 2022-06-11 17:27:52 +01:00
kris
1552715b49 Optimized EOF sequence 2022-06-04 14:53:33 +01:00
kris
fbd6b956d1 Checkpoint working player 2022-06-04 14:06:52 +01:00
kris
8ea4f150ad Checkpoint - trying to mitigate EOF clicking 2022-05-24 22:19:40 +01:00
kris
b97a625d7d Working version of encoder. This reproduces the clicking that happens from end-of-frame, so we will need a new strategy 2022-05-16 21:11:17 +01:00
kris
33ce46a19c Second order difference equation for damped harmonic oscillator, from "Signal processing in C" 2022-05-16 10:43:40 +01:00
kris
929ea026d9 Format comment 2020-12-29 14:33:22 +00:00
kris
daee564255 Rename slowpath opcode to end_of_frame to better describe what it does.
Add command-line flags for audio normalization params.
2020-12-28 22:42:34 +00:00
kris
ccba51eead Add support for targeting 6502, for which the JMP (indirect) opcode
takes 5 cycles instead of 6.
2020-12-28 13:23:57 +00:00
kris
38280e7d93 Add more audio file types 2020-12-28 13:23:18 +00:00
kris
d4bc2d45e5 Parametrize options by command-line flags 2020-12-28 12:54:44 +00:00
kris
4090c502a8 Add back preprocess_audio for converting audio sample rate. It's
faster to do this once when converting an audio file many times.
2020-12-28 12:54:39 +00:00
kris
4666171aaa Count and report on the number of speaker toggles/sec during encoding. 2020-12-28 12:30:29 +00:00
kris
a1a1f33c21 Add partial support for 4-cycle NOP; NOP opcode pairs
Count and report on the number of speaker toggles/sec during encoding
2020-12-28 12:29:05 +00:00
kris
089591737f Regen 2020-12-24 14:44:19 +00:00
kris
cef38dae59 Comment nit 2020-12-24 14:44:09 +00:00
kris
4701dc14f1 Regen 2020-12-24 14:43:51 +00:00
kris
93b63db558 Use the correct effective clock rate for a PAL Apple II, taking into account the long cycle. 2020-12-24 14:43:00 +00:00
kris
0bb7871355 Allow padding out the full $300 page with opcodes, sorted by the
number of non-NOP opcodes to give the most opportunities for speaker
actuation.

Use float32 in opcode code.
2020-12-24 14:40:26 +00:00