View Issue Details

IDProjectCategoryView StatusLast Update
0005924MMW 5FileMonitor / Find Missingpublic2023-06-21 16:46
Reporterpeke Assigned To 
PriorityurgentSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
Product Version5.0 
Target Version5.1Fixed in Version5.1 
Summary0005924: Framework: CUEPoint Support
DescriptionLibrary Framework for supporting:
- CUESheet Playlist
- Manual CUE Point for gapless Playback, Custom Crossfading types
- AudioBooks 0005931, Podcast, DVD/Video/Movie Files as Chapters (Bookmark Points) 0006967
- Gapless, Crossfade (mixed) Audio CD Burning, Better Splitting tracks for multiple CDs Burning 0006210

To support all these features SQLite Songs Table should be updated to contain additional Columns:
1. ParrentTrack = INTEGER
2. CUEStartPos = LONGWORD (Start Time From 0006237)
3. CUEEndPos = LONGWORD (Stop Time From 0006237)
4. CrossfadeStartType = TEXT
5. CrossfadeEndType = TEXT

Optional if Needed for faster and more accurate Seeking
6. OriginalLength = LONGWORD
Additional Informationhttps://www.mediamonkey.com/forum/viewtopic.php?t=103692
https://www.mediamonkey.com/forum/viewtopic.php?t=103693

https://www.mediamonkey.com/forum/viewtopic.php?f=30&t=97689

https://www.mediamonkey.com/forum/viewtopic.php?f=7&t=94064
http://www.mediamonkey.com/forum/viewtopic.php?f=26&t=85589

http://www.mediamonkey.com/forum/viewtopic.php?f=4&t=43953
http://www.mediamonkey.com/forum/viewtopic.php?f=1&t=46031
http://www.mediamonkey.com/forum/viewtopic.php?p=244899#p244899
http://www.mediamonkey.com/forum/viewtopic.php?f=2&t=36026 (CUE Lord Script)
http://www.mediamonkey.com/forum/viewtopic.php?f=4&t=29850
http://www.mediamonkey.com/forum/viewtopic.php?f=4&t=67306
http://www.mediamonkey.com/forum/viewtopic.php?f=1&t=76176
https://www.mediamonkey.com/forum/viewtopic.php?f=33&t=99798

http://www.mediamonkey.com/support/staff/index.php?_m=tickets&_a=viewticket&ticketid=8211
KVU-294084
TagsNo tags attached.
Attached Files
Fixed in build2807

Relationships

related to 0006210 closedLudek MMW v4 Audio CD disc spanning cannot split one track accross multiple discs 
related to 0019744 closedmichal MMW 5 FLAC: CUESheet Tag is not added to extended tags 
parent of 0006237 closedLudek MMW v4 Properties: Add new 'Start Time' and 'Stop Time' fields 
parent of 0006242 closedLudek MMW v4 Scripting: Add new 'StartTime' and 'StopTime' GET/LET properties to ISDBSongData 
related to 0001460 feedbackrusty MediaMonkey Addons MediaMonkey Scheduler - MediaMonkey Professional 
related to 0005931 newLudek MMW v4 MM does not support chapter marks in m4b files (audiobooks) 
related to 0006454 newrusty MediaMonkey Addons DJ Mixer Features (addon?) 
related to 0006967 assignedmichal MMW 5 DVD playback 
related to 0006689 assignedjiri MMW v4 OnBeforePlay event needed 
related to 0009816 new MMW v4 Improve Bookmarks - Ability to Save Multiple Bookmarks Per Track 
related to 0016236 new MMW 5 Preview waveform feature 
related to 0018201 feedbackrusty MMW 5 Bookmarks: Handling of Multiple bookmark/s 
related to 0018553 closedLudek MMW 5 CUE: CUE loader do not work correctly 
related to 0020105 closedLudek MMW 5 CUE causes duplication of files on rescans 

Activities

peke

2009-12-12 02:27

developer   ~0019836

Last edited: 2009-12-24 02:25

SQLite Songs Table should be updated to contain additional Columns:
1. ParrentTrack = INTEGER
2. CUEStartPos = LONGWORD
3. CUEEndPos = LONGWORD
4. CrossfadeStartType = TEXT
5. CrossfadeEndType = TEXT

Optional if Needed for faster Seeking
6. OriginalLength = LONGWORD

peke

2009-12-12 03:09

developer   ~0019837

Last edited: 2009-12-24 02:24

For Easier understanding Audio CD structure will be used to compare usage even this can be used in other formats also (like DVD, M4B, Audio Books,...)

Definitions of Columns and its basic usage:
ParrentTrack:
Parrent track will contain ID of Track that defines first CUEPoint (like first track on Audio CD), First CUEPoint will Contain have set this to ID = ParrentTrack. Exceptions/Special cases would be when value is -1(Default) = Use Global/Default settings (Mostly used with Crossfade Settings of MM) or 0 = Use custom options set for track

