musescore / musescore/MuseScore

Add Color Management / ICC Profile Functionality to PDF Export

Open
#30,797 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

community needs design
Dominant language
C++
Stars
15.1k
Forks
3.3k
Avg merge
2d 2h
Merged PRs (30d)
91

Description

Your idea

Add Color Management / ICC Profile Functionality to PDF Export for printing destination as opposed to on-screen/web destination!

What's the point?

The main point of this is to make it easier/faster/better/cheaper for designers to produce professional quality prints, both at home, at work, and through commercial print and publication houses, and at all skill levels. All the deets are below in the "Problem to be solved" section.

Is this possible?

Yes! Since 6.8, Qt has the QPdfWriter Class which supports RGB, CMYK, Grayscale or Auto, and with QPdfOutputIntent you set the ICC profile.

Additional Options That Come to Mind

"Treat Black as Spot Color"

This is an option for very special cases. A "Spot Color" is a special swatch that designates a color plate or cartridge separate from CMYK.

Example: Suppose someone wants to print their score in metallic ink. Creating a spot color tells the printer "treat this as a separate plate from CMYK." This is how the Pantone Matching System works. While there is no need for MuseScore to engage with Pantone, designating a spot color creates the possibility for a designer to do so when the PDF is placed into a desktop publishing layout.

"Treat Black as Rich Black"

"I thought we just said we want to get away from Rich Black?"

Yeah, yeah, I know, but like I said there are special-use cases where it's desirable. The point in this option would be to match the Rich Black to the gamut of the intended output destination. The difference between this and sRGB Profile is the gamut will match print rather than on-screen display.

Select more than one ICC Profile

Instead of a radio button allowing only one PDF to be exported, a list of check-mark boxes could give the user the option to export multiple PDFs, each with their own ICC profile, to make things quicker, in much the same way as when you print all parts to a score.

Problem to be solved

What's your problem, buddy?

Currently, exported PDFs are in RGB mode. Black figures are assigned values of:

  • 0% Red
  • 0% Blue
  • 0% Green
Image

This is great as a default profile and should not change. For sharing scores on the web and viewing on computer screens, it's the most versatile... but when this monochrome document is destined for print, it suddenly presents issues. If we examine the document's color values when preparing a color print job, here's what comes out when using U.S. Web Coated (SWOP) v2 ICC Profile as an example:

  • 75% Process Cyan
  • 68% Process Magenta
  • 67% Process Yellow
  • 90% Process Black
Image
Why does this happen?

The computer is attempting to interpret the complete lack of light and convert it into complete darkness. To achieve this, it overlaps all 4 inks. This produces what's known as "Rich Black," but this is only desired for select cases, such as posters, photos, etc. While great for that, it's usually bad news for sharp monochromatic elements like text, technical vector illustrations or music notation.

Additionally, RGB mode's gamut mismatches CMYK gamut, so on the rare chance there are color elements in your MuseScore document, they must be converted anyway otherwise Nicki won't be pretty as a rainbow.

Here's what's needed for typical music scores. "Matte Black." Its mixture looks like this:

0% Process Cyan
0% Process Magenta
0% Process Yellow
100% Process Black

Here's what it looks like when simulated on a computer screen after I converted the color space in Acrobat Pro:

Image

Notice the "black" looks more like a dark gray. This is because Acrobat is attempting to recreate the accurate gamut available through using a single ink. It's not as dark when using process inks. However, when a dedicated monochromatic ink or toner is used, it will be as dark the everlasting void in my soul from my last break-up. 🖤

Given the typical monochromatic nature of sheet music, RGB is a weird default position to place users into when printing. Common, but weird. Home printers will compensate by having toggles like "Print colors as black," but that's an extra step and commonly leads to errors.

What are the downsides of this?

Cost. Anyone who's used a color printer before will lament about the cost of ink cartridges these days. Using all four colors to produce simple black & white sheet music on plain paper is silly and wasteful.

