Support for ALAC?

Since Apple lossless is open source, any chance that Audacity could support it?

I record in AIFF and would like to save it in an Apple friendly format. I can export to WAV and iTunes will import it, but it loses all the tags for some reason. If I convert that to AIFF or ALAC and import it, iTunes gets the tags.

Sorry I am not a programmer, but if you could include ALAC (or AIFF) as an export option, us Mac users would be grateful. Thanks.

On my Mac, Audacity (ver 2.4.2) has the “AIFF (Apple) signed 16-bit PCM” export option.
I’m almost sure later versions have it as well.

I’m on Windows and I have the optional FFmpeg Import/Export library installed.

After selecting Custom FFmpeg Export, I see an “alac” Codec export option and when I select it, four “Format” options are showing. The 1st couple options didn’t seem to work correctly but when I selected “mov” as the format It LOOKS like it’s working. I can save the file and then re-open it. MediaInfo says it’s MPEG-4/Quicktime/ALAC.

I can re-open the file and I can also open an ALAC file that I converted to ALAC with TAudioConverter.

…The rumor is that the Audacity version of FFmpeg will be updated soon.

Will you please provide a screen shot?

I am on 3.1.3, recently upgrading from 2.4.2. My export options are MP3, WAV and a ‘Export Audio’.

When I try to bulk process files, the options I see are Export as FLAC, MP3, OGG, WAV and something called ‘Export2’ which has a .wav extension.
Screen Shot 2022-06-15 at 11.42.22 AM.png
Screen Shot 2022-06-15 at 11.44.34 AM.png

As requested…

As can be seen, I normally use MP3 as that is what most of my clients request,
but the AIFF option is available.

Thanks for that.

In mine, that is a bit different (see below). That is helpful.

Now, how the heck do I create a Macro with that output? I am studying the manual. There is not a preset command to export as AIFF. And I don’t see any way to add a Command or record a Macro from my actions.

It looks like this is covered in the enhancement requests page.
Screen Shot 2022-06-15 at 5.15.03 PM.jpg

I don’t know macros that well.
Perhaps @Steve will have some ideas.

Audacity has built in support for macros to export as WAV, FLAC, MP3, and OGG only.
It’s unfortunate that in 2022 Apple still does not support FLAC, as FLAC is lossless, free for anyone to use, and has excellent metadata support.

Probably the easiest workaround would be to export as FLAC and then use a third part app to convert to an Apple format.

It “may” be possible to write a Nyquist plug-in to provide a “ExportAIFF:” command, though off the top of my head I’m not sure if it could be made to behave the same way as the built-in exporters. I’m guessing that a Nyquist plug-in could look up the Macros output directory from audacity.cfg using “GetPreference:” and then use Nyquist’s S-SAVE command to write the file.

I’ve checked this out, and there’s good news and bad.
Yes it is possible to write a Nyquist plug-in to provide a “ExportAIFF:” command, but metadata is not supported.

(Other (minor) limitation is that it exports the selected audio from one track only, but these issues could easily be worked around using existing macro commands.)

For anyone that’s interested, this is the basic code for a Nyquist AIFF exporter plug-in:

;type process

;; Does not support metadata
;; Exports the selected audio from one track only
;; "macro-output" folder must exist (else error)

(defun export ()
  (let ((dir (aud-do-command "GetPreference" :name "Directories/MacrosOut/Default" ))
        (fname (get '*project* 'name)))
    (setf dir (first dir))
    (when (string= fname "")
      (setf fname "untitled"))
    (setf dir (format nil "~a~amacro-output~a"
                      dir *file-separator* *file-separator*))
    (setf fname (format nil "~a~a.aiff" dir fname))
    (when (not-writeable fname)
      (throw 'err (format nil "~s~%is not writeable.~%~
                              Check that it exists and is writeable."
    (s-save *track* ny:all fname :format snd-head-AIFF))

(defun not-writeable (fname)
  (let ((fp (open fname :direction :output)))
    (when fp
      (close fp)
      (return-from not-writeable nil)))

(catch 'err (export))