CUEStartPos:
This will contain track Start position in Milliseconds from start of track
(Values: NotSet = Default/Unknown; if Set it will represent start pos)

CUEEndPos:
This will contain track End position in Milliseconds from start of track (Values: NotSet = Default/Unknown; if Set it will represent end pos)

CrossfadeStartType:
This Column will contain CUE/Crossfade type that will instruct player how to start playback of track (Example Types: Empty = Default; "$CFade[2000,0,<Setting ignored as player current volume is used>]" = Crossfade with previous track using Linear FadeIn track for 2 Sec with starting Volume 0 ending with Player Volume; "$CFade[-4000,30,<Setting ignored as player current volume is used>]" = Crossfade with previous track using Linear FadeIn track for 4 Sec that strats 4 Sec before CUEStartPos with starting Volume 30 ending with Player Volume at CUEStartPos;...)

CrossfadeEndType:
This will be same as CrossfadeStartType with only difference that will instruct player how to end track playback (Example Types: Empty = Default; "$CFade[2000,<Setting ignored as player current volume is used>,0]" = Crossfade with previous track using Linear FadeOut track for 2 Sec with starting at CUEEndPos using Volume ending with Volume 0; "$CFade[-4000,<Setting ignored as player current volume is used>,30]" = Crossfade with previous track using Linear FadeIn track for 4 Sec that strats 4 Sec before CUEEndPos with Player Volume and ending with Volume 33 at CUEEndPos;...)

NOTE: CrossfadeStartTypes and CrossfadeEndTypes should be able to do some sort of REGEXP structure to enable future customization and expansion

OriginalLength:
This is optional and will instruct player original track length of physical file.

NOTE: Songs -> SongLength will contain Milliseconds calculated using "(CUEEndPos-CUEStartPos)"

peke

2010-05-20 21:36

developer   ~0020172

Adding these fields into MM library structure without adding all features at start would be enough. Especially as it will make room for future expansion/control of bugs 0005931, 0006210, 0006237 0006242.

Let me know if you need more description.

NOTE with initial implementation we would only add it to MM library structure for future reference.

Ludek

2010-05-20 22:02

developer   ~0020174

Last edited: 2010-05-20 22:03

Peke,
could you describe what is exactly the relation to issues 0006237, 0006242? I have already added StartTime and StopTime fields to the songs table for the purposes.

And what is the relation to 0006210? I have already implemented it without a need for CuePoint support. Do you mean a reverse process (of ripping such a splitted audio CD content)?

peke

2010-05-21 02:10

developer   ~0020175

Last edited: 2010-05-21 02:22

As you noticed CUEStartPos and CUEEndPos are same as StartTime and StopTime fields from 0006237 you already added and are covered by 0006242 for scripting that would not need to be changed even CUEStartPos and CUEEndPos are more clear, but as they are same it is already solved/implemented "No change required". I updated bug relations.

This structure is designed to better control solution in 0006210 I'll prepare direct example how it should fully look when implemented and how it is related to 0005931.

peke

2010-05-29 23:12

developer   ~0020196

I created small SQLite DB with proposed fields to better show retaions with 0006210 and 0005931

It can me opened in Firefox SQLite plugin.

Let me clarify relations now:
0006210: In case that track that is larger than one CD and have chapters like track 1895-1899 and is larger than single audio CD MM should put span point for multiple CD burning on chapter point and make effect similar to phrase "To be continued..." and evade possibility to cut burning in the middle of word.

0005931: As seen in track ID 1895-1899 user can directly see what chapters Audio Book have and position player to begin of each chapter.

This approach will also correctly show exact listening point on sites like Last.fm

This is big and powerful feature in MM and it is needed to be approached with caution and slow implementation one feature at time. Adding 0006237 and 0006242 is great for start, next step would be to support 0005931 along with 0006210 and then after though tests we can go on more complex features like CUESheet, crossfading, ...

peke

2011-01-19 04:06

developer   ~0022428

Reminder sent to: jiri, rusty

Reminder sent for triage Feedback

peke

2016-07-21 11:44

developer   ~0045172

Updated due the new requests.

peke

2019-04-02 02:08

developer   ~0053135

Updated Relations to 0006967

rusty

2020-01-15 05:57

administrator   ~0055867

I would love this functionality, but it'll have to be deferred for now.

Ludek

2023-05-22 20:49

developer   ~0072046

Last edited: 2023-05-25 21:18

Basic support added in build 2807

i.e. CUE is now scanned to library and each chapter is tracked as separate track entry with different startTime/stopTime and the same file path

TODO:
1) Handling of sync to devices (splitting audio to individual chapters)
=> fixed in 2807
The file is tracked as incompatible and splitted to individual parts during conversion / auto-conversion

2) Gapless playback handling
=> fixed in 2807

3) Test various file operations like Auto-organize, Convert format etc.
=> fixed in 2807
- CUE file is updated during auto-organize
- converting original file converts the original file as whole and updates CUE, converting to a new location creates individual file splits (according to CUE)