Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Cuesheet Processor (CueProc) (Read 84861 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Cuesheet Processor (CueProc)

This is the announcement of Cuesheet Processor (CueProc), the successor of my Audio CD Image Reader (ACDIR) though I'm not sure how many users at hydrogenaudio.org are still using ACDIR.    Not having updated ACDIR for over a year, I felt sorry for some users who reported some problems in ACDIR. I was planning to rewrite the tool in Python to simplify the usage (I didn't like the variable syntax in ACDIR), to enhance some features, and to reduce the effort necessary for maintaining the source code. I hope you like this new tool. 

Homepage: http://nyaochi.sakura.ne.jp/xoops/modules/...write/tc_6.html
Download URL: http://nyaochi.sakura.ne.jp/xoops/modules/...id=1&lid=14

Cuesheet Processor (CueProc) is a command-line tool for converting audio CD images into another format such as WAV, MP3, Ogg Vorbis, MP4, MPC, WMA, etc. The functions of this tool can be summarized:
  • Parse a cuesheet (a .cue or audio file with the cuesheet embedded). Field values in a cuesheet (e.g., TITLE, PERFORMER, REM DATE, etc) will be used by the latter job.
  • Read audio data in a CD image (supported format: FLAC, Monkey's Audio, WavPack, WAVE).
  • Extract tracks in a CD image to individual WAVE files.
  • Execute an external encoder with predefined command-line arguments for each track. CueProc sets appropriate command-line arguments (e.g., naming for output files, tagging, etc) automatically by specifying a codec.
  • Execute an external encoder with configurable command-line arguments.
  • Send audio stream of each track to STDIN of the external encoder.
  • Enumerate cuesheets recursively under a directory.
  • Process multiple cuesheets at a time, which is useful for converting an audio collection into a lossy format.
  • Skip encoding when the corresponding output file exists, which is useful for converting new CD images only.
Example of CueProc usage:
Code: [Select]
> cueenc.bat -c oggenc -p "-q4" CDImage.cue
> cueenc.bat -c lame -p "-V5 --vbr-new" CDImage.wv
> cueenc.bat -c neromp4 -p "-br 128000" --target list.txt


Pros of CueProc over ACDIR
  • Most part of the source code is written in Python. Audio extraction program (getaudio.exe) is written in C/C++ for faster decoding-speed.
  • Predefined command-line patterns for Ogg Vorbis encoder (oggenc.exe), LAME MP3 encoder (lame.exe), Fraunhofer IIS MP3 Surround Commandline Encoder V1.2 (mp3sencoder.exe with tag.exe), Helix MPEG Layer III audio encoder v5.1 (hmp3.exe with tag.exe), MusePack encoder (mppenc.exe), Microsoft ® Windows Media Encoder Command Line Script Utility (WMCmd.vbs via cscript.exe), AACPlus v2 Encoder using Winamp 5.3 enc_aacplus.dll (enc_aacplus.exe, mp4box.exe, neroaactag.exe), Nero Digital Audio Reference MPEG-4 & 3GPP Audio Encoder (neroaacenc_sse2.exe, neroaactag.exe).
  • Simplified and reasonable syntax of variables and conditions. Variables are now expressed wither ${variable} or $variable. Conditions, #if{condition}-#elif{condition}-#else-#endif are now expressed in Python code snippets.
  • Comprehensible variables. Try --show-variables option with your cuesheet to see the list of variable values.
  • Full Unicode support internally even though we still can't pass UTF-8 values properly in a command line (without Win32 UTF-8 locale).
  • Configurable character encoding (-w option) to parse cuesheets. CueProc can read cuesheet in any character encoding supported by Python 2.5, as well as UTF-8 cuesheets.
Cons of CueProc over ACDIR
  • Much larger binary size because it is compiled by py2exe.
If you have any suggestions to this program, write it in this thread or send an email to me.

Cuesheet Processor (CueProc)

Reply #1
nyaochi,

Thank you for progressing ACDIR.

REACT uses ACDIR to split images to tracks, so I would say that it has proved very useful to many people, including me.

I actually spotted this on your website a couple of days ago, so it is already included in the wiki cuesheet page.  I was contemplating PM'ing you about it but you beat me to the punch thankfully.

Personally I am very happy with the way ACDIR works, and I was wondering what benefit there would be to switching, so, many thanks for the list above.  I'll have to take a look to see what additional variables there are.

Thanks again.
I'm on a horse.

Cuesheet Processor (CueProc)

Reply #2
I've tried using CueProc to encode Nero MP4 files and I get this error: "WARNING: No suitable output class found".
cueenc -c neroaacenc_sse2 -p "-q 0.53" "soss.cue"

Yet, it worked perfectly with LAME using this cuesheet. 
cueenc -c lame -p "-V5 --vbr-new" "soss.cue"

I have all necessary files in my path: Neroaacenc_sse2.exe, Neroaactag.exe. To keep it simple for testing, I placed all files in my E:\DOS directory.

Thanks in advance for the help.
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #3
CueProc -c option specifies a codec name, which is like a preset name for an encoder. Codec name and binary name are different for some encoders. If you want to use Nero MP4 encoder, specify:
Code: [Select]
cueenc -c neromp4 -p "-q 0.53" "soss.cue"


To see the list of codec names and the information about a codec:
Code: [Select]
cueenc -l
cueenc --help-codec neromp4

Cuesheet Processor (CueProc)

Reply #4
I actually spotted this on your website a couple of days ago, so it is already included in the wiki cuesheet page.  I was contemplating PM'ing you about it but you beat me to the punch thankfully.

Hi Synthetic Soul,

Thanks for the Wiki page and your effort at this forum (I like your lossless compression page though this is an off-topic    ). I was going to write an announcement here when the documentation reaches at some level. I didn't expect that you would find the release at my home page.

Cuesheet Processor (CueProc)

Reply #5
Thanks for your great work nyaochi! I am in the process of backing up my entire CD collection to FLAC. I will definitely use your new program.

Cuesheet Processor (CueProc)

Reply #6
Thank you, nyaochi!

Also, is there a way to make the extenstion "m4a" instead of "mp4"? I use an iPod, so I must have the "m4a" to play the file.
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #7
Also, is there a way to make the extenstion "m4a" instead of "mp4"? I use an iPod, so I must have the "m4a" to play the file.

I released CueProc 1.3 for this enhancement. CueProc 1.3 now has -e (--codecext) option to change the extension of output files from the default one set by the codec.
Code: [Select]
cueenc -c neromp4 -e ".m4a" -p "-q 0.53" "soss.cue"

Cuesheet Processor (CueProc)

Reply #8
Thank you again, nyaochi. The -e option is terrific! I was tearing my hair out trying to get the .m4a result through "extpipe", but was unsuccesful.

Two last questions for you, though.
1. If I use "neromp4", am I restricted to the path and filename structure? i.e. "...\neromp4\tracknumber_title.ext"
I tried -o "$tracknumber $TITLE", but CueProc quit before encoding started, so I am assuming that I misunderstood the meaning of the -o option.

2. What option(s) do I use so that I can use a vorbis comment tag cuesheet in my FLAC image?

Thanks a lot for answering my questions so promptly and for working on CueProc.
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #9
1. If I use "neromp4", am I restricted to the path and filename structure? i.e. "...\neromp4\tracknumber_title.ext"

No. The output directory can be specified by -d option. Please refer to the example (which is default) in cueenc.bat: -d ..\${codec}\${cuesheet_path}. You can modify cueenc.bat for your convenience or overwrite it in a command-line for cueenc.bat.

I tried -o "$tracknumber $TITLE", but CueProc quit before encoding started, so I am assuming that I misunderstood the meaning of the -o option.

I can't reproduce this problem although this does not address the above issue.

2. What option(s) do I use so that I can use a vorbis comment tag cuesheet in my FLAC image?

This was found to be a bug, and CueProc 1.4 was released.

Cuesheet Processor (CueProc)

Reply #10
Hi Nyaochi,

I think I may of found a bug in version 1.4. Using the same code as above (3 posts up), the program seems not to be able to run "neroAacTag" correctly. After each encoding I get this message "ERROR: Could not create temporary file.", then "Updating MP4 file... Could not update MP4 file." The file encodes and plays fine, but there are no tags. This happens with a regular cuesheet or the embedded cuesheet in the FLAC image.

Thanks again for your help.
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #11
Please spot the cause of your problem exactly. I have no idea about your problem. CueProc will not create a temporary file with 'neromp4' codec.

The task of CueProc is just to generate command-lines for encoding and tagging tracks. For example, CueProc generates the following two command-lines to encode the first track of an album with Nero Digital MP4 encoder:
Code: [Select]
getaudio --begin 00:00:00 --end 04:48:27 Z:\cdimage\ScissorSisters\TaDah\CDImage.flac | neroaacenc_sse2 -if - -of "..\neromp4\ScissorSisters\TaDah\01_I DON'T FEEL LIKE DACNCIN'.mp4"
neroaactag "..\neromp4\ScissorSisters\TaDah\01_I DON'T FEEL LIKE DACNCIN'.mp4" -meta:title="I DON'T FEEL LIKE DACNCIN'" -meta:artist="SCISSOR SISTERS" -meta:album="TA-DAH" -meta:track="1" -meta:genre="Pop" -meta:year="2006"

'getaudio.exe' is a small program, which comes with CueProc, to extract audio stream in an audio file and to send the stream to STDOUT. 'neroaacenc_sse2.exe' will receive the audio stream from STDIN and output an MP4 file. Then CueProc runs 'neroaactag.exe" to set tag values to the output file. CueProc generates these command-lines from a target cuesheet based on a template built in 'neromp4' codec. You can see these command-lines by CueProc -n, (--rehearsal) option. You can test these command-lines manually via the command prompt.

If you found a problem in command-lines generated by CueProc, please let me know which part was wrong and to be fixed. If no problem is found in the command-lines (i.e., CueProc worked correctly at least), I have no idea how to fix it.

Cuesheet Processor (CueProc)

Reply #12
Ok nyaochi,

Here's the deal. To test, I used neroaactag to tag one mp4 file created through CueProc and one created from foobar2000, with both programs using the nero standalone encoder. Then I manually tagged each file just -meta:ARTIST. The foobar created file tagged properly, but the one created through CueProc gave the same error as stated in my previous post. So, can I assume that since the files play ok, that something is wrong with the mp4 container during creation?

When I used the -n option, everything in the commandline looked perfect. All tag fields were correct, the path & filename were correct. Both encoder & tagger were listed. Neroaactag does not like the file that is being passed to it.

I am not trying to be a pain in the ass. I'm just letting you know that there is something not right. Everything in this area worked as expected in 1.3, but not in 1.4. I will try again on a different machine and see if I get the same results.
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #13
So, can I assume that since the files play ok, that something is wrong with the mp4 container during creation?
As I wrote before, CueProc does not touch the output MP4 files at all but just lets neroaacenc_sse2.exe encode with some parameters (encoder options, input filename, output filename, etc). I suspect the neroaactag.exe does not like the path/file name of M4A files, but just speculation.

When I used the -n option, everything in the commandline looked perfect. All tag fields were correct, the path & filename were correct. Both encoder & tagger were listed. Neroaactag does not like the file that is being passed to it.
Did you enter the command-lines (encoding and tagging) directly to the command prompt to check the correctness of the command-lines, i.e., to see whether if the command-lines surely write tag information?

I am not trying to be a pain in the ass. I'm just letting you know that there is something not right.
Yeah, I know.  I just need more information to find out this problem. I can't reproduce your problem in my environment. I have no idea what causes this problem and how to fix this problem with this information.

Everything in this area worked as expected in 1.3, but not in 1.4.
Are you sure? I think the changes between 1.3 and 1.4 are too small to make the difference. You can download 1.3 for testing:
http://nyaochi.sakura.ne.jp/dist/cueproc-1.3_win32.zip

Cuesheet Processor (CueProc)

Reply #14
Hi nyaochi,

Well, I got home from work today and all is well, running on my home computer. My computer at work must have quirks. It was not allowing neroaactag to create it's temporary file for tagging. Thank you for your time and patience. My apologies for driving you crazy!
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #15
Hi drbeachboy,

No problem at all. Good to hear that you sorted out the issue. 

Cuesheet Processor (CueProc)

Reply #16
Hi nyaochi,

I have a question regarding tagging. Currently, I use REACT to encode to a FLAC image, which in turn calls ACDIR to encode and tag tracks with Nero. ACDIR calls neroAacTag, and gives me the option to choose which meta that I want to carry over to my m4a files. Especially BAND, TOTALTRACKS and sometimes COMMENT tags. So the question arises; is there a way to add additional tags in CueProc? Can "extpipe" serve that purpose or is that something that you would have to add to CueProc?

I have CueProc working with REACT, but as expected, my m4a files only get tagged with the 6 standard tags in "neromp4".

Thanks again for all your help and fielding all my questions. 
Surf's Up!
"Columnated Ruins Domino"


Cuesheet Processor (CueProc)

Reply #18
I would suggest that it appends them to the previous, as it only deals with 01 indexes.  This was certainly true for ACDIR.
I'm on a horse.

Cuesheet Processor (CueProc)

Reply #19
I have a question regarding tagging. Currently, I use REACT to encode to a FLAC image, which in turn calls ACDIR to encode and tag tracks with Nero. ACDIR calls neroAacTag, and gives me the option to choose which meta that I want to carry over to my m4a files. Especially BAND, TOTALTRACKS and sometimes COMMENT tags. So the question arises; is there a way to add additional tags in CueProc? Can "extpipe" serve that purpose or is that something that you would have to add to CueProc?

I think there are four options to deal with this topic:
  • CueProc tries to maintain a 'guildeline' to use rare tags such as BAND and TOTALTRACKS. In other words, CueProc defines a guideline to use "REM XXX" fields in a cuesheet and to map them to encoded files. Could you provide me with a example of REM fields and their mappings to command-line arguments for neroaactag.exe? I'd like to include this to establish the guidline.
  • Improve CueProc so that it takes arguments for the tagging program as well. Currently, a user can add arguments for encoders with -p option, but can't for tagging programs. I'll address this enhancement in the next release.
  • Use 'extpipe' codec. But I will also revise this option in the next version as I noticed some missing feature to achieve tagging.
  • Modify the source code. It's quite easy to hack the source code to define your own codec.
I will address options 1, 2, and 3 in the next release.

How does CueProc handle pre-gaps? Does it append them to the previous track, does it pre-pend them to the next track or does it ignore them?

I would suggest that it appends them to the previous, as it only deals with 01 indexes.  This was certainly true for ACDIR.

Yes, CueProc assumes INDEX 01 as track boundaries, similarly to ACDIR. Audio stream between INDEX 00 and INDEX 01 of a track belongs to the previous track.

Cuesheet Processor (CueProc)

Reply #20
Hi nyaochi,

The tags stated above are not from REM's in the cuesheet, but rather from "PERFORMER" (top one in cuesheet) for BAND (Album Artist) and EAC's options %x for "TOTALTRACKS" and %e for "COMMENT".

In neroAacTag, "TOTALTRACKS" and "COMMENT" are standard meta field names, while "BAND" or "ALBUM ARTIST" would come from the "-meta-user:" command.

As for these tags being "Rare" as you stated above, maybe once upon a time they were, but these days ALBUM ARTIST & TOTALTRACKS are much more commonplace. My album playlists in foobar2000 won't display correctly unless it sees the TOTALTRACKS tag. I use it as the trigger to display "Album" view or "Single" view.

In the end, flexibility and ease of use are the keys to people using programs. I am sure that striking that balance between the two is a tough thing to acheive for you programmers. So, thank you for listening to us, for sharing your programs with us, and for continually trying to make them better. It is very much appreciated!
Surf's Up!
"Columnated Ruins Domino"

Cuesheet Processor (CueProc)

Reply #21
CueProc 1.5 was released. Changes from 1.4 are:
  • Parse a cuesheet (a .cue or audio file with the cuesheet embedded). Field values in a cuesheet (e.g., TITLE, PERFORMER, REM DATE, etc) will be used by the latter job.
  • Read audio data in a CD image (supported format: FLAC, Monkey's Audio, WavPack, WAVE).
  • Extract tracks in a CD image to individual WAVE files.
  • Execute an external encoder with predefined command-line arguments for each track. CueProc sets appropriate command-line arguments (e.g., naming for output files, tagging, etc) automatically by specifying a codec.
  • Execute an external encoder with configurable command-line arguments.
  • Send audio stream of each track to STDIN of the external encoder.
  • Enumerate cuesheets recursively under a directory.
  • Process multiple cuesheets at a time, which is useful for converting an audio collection into a lossy format.
  • Skip encoding when the corresponding output file exists, which is useful for converting new CD images only.
The tags stated above are not from REM's in the cuesheet, but rather from "PERFORMER" (top one in cuesheet) for BAND (Album Artist) and EAC's options %x for "TOTALTRACKS" and %e for "COMMENT".
CueProc 'neromp4' plugin now sets totaltracks, disc, totaldiscs, url, copyright, comment, composer, isrc fields.

In neroAacTag, "TOTALTRACKS" and "COMMENT" are standard meta field names, while "BAND" or "ALBUM ARTIST" would come from the "-meta-user:" command.
As for album artist, I didn't employ any of these as the standard because four different approach to set album artist for MP4 seem to exist at this moment: Tunes' "aART" atom; comment atom with "BAND"; comment atom with "ALBUMARTIST"; and comment atom with "ALBUM ARTIST". I can't force any of these as the standard, not being an MP4 user.

If you want to add "-meta-user:album artist=XXX" only when the target cuesheet is a compilation release, use -s (--setvar) option to set "output_option_tag" variable, which is referred to by any output plugins:
Code: [Select]
Z:\cdimage>cueenc -c "neromp4" -s "output_option_tag=#if{bool(track.get('COMPILATION'))}${quot}-meta-user:album artist=${ALBUMARTIST}${quot} ${quot}-meta-user:compilation=1${quot}#endif" VariousArtists\Now64\NOW64_disc1.cue
Note:
  • By default, COMPILATION variable is set to true automatically when a target cuesheet has multiple distinct PERFORMER names.
  • 'output_option_tag' track variable will be evaluated as a pattern template and passed to a tagging program.
  • ${quot} or $quot will be replaced with a double-quotation character "
The following is an example of 'extpipe' usage for neroaacencoder:
Code: [Select]
Z:\cdimage>cueenc -c extpipe -m "neroaacenc -if - -of $quot${output}.mp4$quot" -m "neroaactag $quot${output}.mp4$quot $quot-meta:title=${TITLE}$quot $quot-meta:artist=${ARTIST}$quot $quot-meta:album=${ALBUM}$quot" "BonniePink\EverySingleDay\disc1.cue"
You can define your command-line patterns to be invoked by CueProc.

 

Cuesheet Processor (CueProc)

Reply #22
Thanks for your work on this tool nyaochi.  For the most part it's helped me get around  some of the [a href='index.php?showtopic=48977']limitations I found with ACDIR[/a].  But in running it through its paces, I've come across some new issues.  I'm hoping you can shed some light on the situation.

My directory layout is pretty much the same as what you use in the CueProc example.  I.e. all images under one directory and all transcoded files under another.  So to transcode all FLAC images into MP3s I find all the FLACs
Code: [Select]
cueproc --find *.cue > cues.txt

and let CueProc do its thing
Code: [Select]
cueproc -c lame -p "-V2 --vbr-new" -d "..\Compressed\$cuesheet_path" -o "$TRACKNUMBER $ARTIST - $TITLE" --target=cues.txt

With the exception of a few minor tag issues (temporarily resolved with --ignore-tag-errors) the first pass ran through the 1000+ images without a hitch.  As CueProc's behaviour (like its predecessor) is to ignore existing files, I intended to run through the process again after adding one or more new images to the images directory.  This is, however, where the problem occurred.

Running through the process a second time, CueProc tripped up and stopped relatively early on giving me this error message:
Code: [Select]
CueProc: Albums01\Beastie Boys\Hello Nasty - Bonus Disc\Beastie Boys - Hello Nas
ty - Bonus Disc.cue [02/04]
WARNING: Traceback (most recent call last):
  File "cueproc.py", line 556, in <module>
  File "cueproc.py", line 352, in process
  File "cueproc.py", line 159, in warn
  File "encodings\cp437.pyc", line 12, in encode
UnicodeEncodeError: 'charmap' codec can't encode character u'\xb4' in position 1
13: character maps to <undefined>


I removed the offending image and all images processed up to that point from cues.txt, and started the process again.  A little later, it happened again.
Code: [Select]
CueProc: Albums01\Morcheeba\Charango\Morcheeba - Charango.cue [04/12]
WARNING: Traceback (most recent call last):
  File "cueproc.py", line 556, in <module>
  File "cueproc.py", line 352, in process
  File "cueproc.py", line 159, in warn
  File "encodings\cp437.pyc", line 12, in encode
UnicodeEncodeError: 'charmap' codec can't encode character u'\xe3' in position 8
2: character maps to <undefined>


Similar errors occurred a dozen or so times throughout the second pass.  Interestingly, all errors were for existing images which had already been transcoded in the first pass.  Examining the problem further, track 4 from "Morcheeba - Charango.cue" is
Code: [Select]
  TRACK 04 AUDIO
    TITLE "São Paulo"
    PERFORMER "Morcheeba"
    ISRC GBAHS0200047
    FLAGS DCP
    INDEX 01 11:16:30

The name of the file produced in the first pass is
Code: [Select]
M:\Music\Compressed\Albums01\Morcheeba\Charango>dir /b
[...]
04 Morcheeba - São Paulo.mp3


But Tag reports the track's details as
Code: [Select]
M:\Music\Compressed\Albums01\Morcheeba\Charango>tag "04 Morcheeba - São Paulo.mp3"
Tag - Automatic Tag from filename
Copyright (c) 2002-2003 Case.  Minor additions by Neil Popham, 2004-2005
Version 2.0.43, Compiled 2005-04-21

M:\Music\Compressed\Albums01\Morcheeba\Charango\04 Morcheeba - Sao Paulo.mp3
Format:  MPEG 1 Layer 3, Joint Stereo
Details: 44100 Hz Stereo, 204 kbps, playtime 04:29
Tags:    ID3v1, ID3v2
Title:   Sao Paulo
Artist:  Morcheeba
Album:   Charango
Year:    2002
Track:   4
Genre:   Trip-Hop
Comment:
Encoder=LAME v3.97


The "ã" in the track title has been replaced with an "a". Similar characters substitutions have occurred in the other cases.  E.g.
    • cue sheet: ü
    • file name: ü
    • Tag output: u
    • cue sheet: ³
    • file name: <blank>
    • Tag output: 3
    • cue sheet: Â
    • file name: Â
    • Tag output: A
    • cue sheet: ´
    • file name: ´
    • Tag output: '

Interestingly most other characters with diacritic marks seemed to have got through without issue.  E.g. ç and ô.  Does anyone know what might be causing this?  If you require any additional information, please let me know.

The other minor issue I've found is with genre ID3v2 tags.  After modifying the genre field in all the source .cue files to match an item in the "lame --genre-list" output (effectively working around a [a href='index.php?showtopic=34170']silly LAME ID3v2 genre tag issue[/a]), I still get errors like this
Code: [Select]
CueProc: Albums01\Angie Stone\Black Diamond\Angie Stone - Black Diamond.flac [09
/16]
getaudio --begin 30:35:03 --end 32:11:70 "M:\Music\Images\Albums01\Angie Stone\B
lack Diamond\Angie Stone - Black Diamond.flac" | lame --tt "Black Diamond & Blue
Pearls (Interlude)" --ta "Angie Stone" --tl "Black Diamond" --tn 09 --tg R&B --
ty 1999 --add-id3v2 -V2 --vbr-new - "..\Compressed\Albums01\Angie Stone\Black Di
amond\09 Angie Stone - Black Diamond & Blue Pearls (Interlude).mp3"
Unknown genre: 'R'.  Specify genre name or number
'B' is not recognized as an internal or external command,
operable program or batch file.

I've seen problems with the genres "R&B", "Folk/Rock" and "Pop/Funk".  At a guess I'd say the ampersand and forward slash characters are getting in the way.

On the positive side, messages just appear as warnings and don't kill processing.  On the negative side it means tags aren't being properly written to the transcoded files.  And seeing as it's not stopping processing, these characters in other fields may well be affecting other types of tags.

Finally, and possibly slightly off topic...

The MP3s produced by this process will almost exclusively be used with an iPod and iTunes. Through posts around HA and my own testing, it seems iTunes can't correctly group tracks from a various artist album using standard tags.  It requires the TPE2 "Album Artist" (a.k.a. "Band") tag to be present.

Despite the frame being part of the informal standard, LAME does not seem to support it.  Can anyone suggest a command line tool that will do the job as part of the CueProc transcode process?  So far the only solution I've seen is to do it all manually through a tool like Mp3tag, The GodFather, or even iTunes itself.  All help is greatly appreciated.

Cuesheet Processor (CueProc)

Reply #23
Thank you for the detail report of your problem. So sorry for my late reply. I simply forgot about this while I was focussing on other jobs.    I released CueProc 1.7 a few days ago.

Running through the process a second time, CueProc tripped up and stopped relatively early on giving me this error message:
Code: [Select]
CueProc: Albums01\Beastie Boys\Hello Nasty - Bonus Disc\Beastie Boys - Hello Nas
ty - Bonus Disc.cue [02/04]
WARNING: Traceback (most recent call last):
  File "cueproc.py", line 556, in <module>
  File "cueproc.py", line 352, in process
  File "cueproc.py", line 159, in warn
  File "encodings\cp437.pyc", line 12, in encode
UnicodeEncodeError: 'charmap' codec can't encode character u'\xb4' in position 1
13: character maps to <undefined>
CueProc assumes the character encoding for cuesheet as CP437 (DOS-US) in your environment. Please specify the character encoding for cuesheet manually by -w option. I'm not sure the correct character encoding for your case, but I guess something like ISO-8859-1. Encodings CP437 and ISO-8859-1 share the same characters for US-ASCII, but have different mappings for characters such as ü, Â, etc.

I removed the offending image and all images processed up to that point from cues.txt, and started the process again.  A little later, it happened again.
Code: [Select]
CueProc: Albums01\Morcheeba\Charango\Morcheeba - Charango.cue [04/12]
WARNING: Traceback (most recent call last):
  File "cueproc.py", line 556, in <module>
  File "cueproc.py", line 352, in process
  File "cueproc.py", line 159, in warn
  File "encodings\cp437.pyc", line 12, in encode
UnicodeEncodeError: 'charmap' codec can't encode character u'\xe3' in position 8
2: character maps to <undefined>
This is also because the wrong setting for the character encoding.

The other minor issue I've found is with genre ID3v2 tags.  After modifying the genre field in all the source .cue files to match an item in the "lame --genre-list" output (effectively working around a [a href='index.php?showtopic=34170']silly LAME ID3v2 genre tag issue[/a]), I still get errors like this
Code: [Select]
CueProc: Albums01\Angie Stone\Black Diamond\Angie Stone - Black Diamond.flac [09
/16]
getaudio --begin 30:35:03 --end 32:11:70 "M:\Music\Images\Albums01\Angie Stone\B
lack Diamond\Angie Stone - Black Diamond.flac" | lame --tt "Black Diamond & Blue
Pearls (Interlude)" --ta "Angie Stone" --tl "Black Diamond" --tn 09 --tg R&B --
ty 1999 --add-id3v2 -V2 --vbr-new - "..\Compressed\Albums01\Angie Stone\Black Di
amond\09 Angie Stone - Black Diamond & Blue Pearls (Interlude).mp3"
Unknown genre: 'R'.  Specify genre name or number
'B' is not recognized as an internal or external command,
operable program or batch file.
Oops, R&B should be quoted. I'll fix this.

The MP3s produced by this process will almost exclusively be used with an iPod and iTunes. Through posts around HA and my own testing, it seems iTunes can't correctly group tracks from a various artist album using standard tags.  It requires the TPE2 "Album Artist" (a.k.a. "Band") tag to be present.

Despite the frame being part of the informal standard, LAME does not seem to support it.  Can anyone suggest a command line tool that will do the job as part of the CueProc transcode process?  So far the only solution I've seen is to do it all manually through a tool like Mp3tag, The GodFather, or even iTunes itself.  All help is greatly appreciated.
I wrote two patches for LAME frontend last month.

Adding user-defined ID3v2.3 frame:
http://sourceforge.net/tracker/index.php?f...amp;atid=300290
Albumart (APIC ID3v2.3 frame) patch:
http://sourceforge.net/tracker/index.php?f...amp;atid=300290

Building a LAME binary with these patch enabled, you can use options like:
--tv "TPE2=Any Genre" (User-defined genre name)
--tv TCMP=1 (Compilation flag used by iTunes)
--ti cover.jpg (Writing an albumart image in APIC frame)

I'm going to change the command-line template that CueProc uses for LAME once these patches are integrated in the official release. But I can't employ these options for CueProc at this stage.

Cuesheet Processor (CueProc)

Reply #24
Thank you for the detail report of your problem. So sorry for my late reply. I simply forgot about this while I was focussing on other jobs.    I released CueProc 1.7 a few days ago.

Thank you for the time and effort spent on developing this application.  I can't stress enough how much I appreciate your work.  I'll run 1.7 against my problematic files and report back on how it went.
Adding user-defined ID3v2.3 frame:
http://sourceforge.net/tracker/index.php?f...amp;atid=300290
Albumart (APIC ID3v2.3 frame) patch:
http://sourceforge.net/tracker/index.php?f...amp;atid=300290

Building a LAME binary with these patch enabled, you can use options like:
--tv "TPE2=Any Genre" (User-defined genre name)
--tv TCMP=1 (Compilation flag used by iTunes)
--ti cover.jpg (Writing an albumart image in APIC frame)

I'm going to change the command-line template that CueProc uses for LAME once these patches are integrated in the official release. But I can't employ these options for CueProc at this stage.

Your coverart, TPE2 and TCMP tag option extensions to LAME are exactly what I'm looking for.  I don't possess the tools or knowledge to build LAME for myself but, if you do, and you're looking for someone to test it along side the planned CueProc template changes, I'd be more than happy to do some testing.