jacqueline
ade5e4bc08
Encode and decode MediaType in TrackData
7 months ago
jacqueline
ea9c7a0498
Include leading slash in media type paths
7 months ago
jacqueline
57af3e64c8
Introduce a MediaType for each track and index
...
Initially set based on filepath, or by genre if the filepath doesn't
match one of our presets
7 months ago
ailurux
e96dcde085
Fix commented issues
7 months ago
ailurux
c479d699d0
Implements seeking to saved position for tracks
7 months ago
jacqueline
7d1266404d
Move SPI ISR back to CPU0
...
See if this does anything for the itermittent spi acquire hangs
7 months ago
ailurux
c4ec089a90
Added lua methods to access track data
7 months ago
ailurux
f58679983e
Save positions over 5 minutes, every minute
7 months ago
jacqueline
a174d76aa1
Mount the SD card asynchronously when it becomes available
...
Previously we were doing it synchronously, which led to some odd looking
livelock stacktraces... we still don't have a consistent repro, but this
at least makes the stack when we mount a lot more predictable
7 months ago
ailurux
d4bad11130
WIP: Fixed errors, cleanup
7 months ago
ailurux
4353779810
WIP: Add last_position field to track data and start on implementation
7 months ago
jacqueline
d8b9e65e68
Clean up some tts logging and descriptions
7 months ago
jacqueline
c51709f99f
Pause and unpause the current audio output in response to TTS
7 months ago
jacqueline
542ebc6531
Play TTS files in response to TTS prompts, but it's legible now
...
- input files are upsamples and padded to stereo before playback
- any in-progress playback is cancelled before playing a new file
7 months ago
ailurux
1f5ce24389
Rename set_style to set_subject
7 months ago
jacqueline
50d6efada5
Use '/sd' instead of '/sdcard' for accessing the sd card
...
it's cleaner
7 months ago
jacqueline
d0b739c66e
Play basic wav files in response to tts prompts
...
It's currently quite limited (no stereo or sample rate conversion,
multiple messages clobber each other, only plays if music is playing),
but we're getting there!
8 months ago
jacqueline
dacf3efc45
Look for music in "/Music", with the root dir as a fallback
8 months ago
jacqueline
172d31ec6d
Ignore comments within playlist files
...
Includes a general cleanup+restructure of playlist.cpp, and fixing the
tests and benchmarks
8 months ago
jacqueline
99a3a904e4
Handle collation text that includes '\0'
...
This seems to be tickled by the ogg comment handling changes (possibly libtags doesn't actually handle this case?)
8 months ago
jacqueline
e6921dc055
Use libogg + our own parser for ogg files
...
This is somewhat faster than relying on libtags to parse these, and also better handles cornercases such as tags that cross physical page boundaries.
8 months ago
jacqueline
91eaed4b37
use snake_case consistently in lua function names
8 months ago
ailurux
96a224c0df
Lua API improvements and fixes
...
Co-authored-by: jacqueline <me@jacqueline.id.au>
8 months ago
jacqueline
3421bd652c
When clicking a track in the file browser, play it
...
Includes adding a `playback.is_playable` for working out whether or not
a particular file is able to be played
8 months ago
jacqueline
af7a70450e
Support adding filepaths to the track queue
8 months ago
jacqueline
9145722b08
Don't show n+1/n when we run out of queue
8 months ago
jacqueline
71aafc1711
Fix random.cpp not being built
8 months ago
jacqueline
32869129ff
clang-format
8 months ago
jacqueline
9ec8d6dafc
Handle the loading state whilst appending many tracks better
...
1) Update the queue length periodically so that the user can see we're
working
2) Clear any previous track and display "loading..." instead
8 months ago
jacqueline
d3c15bf070
spello
8 months ago
jacqueline
8f4e1ece75
Some minor cleanup, docs, assertions
8 months ago
jacqueline
f253d2ee75
Timeout when writing output samples throughout the audio pipeline
...
This allows the audio pipeline to remain responsive even when the drain
buffer has completely filled. This in turn means that you now see the
track info in the 'now playing' screen change if the current track
changes whilst you are paused.
Since I was fucking around a lot in the audio processor anyway, I also
added mono->stereo expansion so that playing mono tracks on Bluetooth no
longer destroys your ears.
8 months ago
jacqueline
ef227f8c51
Move the UI task main loop info iram
8 months ago
jacqueline
b1c90278ae
Delete unused half readme
8 months ago
ailurux
e6c77f17b8
Switch output mode to headphones when plugged in
8 months ago
jacqueline
275ade5d13
Move some hot driver functions into iram
...
We've got the space for it now!
Also turn SW radio coexistence off whilst we're here; the docs recommend this if you only use Bluetooth(R)
8 months ago
ailurux
978429109e
Fix queue serialisation so that the position is correctly applied
8 months ago
ailurux
5ab4c2f0d6
Update position when updating the shuffler
8 months ago
jacqueline
493f8e1200
Don't break early from clearing PcmBuffer
8 months ago
jacqueline
9c56261122
Delay DB reindexing slightly
...
This helps with boot time by preventing a ton of
disk I/O before the UI has had a chance to load.
8 months ago
jacqueline
40c754a72a
Always initialise bytes_cleared when clearing PcmBuffers
8 months ago
ailurux
022aa38396
Fix for position persisting when queue reset
8 months ago
jacqueline
326cc42a63
Don't spuriously report that the current track has changed
...
Fixes the last track in the queue repeating forever
8 months ago
jacqueline
6a2d259f46
Move off of deprecated APIs
8 months ago
jacqueline
822c9dc93e
Fix build errors from stricter visibility requirements
8 months ago
jacqueline
9e1fc64c88
Accept a specific tag in `loglevel`
8 months ago
jacqueline
4fd15f148a
Bump up the ui task stack size
8 months ago
jacqueline
2ad83cb210
Shard searching for new tracks across multiple tasks
...
This also has the effect of breaking up the enormous 'updateIndexes'
method into one call per file, which means database updates also no
longer monopolise a single background task for their entire duration.
avg. time per new file is now <140ms for a completely fresh database,
which is pretty good i think!
8 months ago
jacqueline
28cf749951
Make FileGatherer shaped more like a normal iterator
8 months ago
jacqueline
30aaefca64
Batch up the db operations associated with adding new tracks
...
This is ostensibly yet another 'prepare for multithreaded updates'
commit, however it does actually save us another 60(!!) odd milliseconds
per track.
8 months ago