Audio-Konvertierung unter macOS

Unter macOS war ich vor einigen Tagen auf der Suche nach einer Anwendung, mit welcher Audiodateien, schnell in andere Formate konvertiert werden können. Fündig geworden bin ich schließlich bei Tunesify.

Tunesify nach der Konvertierung

Mithilfe von Tunesify können Musikdateien im Batchmodus in ein gewünschtes Format exportiert werden. Die gewünschten Kodierungseinstellungen können über die Einstellungen angepasst werden.

‎Tunesify
Preis: 0,99 €+

Weitere Informationen über Tunesify sind unter anderem auf der offiziellen Seite zu finden.

Langsamer Transfer von Medien von iOS zu macOS

Wer ein neueres iOS-Gerät nutzt und von diesem, mittels der macOS-App Digitale Bilder, Bilder auf den Mac herunterlädt wird feststellen, das dieser Prozess eine Weile dauert. Im Gegensatz zum Transfer von älteren iOS-Geräten ist der Transfer objektiv gesehen wirklich langsamer. Hintergrund hierfür ist eine Konvertierung, welche von der App vorgenommen wird.

Die Option Originale behalten sorgt für einen schnelleren Transfer

Vorgenommen wird die Konvertierung, weil die neueren iOS-Geräte die Bilder und Videos im High Efficiency Image File Format kurz HEIF speichern und diese während des Transfers in gewöhnliche JPEG- und MOV-Dateien konvertiert werden. Um dies zu vermeiden, kann in der Digitale Bilder-App die Option Originale behalten aktiviert werden. Damit werden die Medien ohne Konvertierung direkt auf den Mac übertragen. Die macOS eigene App Photos kommt problemlos mit diesen Dateien zurecht. Auf Wunsch können die Dateien mittels Photos wieder in gebräuchlichere Formate konvertiert werden.

Logic Pro X-Projekte in GarageBand für iOS öffnen

GarageBand und Logic Pro X sind zwei Digital Audio Workstations von Apple. Während sich GarageBand mehr an Einsteiger richtet, ist Logic Pro X für professionelle Produktionen gedacht. GarageBand-Projekte können problemlos von Logic Pro X geöffnet werden. Umgekehrt sieht dies anders aus. Beim Öffnen von GarageBand-Projekten in Logic Pro X, werden diese konvertiert. Nach der Konvertierung lassen sich die Projekte nicht mehr in GarageBand öffnen.

Logic Pro X

Allerdings gibt es durchaus eine Möglichkeit Logic Pro X-Projekte in GarageBand für iOS zu nutzen. Dazu muss das Projekt in Logic Pro X geöffnet werden und anschließend im Menü Ablage der Punkt Teilen ausgewählt werden. Dort findet sich der Menüpunkt Projekt für GarageBand für iOS. Nachdem der Menüpunkt ausgewählt wurde, kann das Projekt exportiert werden. Leider werden MIDI- und Instrumenten-Spuren hierbei in Audio konvertiert, welches sich anschließend nicht mehr entsprechend bearbeiten lässt.

Daten unter Java in ein Byte-Array umwandeln

Für ein Projekt wollte ich eine Liste von long-Werten unter Java in ein einzelnes Byte-Array umwandeln. Dafür kann unter Java die Klasse ByteBuffer genutzt werden. In diesem Beispiel wird eine Liste namens dataStream definiert:

List dataStream = new ArrayList<>();

In dieser Liste befinden sich eine unbestimmte Anzahl von Werten. Mit der Klasse ByteBuffer kann diese Liste bzw. die Werte in der Liste in ein Byte-Array überführt werden:

ByteBuffer byteBuffer = ByteBuffer.allocate(dataStream.size() * 8);

for(long value: dataStream) {
	byteBuffer.putLong(value);
}

byte[] array = byteBuffer.array();

Im ersten Schritt wird der ByteBuffer mit einer Kapazität angelegt, welcher der Größe der long-Werte in Byte entspricht. Anschließend werden die long-Werte in den ByteBuffer geschrieben. Ist dies geschehen kann ein Byte-Array aus dem ByteBuffer erstellt werden. Damit ist die Umwandlung abgeschlossen.

Konvertierungen zwischen alter und neuer Datums- und Zeit-API

Seit Java 8 verfügt die Programmiersprache über eine sinnvolle Datums- und Zeit-API. In den meisten Fällen kann diese API ohne weitere Probleme genutzt werden. Problematisch wird es nur, wenn die neue API im Zusammenhang mit Legacy-Code genutzt werden soll. Meist wird dort die Klasse Date aus dem Package java.util genutzt. Damit werden Methoden benötigt, um eine Brücke von der alten zur neuen API und umgekehrt zu schlagen. Um ein Date in eine LocalDateTime umzuwandeln, kann folgende Methode genutzt werden:

public static LocalDateTime convertToLocalDateTime(Date date) {
    return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}

Soll der Wert, welcher in der LocalDateTime gespeichert ist, wieder in ein Date-Objekt konvertiert werden, kann folgende Methode genutzt werden:

public static Date convertToDate(LocalDateTime localDateTime) {
    return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}

Bei diesen Konvertierungsmethoden ist zu beachten, dass die Zeitzonen bei der Konvertierung ignoriert werden. Stattdessen wird die Konvertierung mit der Standardzeitzone des Systems durchgeführt. Für die Konvertierung unter Berücksichtigung und Speicherung der Zeitzonen kann die Klasse ZonedDateTime genutzt werden. Die entsprechenden Methoden zur Konvertierung wären folgende:

public static ZonedDateTime convertToZonedDateTime(Date date, ZoneId zoneId) {
    return date.toInstant().atZone(zoneId);
}

public static Date convertToDate(ZonedDateTime zonedDateTime) {
    return Date.from(zonedDateTime.toInstant());
}

Bei der Konvertierung einer Date-Instanz in eine ZoneDateTime muss die entsprechende Zeitzone als ZoneId mitgegeben werden.