Stress. How many times have you forgotten to hit that little "Print colors as black" button? Educators, home enthusiasts, small production studios.. collectively, it could be well appreciated by these people. If you've got a classroom of unruly students waiting for you to come out with their parts, well, such a feature could be less stress-relieving tobacco puffs during your break.

Quality. There's also a technical downside. If your printheads aren't perfectly aligned (registration), printing black with 4 inks can create muddy edges (i.e.: "ghosting").

Image (Credit to AC Computer Graphics)
Prior art

No response

Additional context

Use Cases for CMYK Color Space

Independent Users

Anyone from the elementary student creating compositions to their grandma. Educators, band leaders, you name it. Every drop in the bucket counts.

Imagine you're a school band director looking for scores on MuseScore.com. You find the score you're looking for and download the document. The file is naturally in RGB. You try it out and think it'll go great in the upcoming concert. The art dept has a color copier with a service contract. Each color copy gets tallied at a rate higher than black & white does, so you want to make sure it's done monochrome. There are 20 parts for the band, about 3-4 pages each and you have to export and print them all. The first rehearsal is tomorrow morning, so sending this over your school laptop on a VPN would mean you can just pick up the job tomorrow instead of showing up an hour or two earlier. You send the job on your account ID, but just to make sure nothing goes wrong, you can export all 20+ documents as Grayscale and send them to the spooler queue. No need to convert to black & white through the print driver. You now have the peace of mind you're not going to accidentally run up the budget by accidentally printing as color.

Professional Desktop Publishers

Let's say you're making a 200-page fakebook of top-40 tunes that will be published with an ISBN and sold at music stores, and it's made of a bunch of individual MuseScore Studio score files.

Virtually the entire book will be monochrome (B&W), so you hire a company with a traditional offset printer because it's way cheaper than a digital printer who specializes in small-run color print jobs. It's a run of 10,000 copies on a web press, acid-free plain paper, sliced and collated, bound, etc.

It's your job to make sure the document you provide is "photo-ready art." Every page with black-only is saving you money because it's only one plate. Every page with multiple colors needs 4 separation plates? Kinda becoming clear the problem yeah? If your documents are all RGB, you have to convert all the black-and-white pages into black. If you are printing on an offset lithographic press, each of the four colors requires separation plates to be created, either by traditional computer-to-photo or computer-to-plate imagesetting.

The cost difference is astronomical.

Margin for error is low. You might get a set of proofs, but that of course requires an initial setup cost. If you give your commercial printing company files with mixed color spaces, mistakes will be found, and you will be charged extra if they're extensive. They can do it for you in Onyx RIP or something, it's still additional expenses. Oh, and there's a deadline to get the publication out so now you're cramming to get this done, and the client is asking what the hold-up is.

It's better to just give them the right stuff out of the box.

Why go through that hassle when you can just export it correctly in the first place? If your aim is to market MuseScore Studio at large Hal Leonard-type clients (yes I know you guys own them now but that's beside the point), such a simple feature as specifying color space / destination in MuseScore is invaluable!

Superfluous Nerdcore Info

SWOP stands for "Specifications for Web Offset Publications." Think of a traditional offset lithographic press. Minor variations on this profile are used for coated, uncoated, and sheetfed presses, but the concept remains the same. Each color is separated into its own lithographic plate for the printer.

As digital printing became prominent, the name stuck. The color values are simply handled digitally. This is true also for home inkjet color printers. Translation of these values are managed through device-specific color processing during RIP. They vary from device to device, interpreted either through Adobe PostScript, GhostScript or proprietary language interpreters like PCL.

In a nutshell

A feature added to MuseScore's PDF Export function would be a time and cost-saving feature that would be valuable for end-users of all types! Qt is capable of supporting it. Appease the Tantacrul lurking deep within us all and make this feature a reality!

Checklist
  • This request follows the guidelines for reporting issues
  • I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue points to Qt's QPdfWriter and QPdfOutputIntent as the starting entry points; read those APIs first. Define the supported export options and how ICC profiles, grayscale/CMYK, and black handling should be selected, then verify exported PDFs against the requested print workflows.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.